%A Abdou, I.E.
%A Wong, K.Y.
%D 1982
%T Analysis of linear interpolation schemes for bi-level image applications
%J IBM J Research and Development
%V 26
%P 667-680

%A Abell, R.
%D 1981
%T Implementation of a Telidon system using Unix file structures
%B The Telidon book
%E D.Godfrey and E.Chang
%I Press Porcepic
%C Toronto, ON
%P 203-209

%A Abut, H.
%A Gray, R.M.
%A Rebolledo, V.
%D 1982
%T Vector quantization of speech and speech-like waveforms
%J IEEE Trans Acoustics, Speech and Signal Processing
%V Acoustics, Speech, and Signal Processing -30
%N 3
%P 423-435 
%O June
%K *

%A Achugbue, J.O.
%D 1981
%T On the line breaking problem in text formatting
%J SIGOA Newsletter (Proc ACM Symposium on Text manipulation, Portland, Oregon)
%V 2
%N 1/2
%P 117-121
%O Spring/Summer

%A Adams, D.N.
%D 1979
%T The hitchhiker's guide to the galaxy
%I Pan
%C London, England

%A Adams, J.B.
%D 1976
%T A probability model of medical reasoning and the MYCIN model
%J Mathematical Biosciences
%V 32
%P 177-186

%A Aho, A.V.
%A Corasick, M.J.
%D 1975
%T Efficient string matching: an aid to bibliographic search
%J Comm ACM
%V 18
%N 6
%P 333-340
%O June

%A Aikins, J.S.
%D 1983
%T Prototypical knowledge for expert systems
%J Artificial Intelligence
%V 20
%N 2
%P 163-210
%O February
%K *

%A Akers, G.
%A Lennig, M.
%D 1984
%T Intonation in text-to-speech synthesis: evaluation of algorithms
%R Report
%I Bell-Northern Research
%C Verdun, QUE 
%K *

%A Allebach, J.P.
%A Liu, B.
%D 1976
%T Analysis of halftone dot profile and aliasing in the discrete binary representation of images
%J Optical Society of America
%V 67
%N 9
%K *

%A Allen, B.P.
%A Wright, J.M.
%D 1983
%T Integrating logic programs and schemata
%J Proc 8th International Joint Conference on Artificial Intelligence
%P 340-342

%A Allen, E.M.
%D 1983
%T YAPS: yet another production system
%R Report TR-1146
%I Maryland Artificial Intelligence Group, Computer Science Department, University of Maryland
%C Maryland, MD
%O December
%K *

%A Allen, J.F.
%A Perrault, C.R.
%D 1980
%T Analyzing intention in utterances
%J Artificial Intelligence
%V 15
%P 143-178
%K *

%A Allen, J.F.
%D 1984
%T Towards a general theory of action and time
%J Artificial Intelligence
%V 23
%P 123-154
%K *

%A Almes, G.T.
%A Black, A.P.
%A Lazowska, E.L.
%A Noe, J.D.
%D 1985
%T The Eden system: a technical review
%J IEEE Trans Software Engineering
%V SE-11
%N 1
%P 43-59
%O January
%K *

%A Alvey, P.
%D 1983
%T The problems of designing a medical expert system
%J Proc Expert Systems 83
%I Churchill College
%C Cambridge, England
%P 30-42
%O December
%K *

%A Anderberg, M.R.
%D 1973
%T Cluster analysis for applications
%I Academic Press
%C New York, NY

%A Anderson, D.P.
%A Hedin, R.C.
%D 1982
%T Voice input/output module
%J Voice Data Entry Systems Application Conference '82
%C San Mateo, CA
%O September 21
%K *

%A Anderson, J.R.
%T Knowledge compilation: the general learning mechanism
%K *

%A Anderson, J.R.
%A Reiser, B.J.
%D 1985
%T The LISP tutor
%J Byte
%V 10
%N 4
%P 159-175
%O April

%A Andreae, J.H.
%D 1984
%T Numbers in the head
%R Man-Machine Studies Progress Report UC-DSE/24
%P 5-28
%I Department of Electrical Engineering, University of Canterbury
%C New Zealand

%A Andreae, P.M.
%D 1984
%T Constraint limited generalization: acquiring procedures from examples
%J Proc American Association on Artificial Intelligence
%C Austin, TX
%O August
%K *

%A Andreae, P.M.
%D 1984
%T Justified generalization: acquiring procedures from examples
%R PhD Thesis
%I Department of Electrical Engineering and Computer Science, MIT

%A Andreae, P.M.
%D 1986
%T Justified generalization
%J Proc International Conference on Future Advances in Computing
%C Christchurch, New Zealand
%O February 17-21
%K *

%A Andreka, H.
%A Nemeti, I.
%A Sain, I.
%D 1982
%T A complete logic for reasoning about programs via nonstandard model theory I
%J Theoretical Computer Science
%V 17
%P 193-212
%K *

%A Andreka, H.
%A Nemeti, I.
%A Sain, I.
%D 1982
%T A complete logic for reasoning about programs via nonstandard model theory II
%J Theoretical Computer Science
%V 17
%P 259-278
%K *

%A Andrew, A.M.
%D 1981
%T Autopoiesis \(em allopoiesis interplay
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 157-166

%A Anon
%D 1972
%T Holography and computer generated holograms
%I Mills and Boom
%C London, England
%K *

%A ANSI
%D 1983
%T Videotex/Teletext presentation level protocol syntax (Draft)
%I American National Standards Committee X3 -- Information Processing Systems, Technical Committee X3L2 -- Codes and character sets
%C New York, NY
%O June

%A Anson, E.
%D 1982
%T The device model of interaction
%J Computer Graphics
%V 16
%N 2
%P 107-114
%O July
%K *

%A Aoki, M.
%D 1965
%T Optimal control of partially observable markovian systems
%J J Franklin Institute
%V 280
%N 5
%O November
%K *

%A Ascher, R.N.
%A Nagy, G.
%D 1974
%T A means for achieving a high degree of compaction on scan-digitized printed text
%J IEEE Trans Computers
%V C-23
%N 11
%P 1174-1179
%O November
%K *

%A Ash, W.L.
%D 1981
%T MXEC: parallel processing with an advanced macro facility
%J Comm ACM
%V 24
%N 8
%P 502-509
%K *

%A Ashby, W.R.
%D 1960
%T Design for a brain: the origin of adaptive behavior
%I Wiley
%C New York, NY
%O (second edition)

%A Askwall, S.
%D 1985
%T Computer supported reading vs reading text on paper: a comparison of two reading situations
%J IJMMS
%V 22
%N 4
%P 425-439
%O April

%A Atkinson, H.H.
%A Gargantini, I.
%A Ramanath, M.V.S.
%D 1984
%T Determination of the 3D border by repeated elimination of internal surfaces
%J Computing
%V 32
%P 279-295
%K *

%A Attardi, G.
%A Simi, M.
%D 1982
%T Semantics of inheritance and attributions in the description system Omega
%R AI Memo 642
%I MIT Artificial Intelligence Laboratory
%O January
%K *

%A Axelrod, R.
%D 1984
%T The evolution of cooperation
%I Basic Books
%C New York, NY

%A Backer, D.
%A Gano, S.
%D 1982
%T Dynamically alterable videodisk displays
%J Proc Graphics Interface 82
%C Toronto, ON
%P 365-
%O May 17-21

%A Baecker, R.
%A Marcus, A.
%D 1983
%T On enhancing the interface to the source code of computer programs
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 251-255
%C Boston, MA
%O December 12-15
%K *

%A Bailey, D.
%D 1985
%T University of Salford Lisp/Prolog system
%J Software -- Practice and Experience
%V 15
%N 6
%P 595-609
%O June
%K *

%A Ball, G.H.
%A Hall, D.J.
%D 1965
%T ISODATA, a novel method of data analysis and pattern classification
%R Report AD 699616
%I Stanford Research Institute
%C Stanford, CA

%A Bandyopadhyay, S.
%A Hughes, J.G.
%A Smith, F.J.
%A Sen, K.
%T A generalized scientific information system
%R Report
%I Computer Science Department, Queen's University of Belfast
%C Belfast, Northern Ireland
%K *

%A Barber, G.R.
%D 1981
%T Record of the workshop on research in office semantics
%R AI Memo 620
%I MIT
%O February
%K *

%A Barber, G.R.
%D 1982
%T Office semantics
%R PhD Thesis
%I MIT
%O February

%A Barber, G.R.
%D 1983
%T Supporting organizational problem solving with a workstation
%J ACM Trans Office Information Systems
%V 1
%N 1
%P 45-67
%O January
%K *

%A Barber, G.R.
%A de\|Jong, P.S.
%A Hewitt, C.
%D 1983
%T Semantic support for work in organizations
%R AI Memo 719
%I MIT Artificial Intelligence Laboratory
%O April
%K *

%A Barnett, J.A.
%D 1981
%T Computational methods for a mathematical theory of evidence
%J Proc 7th International Joint Conference on Artificial Intelligence
%P 868-875
%C Vancouver, BC
%O August

%A Barrow, H.G.
%D 1979
%T Artificial intelligence: state of the art
%R Technical Note 198
%I SRI International
%C Menlo Park, CA
%O October

%A Barsky, B.A.
%A Beatty, J.C.
%D 1982
%T Varying the betas in beta-splines
%R Report CS-82-49
%I University of Waterloo
%O December
%K *

%A Barwise, J.
%A Perry, J.
%D 1983
%T Situations and attitudes
%I MIT Press
%C Cambridge, MA

%A Barwise, J.
%D 1985
%T The situation in logic II: conditionals and conditional information
%R Report CSLI-85-21
%I Center for the study of language and information, Stanford University
%C Stanford, CA
%O January
%K *

%A Bates, E.
%D 1979
%T The emergence of symbols
%I Academic Press

%A Beer, S.
%D 1980
%R Preface to \fIAutopoiesis and cognition\fR (Maturana and Varela, 1980)

%A Bell, T.C.
%D 1985
%T Better OPM/L text compression
%R Internal Report
%I Computer Science Department, University of Canterbury
%C Christchurch, New Zealand
%K *

%A Bell, T.C.
%A Moffat, A.M.
%D 1986
%T A note on the DMC data compression scheme
%R Internal Report
%I Computer Science Department, University of Canterbury
%C Christchurch, New Zealand

%A Bell, T.C.
%D 1986
%T An introduction to text compression
%R Internal Report
%I Computer Science Department, University of Canterbury
%C Christchurch, New Zealand

%A Bellanger, M.G.
%A Daguet, J.L.
%A Lepagnol, G.P.
%D 1974
%T Interpolation, extrapolation, and reduction of computation speed in digital filters
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-22
%N 4
%P 231-235
%O August
%K *

%A Benest, I.D.
%A Jones, G.
%D 1982
%T Computer emulation of books
%J Proc IEE Conference Man-Machine Systems
%P 267-271
%C Manchester, England
%O July

%A Benest, I.D.
%A Potok, M.H.N.
%D 1984
%T Wayfinding: an approach using signposting techniques
%J Behaviour and Information Technology
%V 3
%N 2
%P 99-107
%K *

%A Bentley, J.L.
%A Friedman, J.H.
%D 1979
%T Data structures for range searching
%J Computing Surveys
%V 11
%N 4
%P 397-409
%O December
%K *

%A Bentley, J.L.
%D 1980
%T Multidimensional divide-and-conquer
%J Comm ACM
%V 23
%N 4
%P 214-229
%K *

%A Bentley, J.L.
%A Sleator, D.D.
%A Tarjan, R.E.
%A Wei, V.K.
%D 1986
%T A locally adaptive data compression scheme
%J Comm ACM
%V 29
%N 4
%P 320-330
%O April

%A Berglund, E.J.
%A Cheriton, D.R.
%T Amaze -- A distributed multi-player game program using the Distributed V Kernel
%K *

%A Bewley, W.L.
%A Roberts, T.L.
%A Schroit, D.
%A Verplank, W.L.
%D 1983
%T Human factors testing in the design of Xerox's 8010 `Star' office workstation
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 72-77
%C Boston, MA
%O December 12-15
%K *

%A Bezdek, J.C.
%D 1980
%T A convergence theorem for the fuzzy ISODATA clustering algorithms
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-2
%N 1
%P 1-8
%O January
%K *

%A Bibel, W.
%D 1983
%T Matings in matrices
%J Comm ACM
%V 26
%N 11
%P 844-852
%O November
%K *

%A Biederman, I. 
%D 1985
%T Human image understanding: recent research and a theory
%J Computer Vision, Graphics, and Image Processing
%V 32
%N 1
%P 29-73
%O October.

%A Bigelow, C.
%A Day, D.
%D 1983
%T Digital typography
%J Scientific American
%V 249
%N 2
%P 106-119
%O August
%K *

%A Bigelow, C.
%D 1984
%T Principles of font design for the personal workstation
%R Research Report
%I Stanford University
%K *

%A Bigelow, C.
%D 1986
%T Notes on typeface protection
%K *

%A Birkhoff, G.
%D 1967
%T Lattice theory
%I American Mathematical Society
%C Providence, RI

%A Birrell, A.D.
%A Levin, R.
%A Needham R.M.
%A Schroeder, M.D.
%D 1982
%T Grapevine: an exercise in distributed computing
%J Comm ACM
%V 25
%N 4
%P 260-274
%O April
%K *

%A Birtwistle, G.M.
%A Dahl, O.J.
%A Myhrhaug, B.
%A Nygaard, K.
%D 1973
%T Simula Begin
%I Auerbach
%C Philadelphia, PA

%A Birtwistle, G.
%A Cleary, J.G.
%A Joyce, J.
%A Liblong, B.
%A Unger, B.W.
%A Witten, I.H.
%A Wyvill, B.L.M.
%D 1984
%T A simulation environment
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 290-296
%O May
%K KConference

%A Blakeslee, T.R.
%D 1980
%T The right brain
%I MacMillan
%C London, England

%A Bobrow, D.G.
%D 1985
%T If Prolog is the answer, what is the question? or What it takes to support AI programming paradigms
%J IEEE Trans Software Engineering
%V SE-11
%N 11
%P 1401-1408
%O November
%K *

%A Boehm-Davis, D.A.
%A Fregly, A.M.
%D 1983
%T Documentation of concurrent programs
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 256-261
%C Boston, MA
%O December 12-15
%K *

%A Bonham, M.
%A Witten, I.H.
%D 1984
%T Towards distributed document preparation with interactive and noninteractive viewing
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 365-372
%O May
%K KConference

%A Bonham, M.
%A Witten, I.H.
%D 1985
%T Towards distributed document preparation with interactive and noninteractive viewing
%J Infor
%V 23
%N 4
%P 365-388
%O November
%K KJournal

%A Bonham, M.
%A Witten, I.H.
%D 1985
%T More on `A large font virtual terminal interface: a software prosthesis for the visually impaired'
%J Comm ACM
%V 28
%N 11
%P 1236-1237
%O November
%K KCorrespondence

%A Bonham, M.
%A Witten, I.H.
%D 1985
%T Shape \(em a unifying concept in document layout
%J Proc PROTEXT II -- Second International Conference on Text Processing Systems
%I Boole Press
%C Dublin, Ireland
%P 126-132
%O October
%K KConference

%A Bonner, S.
%A Shin, K.
%D 1982
%T A comparative study of robot languages
%J IEEE Computer
%V 15
%N 12
%P 82-96

%A Boose, J.H.
%D 1986
%T Rapid acquisition and combination of knowledge from multiple experts in the same domain
%J Proc International Conference on Future Advances in Computing
%C Christchurch, New Zealand
%O February 17-21
%K *

%A Booth, T.L.
%D 1984
%T Computer education
%J IEEE Computer
%V 17
%N 10
%P 57-68
%O October
%K *

%A Borning, A.
%D 1981
%T The programming language aspects of ThingLab, a constraint-oriented simulation laboratory
%J ACM Trans Programming Languages and Systems
%V 3
%N 4
%P 353-387
%O October
%K *

%A Bouachache, B.
%D 1983
%T Wigner analysis of time-varying signals
%B Signal processing II: Theories and applications
%E H.W.Schussler
%I Elsevier Science Publishers B.V. (North Holland)
%P 703-706
%K *

%A Bouachache, B.
%A Rodriguez, F.
%D 1984
%T Recognition of time-varying signals in the time-frequency domain by means of the Wigner distribution
%J Proc International Circuits and Systems Symposium
%K *

%A Bouachache, B.
%A Whitehouse, H.J.
%D 1985
%T Seismic applications of the Wigner-Ville distribution
%J Proc International Circuits and Systems Symposium
%C San Jose, CA
%O May 5
%K *

%A Boulton, P.I.P.
%A Lee, E.S.
%D 1983
%T The performance of Hubnet
%J Proc International Electrical, Electronics Conference
%V 2
%P 450-453
%C Toronto, ON
%O September 26-28
%K *

%A Bower, G.H.
%A Black, J.B.
%D 1979
%T Scripts in memory for text
%J Cognitive Psychology
%V 11
%P 177-220
%K *

%A Brachman, R.J.
%D 1983
%T What IS-A is and isn't: an analysis of taxonomic links in semantic networks
%J IEEE Computer
%V 16
%N 10
%P 30-36
%O October
%K *

%A Brachman, R.J.
%A Schmolze, J.G.
%D 1985
%T An overview of the KL-ONE knowledge representation scheme
%J Cognitive Science
%V 9
%N ii
%P 171-216
%K *

%A Bramer, M.A.\0(Editor)
%D 1985
%T Research and development in expert systems
%I Cambridge University Press
%C Cambridge, England
%O (Proc 4th Conference of BCS Group on Expert Systems, December 1984)

%A Bramwell, B.
%D 1984
%T Browsing around a manual
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 438-442
%O May
%K *

%A Britton, B.K.
%A Black, J.B.\0(Editors)
%D 1985
%T Understanding expository text: a theoretical and practical handbook for analyzing explanatory text
%I Erlbaum
%C Hillsdale, NJ

%A Brown, K.Q.
%D 1979
%T Voroni diagrams from convex hulls
%J Information Processing Letters
%V 9
%N 5
%P 223-228
%O December
%K *

%A Brown, P.J.
%D 1984
%T Interactive documentation
%R Internal Report
%I Computing Laboratory, University of Kent
%O April
%K *

%A Brown, J.S.
%A Burton, R.R.
%D 1975
%T Multiple representations of knowledge for tutorial reasoning
%B Representation of Learning
%E D.G. Bobrow and A. Collins
%I Academic Press
%C New York, NY

%A Brownston, L.
%A Farrell, R.
%A Kant, E.
%A Martin, N.
%D 1985
%T Programming expert systems in OPS-5: an introduction to rule-based programming
%I Addison-Wesley
%C Reading, MA

%A Brunner, J.
%D 1975
%T The shockwave rider
%I Ballantine
%C New York, NY

%A Bruynooghs, M.
%D 1982
%T Adding redundancy to obtain more reliable and more readable Prolog programs
%J Proc 1st International Logic Programming Conference
%C Marseille, France
%P 129-133
%O September 14-17
%K *

%A Bryant, J.
%D 1979
%T On the clustering of multidimensional pictorial data
%J Pattern Recognition
%V 11
%P 115-125
%K *

%A Buchman, C.
%A Berry, D.M.
%T An adaptation of the Unix DITROFF for formatting bidirectional text
%I Computer Science Department, University of California
%C Los Angeles, CA
%K *

%A Bundy, A.
%A Silver, B.
%A Plummer, D.
%D 1985
%T An analytical comparison of some rule-learning programs
%J Artificial Intelligence
%V 27
%P 137-181

%A Bundy, A.
%D 1983
%T The computer modelling of mathematical reasoning
%A Academic Press
%C London, England

%A Burton, R.R.
%A Brown, J.S.
%D 1979
%T An investigation of computer coaching for informal learning activities
%J IJMMS
%V 11
%N 1
%P 5-24
%O January

%A Bush, V.
%D 1945
%T As we may think
%J Atlantic Monthly
%P 101
%O July

%A Byrd, R.J.
%A Smith, S.E.
%A de\|Jong, S.P.
%D 1982
%T An actor-based programming system
%J Proc SIGOA Conference on Office Information Systems
%P 67-78
%C Philadelphia, PA
%O June 21-23
%K *

%A Campbell, F.W.
%A Robson, J.G.
%D 1967
%T Application of fourier analysis to the visibility of gratings
%J Physiol
%N 197
%P 551-566
%I University of Cambridge
%K *

%A Cannon, W.B.
%D 1932
%T The wisdom of the body
%I London

%A Carroll, J.B.
%D 1967
%T On sampling from a lognormal model of word-frequency distribution
%B Computational analysis of present-day American English
%E Kucera, H. and Francis, W.N.
%I Brown University Press
%C Providence, RI
%P 406-424
%K *

%A Carroll, J.B.
%D 1966
%T Word-frequency studies and the lognormal distribution
%E E.M.Zale
%B Proc Conference on Language and Language Behavior
%I Appleton-Century-Crofts
%C New York, NY
%P 213-235
%K *

%A Carroll, J.M.
%A Thomas, J.C.
%D 1982
%T Metaphor and the cognitive representation of computing systems
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-12
%N 2
%P 107-116
%O March/April
%K *

%A Carter, K.A.
%D 1984
%T The Rainbow workstation in brief/A window manager for the Rainbow workstation
%R Rainbow Group Note
%I Computer Laboratory, University of Cambridge
%O May
%K *

%A Casey, R.G.
%A Friedman, T.D.
%A Wong, K.Y.
%D 1982
%T Automatic scaling of digital fonts
%J IBM J Research and Development
%V 26
%P 657-666

%A Casey, R.G.
%A Nagy, G.
%D 1984
%T Decision tree design using a probabilistic model
TJ IEEE Trans Information Theory
%V IT-30
%N 1
%P 93-99
%O January
%K *

%A Cater, J.P.
%D 1983
%T Electronically speaking: computer speech generation
%I Howard W. Sams
%C Indianapolis, IN

%A Catmull, E.
%D 1981
%T New frontiers in computer animation
%J American Cinematographer
%P 157-163
%O October

%A Cendrowska, J.
%A Bramer, M.A.
%D 1984
%T A rational reconstruction of the Mycin consultation system
%J IJMMS
%V 20
%P 229-317

%A Chapanis, A.
%D 1984
%T Taming and civilizing computers
%B Computer culture: the scientific, intellectual, and social impact of the computer
%E Heinz R. Pagels
%I New York Academy of Sciences
%C New York, NY
%P 202-219
%K *

%A Chazelle, B.
%D 1983
%T A decision procedure for optimal polyhedron partitioning
%J Information Processing Letters
%V 16
%P 75-78
%O February 26
%K *

%A Cheeseman, P.
%D 1985
%T In defense of probability
%J Proc 10th International Joint Conference on Artificial Intelligence
%P 100R2-1009

%A Cheriton, D.R.
%A Zwaenepoel, W.
%D 1983
%T The distributed V kernel and its performance for diskless workstations
%R Report No STAN-CS-83-973
%I Stanford University, Computer Science Department
%C Stanford, CA
%O July
%K *

%A Christodoulakis, S
%A Faloutsos, C.
%D 1984
%T Design considerations for a message file server
%J IEEE Trans Software Engineering
%V SE-10
%N 2
%P 201-210
%O March
%K *

%A Ciminiere, L.
%A Valenzano, A.
%D 1984
%T iAPX 432 hardware fault handling mechanisms
%K *

%A Clancey, W.J.
%D 1979
%T Tutoring rules for guiding a case method dialogue
%J IJMMS
%V 11
%P 25-49
%K *

%A Clancey, W.J.
%D 1983
%T The epistemology of a rule-based expert system \(em a framework for explanation
%J Artificial Intelligence
%V 20
%P 215-251
%K *

%A Clancey, W.J.
%A Shortliffe, E.H. \0(Editors)
%D 1984
%T Readings in medical artificial intelligence
%I Addison-Wesley
%C Reading, MA

%A Clarkson, T.
%T Eye position sensor
%R Section 7 of a report
%I King's College
%C London, England
%K *

%A Cleary, J.G.
%D 1979
%T Analysis of an algorithm for finding nearest neighbors in Euclidean space
%J ACM Trans Mathematical Software
%V 5
%N 2
%P 183-192
%O June
%K *

%A Cleary, J.G.
%D 1984
%T Compact hash tables using bidirectional linear probing
%J IEEE Trans Computers
%V C-33
%N 9
%P 828-834
%O September

%A Cleary, J.G.
%A Darragh, J.J.
%D 1984
%T A fast compact representation of trees using hash tables
%R Research Report 83/162/20
%I Computer Science Department, University of Calgary
%O Submitted to \fIIEEE Trans Computers\fP

%A Cleary, J.G.
%A Witten, I.H.
%D in preparation
%T Universal data compression

%A Clocksin, W.A.
%D 1984
%T Introduction to Prolog
%B Artificial Intelligence:  tools, techniques, and applications
%E T.O'Shea and M.Eisenstadt
%I Harper and Row
%C New York, NY

%A Codd, E.F.
%D 1968
%T Cellular automata
%I Academic Press
%C London, England

%A Codd, E.F.
%D 1978
%T How about recently?
%B Databases: Improving usability and responsiveness
%E B. Shneiderman (Ed.)
%I Academic Press
%C New York, NY
%P 3-28

%A Cohen, E.S.
%A Smith, E.T.
%A Iverson, L.A.
%D 1985
%T Constraint-based tiled windows
%R Research Report
%I Computer Science Department, Carnegie-Mellon University

%A Cohen, J.
%D 1985
%T Describing Prolog by its interpretation and compilation
%J Comm ACM
%V 28
%N 12
%P 1311-1324
%O December
%K *

%A Colby, K.M.
%D 1973
%T Simulations of belief systems
%E R.C.Schank and K.M.Colby
%B Computer models of thought and language
%I Freeman
%C San Francisco, CA
%P 251-286

%A Colmaurer, A.
%A Colmaurer, C.
%D 1983
%T Prolog en 10 figures
%J TSI
%V 2
%N 4
%O July-August
%K *

%A Colmerauer, A.
%D 1985
%T Prolog in 10 figures
%J Comm ACM
%V 28
%N 12
%P 1296-1310
%O December
%K *

%A Colmaurer, A.
%T An interesting subset of natural language
%K *

%A Comer, D.E.
%A Peterson, L.L.
%T Conversation-based mail
%J ACM Transactions on computer systems
%V 4
%N 4
%O November
%K *

%A Computer\|Science\|Department
%D 1983
%T CPSC Student Handbook
%I University of Calgary

%A Coombs, M.
%A Alty, J.
%D 1984
%T Expert systems: an alternative paradigm
%J IJMMS
%V 20
%N 1
%P 21-43
%O January
%K *

%A Corbett, C.
%D 1983
%T MC nroff/troff macros reference manual
%R Report EES-MMS-1983-2
%I Department of Electrical Engineering Science, University of Essex
%C Colchester, Essex, UK
%K *

%A Corbett, C.
%D 1983
%T Figure processing within nroff
%J Presented at EUUG Meeting
%C Dublin, Ireland
%O September
%K *

%A Cormack, G.V.
%A Horspool, R.N.
%D 1984
%T Algorithms for adaptive Huffman codes
%J Information Processing Letters
%V 18
%N 3
%P 159-166
%O March
%K *

%A Cormack, G.V.
%A Horspool, R.N.
%D 1985
%T Data compression using dynamic Markov modelling
%R Research Report
%I Computer Science Department, University of Waterloo
%O April; submitted to Comm ACM
%K *

%A Costigan, D.M.
%D 1978
%T Electronic delivery of documents and graphics
%I Van Nostrand Reinhold
%C New York, NY

%A Coulon, D.
%A Kayser, D.
%D 1979
%T Construction of natural language sentence acceptors by a supervised-learning technique
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-1
%N 1
%P 94-99
%O January
%K *

%A Cove, J.F.
%A Walsh, B.C.
%D 1988
%T A taxonomy of browsing
%R Working Paper 85/2
%I Computer Science Department, University of Liverpool
%O April
%K *

%A Cox, B.J.
%D 1986
%T Object oriented programming
%I Addison-Wesley
%C Reading, MA

%A Crochiere, R.E.
%A Rabiner, L.R.
%D 1975
%T Optimum FIR digital filter implementations for decimation, interpolation, and narrow-band filtering
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-23
%N 5
%P 444-456
%O October
%K *

%A Crochiere, R.E.
%A Rabiner, L.R.
%D 1976
%T Further considerations in the design of decimators and interpolators
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-24
%N 4
%P 296-311
%O August
%K *

%A Croft, W.B.
%A Lefkowitz, L.S.
%D 1984
%T Task support in an office system
%J ACM Trans Office Information Systems
%V 2
%N 3
%P 197-212
%O July
%K *

%A Croft, W.B.
%D 1984
%T The role of context and adaptation in user interfaces
%J IJMMS
%V 21
%N 4
%P 283-292
%O October

%A Csuri, C.
%D 1974
%T Computer graphics and art
%J Proc IEEE
%O April

%A Cuff, R.N.
%D 1982
%T Database query using menus and natural language fragments
%R PhD Thesis
%I Man-Machine Systems Laboratory, Department of Electrical Engineering Science, University of Essex
%C Colchester, Essex, UK

%A Cuff, R.N.
%D 1984
%T HERCULES: database query using natural language fragments
%J Proc 3rd British National Conference on Database Systems
%C Leeds
%O July
%K *

%A Cullingford, R.E.
%D 1978
%T Script application: computer understanding of newspaper stories
%R PhD Thesis, Research Report 116
%I Yale University

%A Cullingford, R.E.
%A Krueger, M.W.
%A Selfridge, M.
%A Bienkowski, M.A.
%D 1982
%T Automated explanations as a component of a computer-aided design system
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-12
%N 2
%P 168-181
%O March/April
%K *

%A Cullingford, R.E.
%A Pazzani, M.J.
%D 1984
%T Word-meaning selection in multiprocess language understanding programs
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-6
%N 4
%P 493-509
%O July
%K *

%A Curry, G.
%A Baer, L.
%A Lipkie, D.
%A Lee, B.
%D 1982
%T Traits: an approach to multiple-inheritance subclassing
%J ACM Conference on Office Information Systems
%P 1-9
%O June
%K *

%A Damper, R.I.
%A MacDonald, S.L.
%D 1984
%T Template adaptation in speech recognition
%J Proc Institute of Acoustics
%V 6
%N 4
%P 293-299
%K *

%A Damper, R.I.
%A MacDonald, S.L.
%D 1984
%T Statistical clustering procedures applied to low-cost speech recognition
%J J Biomed Engineering
%V 6
%P 265-271
%O October
%K *

%A Darragh, J.J.
%A Witten, I.H.
%A Cleary, J.G.
%D 1983
%T Adaptive text compression to enhance a modem
%R Research Report 83/132/21
%I Computer Science Department, University of Calgary
%K KReport

%A Davis, R.
%D 1979
%T Interactive transfer of expertise: acquisition of new inference rules
%J Artificial Intelligence
%V 12
%N 2
%P 121-157
%K *

%A Davis, R.
%A Lenat, D.B.
%D 1982
%T Knowledge-based systems in artificial intelligence
%I McGraw Hill
%C New York, NY

%A Day, J.D.
%A Zimmermann, H.
%D 1983
%T The OSI reference model
%J Proc IEEE
%V 71
%N 12
%P 1334-1340
%O December

%A Defude, B.
%D 1984
%T Knowledge based systems versus thesaurus: an architecture problem about expert systems design
%J Proc 3rd Joint BCS and ACM Symposium (King's College, Cambridge)
%I Cambridge University Press
%P 267-280
%O July
%K *

%A de\|Beaugrande, R.
%D 1980
%T Text, discourse and process: towards a multidisciplinary science of texts
%I Ablex Publishing Corporation
%C Norwood, NJ

%A de\|Jong, G.
%D 1979
%T Prediction and substantiation: two processes that comprise understanding
%J Proc International Joint Conference on Artificial Intelligence
%C Tokyo, Japan
%P 217-222
%O August

%A de\|Jong, G.
%D 1981
%T Generalizations based on explanations
%J Proc IJCAI 81
%P 67-69
%K *

%A de\|Jong, S.P.
%D 1980
%T The system for business automation (SBA): a unified application development system
%B Information Processing 80
%E S.H.Lavington
%P 469-474
%I North Holland
%K *

%A de\|Leon, L.
%A Harris, W.G.
%A Evens, M.
%D 1983
%T Is there really trouble with Unix?
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 125-129
%C Boston, MA
%O December 12-15

%A Dietterich, T.G.
%A Michalski, R.S.
%D 1983
%T A comparative review of selected methods for learning from examples
%B Machine learning
%E R.S. Michalski, J.G. Carbonell, and T.M. Mitchell
%I Tioga
%P 41-81

%A Denning, P.J.
%D 1982
%T Computer-based predictive writing
%J Comm ACM
%V 25
%N 5
%P 315-316
%O May
%K *

%A Denning, P.J.
%D 1984
%T Educational ruminations
%J Comm ACM
%V 27
%N 10
%P 979-983
%O October

%A Denning, P.J.
%D 1985
%T The science of computing: what is Computer Science?
%J American Scientist
%V 73
%O January/February
%K *

%A Dewdney, A.K.
%D 1984
%T Computer recreations
%J Scientific American
%V 250
%N 5
%P 14-22
%O May

%A Downs, T.
%A Cook, A.S.
%A Rogers, G.
%D 1984
%T A partitioning approach to yield estimation for large circuits and systems
%J IEEE Trans Circuits and Systems
%V CAS-31
%N 5
%P 472-485
%O May
%K *

%A Downs, T.
%D 1985
%T An approach to the modeling of software testing with some applications
%J IEEE Trans Software Engineering
%V SE-11
%N 4
%P 375-386
%O April
%K *

%A Drummond, M.
%D 1983
%T A proposal to study the cost-effectiveness of planning, acting, and sensing
%R DAI Working paper
%I Department of Artificial Intelligence, University of Edinburgh
%K *

%A Dubes, R.
%A Jain, A.K.
%D 1979
%T Validity studies in clustering methodologies
%J Pattern Recognition
%V 11
%P 225-254
%K *

%A Duda, R.
%A Gaschnig, J.
%A Hart, P.
%D 1979
%T Model design in the Prospector consultant system for mineral exploration
%E D. Michie
%B Expert systems in the microelectronic age
%I Edinburgh University Press
%K *

%A Dumais, S.
%A Landauer, T.
%D 1982
%T Psychological investigations of natural terminology for command and query languages
%B Directions in human/computer interactions
%E Badre and Shneiderman
%I Ablex Publishing Corporation
%C Norwood, NJ
%P 95-110

%A Dumais, S.
%A Landauer, T.
%D 1983
%T Using examples to describe categories
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 112-115
%C Boston, MA
%O December 12-15
%K *

%A Dunham, M.O.
%A Gray, R.M.
%D 1985
%T An algorithm for the design of labeled-transition finite-state vector quantization
%J IEEE Trans Communications
%V COM-33
%N 1
%P 83-89
%O January
%K *

%A Dyer, M.G.
%D 1983
%T In-depth understanding
%I MIT Press
%C Cambridge, MA

%A Dynkin, E.B.
%D 1965
%T Controlled random sequences
%J Theoretical Probability and its Applications
%V X
%N 1
%K *

%A Eason, K.D.
%A Damodaran, L
%D 1979
%T Design procedures for user involvement and user support
%J Infotech - Man Computer Communications
%C London, England

%A Edelsbrunner, H.
%A Maurer, H.A.
%D 1985
%T Finding extreme points in three dimensions and solving the post-office problem in the plane
%J Information Processing Letters
%V 21
%P 39-47
%O 10 July
%K *

%A Efron, B.
%A Thisted, R.
%D 1976
%T Estimating the number of unseen species: how many words did Shakespeare know?
%J Biometrika
%V 63
%N 3
%P 435-447
%K *

%A Eisenstadt, E.
%A Hasemar, T.
%D 1985
%T An improved user interface for Prolog
%E B.Shackel
%B Human-Computer Interaction: Proceedings INTERACT 84
%I North Holland
%P 109-113
%K *

%A Ekeberg, O.
%D 1986
%T Robust dictionary lookup using associative methods
%R Research Report
%I Computer Vision and Associative Pattern Processing Laboratory, Department of Computing Science, Royal Institute of Technology
%C Stockholm, Sweden
%K *

%A Elias, P.
%D 1955
%T Predictive coding: Part I and Part II
%J IRE Trans Information Theory
%V IT-1
%N 1
%P 16-33
%K *

%A Elias, P.
%D 1970
%T Bounds on performance of optimum quantizers
%J IEEE Trans Information Theory
%V IT-16
%N 2
%P 172-184
%O March
%K *

%A Elias, P.
%D 1975
%T Universal codeword sets and representations of the integers
%J IEEE Trans Information Theory
%V IT-21
%N 2
%P 194-203
%O March
%K *

%A Elliott, S.J.
%A Nelson, P.A.
%D 1985
%T An algorithm for multichannel LMS adaptive filtering
%R Research Report
%I Institute of Sound and Vibration Research, University of Southampton
%C Southampton, England
%K *

%A Ellis, C.A.
%A Nutt, G.J.
%D 1979
%T On the equivalence of office models
%R Research Report SSL-79-8
%I Xerox PARC
%O December
%K *

%A Ellis, C.A.
%T Formal and informal models of office activity
%R Research Report
%I Xerox PARC
%K *

%A Ellis, C.A.
%A Bernal, M.
%D 1982
%T Officetalk-D: an experimental office information system
%J Proc ACM Conference 
%P 131-140
%K *

%A Embley, D.W.
%A Nagy, G.
%D 1981
%T Behavioral aspects of text editors
%J Computing Surveys
%V 13
%N 1
%P 33-70
%O March
%K *

%A Engel F.L.
%A Andriessen J.J.
%A Schmitz, H.J.R.
%D 1983
%T What, where and whence: means for improving electronic data access
%J IJMMS
%V 18
%P 145-160

%A Englebart, D.C.
%A English, W.K.
%D 1968
%T A research center for augmenting human intellect
%J Proc Fall Joint Computer Conference
%V 33
%P 395-410
%I AFIPS Press
%C Arlington, VA

%A Ernvall, J.
%A Nevalainen, O.
%D 1984
%T Estimating the length of minimal spanning trees in compression of files
%J BIT
%V 24
%P 19-32
%K *

%A Even, S.
%A Rodeh, M.
%D 1978
%T Economical encodings of commas between strings
%J Comm ACM
%V 21
%P 315-317
%O April
%K *

%A Even, S.
%A Pratt, V.
%A Rodeh, M.
%D 1981
%T Linear algorithm for data compression via string matching
%J J ACM
%V 28
%N 1
%P 16-24
%O January

%A Everitt, B.
%D 1974
%T Cluster analysis
%I Heineman
%C London, England

%A Fano, R.M.
%D 1949
%T The transmission of information
%R Technical Report 65
%I Research Laboratory of Electronics, MIT
%C Cambridge, MA

%A Feigenbaum, E.A.
%A McCorduck, P.
%D 1983
%T The fifth generation
%I Addison-Wesley
%C Reading, MA

%A Ferrans, J.C.
%D 1982
%T SEDL \(em a language for specifying integrity constraints on office forms
%J SIGOA Newsletter (Proc SIGOA Conference on Office Information Systems)
%V 3
%N 3/4
%P 123-130
%C Philadelphia, PA
%O June 21-23
%K *

%A Fikes, R.
%A Kehler, T.
%D 1985
%T The role of frame-based representation in reasoning
%J Comm ACM
%V 28
%N 9
%P 904-920
%O September
%K *

%A Filipski, A.
%A Hanko, J.
%D 1986
%T Making UNIX secure
%J Byte
%P 113-128
%O April

%A Fillmore, C.J.
%D 1968
%T The case for case
%E E.Bach and R.T.Harms
%B Universals in linguistic theory
%P 1-88
%I Holt, Reinhart and Winston
%C Chicago, IL
%K *

%A Finkel, R.A.
%A Bentley, J.L.
%D 1974
%T Quad trees -- a data structure for retrieval on composite keys
%J Acta Informatica
%V 4
%N 1
%P 1-9

%A Fischer, G.
%A Lemke, A.
%A Schwab, T.
%D 1985
%T Knowledge-based help systems
%J Proc Human Factors in Computer Systems
%C San Francisco, CA
%P 161-167
%O April
%K *

%A Fitter, M.
%D 1979
%T Toward more natural interactive systems
%J IJMMS
%V 11
%P 339-350

%A Fogel, L.J.
%A Owens, A.J.
%A Walsh, M.J.
%D 1966
%T Artificial intelligence through simulated evolution
%I Wiley

%A Foley, J.D.
%A Wallace, V.L.
%A Chan, P.
%D 1984
%T The human factors of computer graphics interaction techniques
%J IEEE Computer Graphics and Applications
%V 4
%N 11
%P 13-48
%O November
%K *

%A Foster, J.
%A Gray, R.M.
%A Dunham, M.O.
%D 1985
%T Finite-state vector quantization for waveform coding
%J IEEE Trans Information Theory
%V IT-31
%O May

%A Freij, G.J.
%A Cheetham, B.M.G.
%D 1985
%T Improved sequential linear prediction by selective time-domain coefficient extraction
%R Report
%K *

%A Friedman, J.H.
%A Baskett, F.
%A Shustek, L.J.
%D 1975
%T An algorithm for finding nearest neighbors
%J IEEE Trans Computers
%V C-24
%P 1000-1006
%O October
%K *

%A Friedman, J.H.
%A Bentley, J.L.
%A Finkel, R.A.
%D 1977
%T An algorithm for finding best matches in logarithmic expected time
%J ACM Trans Mathematical Software
%V 3
%N 3
%P 209-226
%O September
%K *

%A Fukunaga, K.
%A Narendra, P.M.
%D 1975
%T A branch and bound algorithm for computing \fIk\fP-nearest neighbors
%J IEEE Trans Computers
%V C-24
%P 750-753
%O July
%K *

%A Fulton, M.A.
%T A social cognition research model for studying human-computer communication
%R Research Report
%I Oklahoma State University Business College
%C Stillwater, OK
%K *

%A Gaines, B.R.
%D 1976
%T On a danger in the assumption of causality
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-6
%P 56-59

%A Gaines, B.R.
%D 1981
%T Autopoiesis: some questions
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 145-154

%A Gaines, B.R.
%D 1981
%T The technology of interaction -- dialog programming rules
%J IJMMS
%V 14
%N 1
%P 133-150
%O January

%A Gaines, B.R.
%D 1983
%T From word processing to image processing in office systems
%J Proc International Electrical, Electronics Conference
%V 2
%P 622-625
%C Toronto, ON
%O September 26-28
%K *

%A Gaines, B.R.
%D 1984
%T Fundamentals of decision: probabilistic, possibilistic and other forms of uncertainty in decision analysis
%J Studies in the Management Sciences
%V 20
%P 47-65

%A Gaines, B.R.
%D 1985
%T Expert systems and simulation in planning flexible manufacturing systems
%J Proc Workshop on Coupling Symbolic and Numerical Computing in Expert Systems
%I Boeing Computer Services AI Center
%C Bellevue, WA
%O August 27-29

%A Gaines, B.R.
%D 1985
%T The design of expert systems for planning flexible manufacturing
%R Research Report
%I Computer Science Department, University of Calgary

%A Gaines, B.R.
%A Shaw, M.L.G
%D 1986
%T Foundations of dialog engineering: the development of human-computer interaction Part II
%J IJMMS
%V 24
%N 2
%P 101-123
%O February

%A Gaines, B.R.
%D 1986
%T An overview of knowledge acquisition and transfer
%J Proc AAAI Workshop on Knowledge Acquisition for Knowledge-based Systems
%C Banff, AL
%O November

%A Galitz, W.O.
%D 1980
%T Human factors in office automation
%I Life Office Management Association
%C Atlanta, GA 

%A Gardner, M.
%T In which `monster' curves force redefinition of the word `curve'
%J Scientific American
%P 124-133
%K*

%A Gargantini, I.
%A Atkinson, H.H.
%D 1984
%T Linear quadtrees: a blocking technique for contour filling
%J Pattern Recognition
%V 17
%N 3
%P 285-293
%K *

%A Gargantini, I.A.
%D 1983
%T Recent results on linear quadtrees and related techniques
%R Report 111
%I Computer Science Department, University of Western Ontario
%C London, ON
%O December (to appear in \fIPattern recognition\fP)
%K *

%A Garudadri, H.
%A Beddoes, M.P.
%A Gilbert, J.H.V.
%A Benguerel, A.P.
%T Identification of invariant acoustic cues in stop consonants using the Wigner distribution
%J 
%K *

%A Garvey, T.D.
%A Lowrance, J.D.
%A Fischler, M.A.
%D 1981
%T An inference technique for integrating knowledge from disparate sources
%J Proc 7th International Joint Conference on Artificial Intelligence
%P 319-325
%C Vancouver, BC
%O August
%K *

%A Gehani, N.H.
%D 1983
%T An electronic form system -- an experience in prototyping
%J Software -- Practice and Experience
%V 13
%P 479-486
%K *

%A Gehani, N.H.
%D 1983
%T High level form definition in office information systems
%J Computer J
%V 26
%N 1
%P 52-59
%K *

%A Geller, V.J.
%A Lesk, M.E.
%D 1981
%T How users search: a comparison of menu and attribute retrieval systems on a library catalog
%R Internal Report
%I Bell Laboratories
%K *

%A Genesereth, M.R.
%A Ginsberg, M.L.
%D 1985
%T Logic programming
%J Comm ACM
%V 28
%N 9
%P 933-941
%O September
%K *

%A Genesereth, M.R.
%A Ginsberg, M.L.
%A Rosenschein, J.S.
%D 1985
%T Solving the prisoner's dilemma
%R Research Report STAN-CS-84-1032
%I Computer Science Department, Stanford University
%C Stanford, CA
%K *

%A Giles, R.
%D 1976
%T Lucasiewicz logic and fuzzy set theory
%J IJMMS
%V 8
%P 313-327

%A Ginsberg, M.L.
%D 1985
%T Does probability have a place in non-monotonic reasoning?
%J Proc IJCAI
%P 107-110
%K *

%A Georgeff, M.
%A Lansky, A.L.
%A Bessiere, P.
%D 1985
%T A procedural logic
%J Proc International Joint Conference on Artificial Intelligence
%C Los Angeles, CA
%O August
%K *

%A Gersham, A.V.
%D 1982
%T A framework for conceptual analyzers
%E W.G. Lenhert and M.H. Ringle
%B Strategies for natural language processing
%I Lawrence Erlbaum Associates
%P 177-202

%A Gersho, A.
%D 1979
%T Asymptotically optimal block quantization
%J IEEE Trans Information Theory
%V IT-25
%N 4
%P 373-380
%O July
%K *

%A Gevarter, W.B.
%D 1983
%T An overview of computer-based natural language processing
%R NASA Technical Memorandum 85635
%C Washington, DC

%A Gevarter, W.B.
%D 1983
%T Expert systems: limited but powerful
%J IEEE Spectrum
%P 39-45
%O August

%A Gibbon, D.
%A Richter, H.\0(Editors)
%D 1984
%T Intonation, Accent and Rhythm
%I de Gruyter
%C Berlin

%A Gibbs, R.W.
%A Tenney, Y.J.
%D 1980
%T The concept of scripts in understanding stories
%J J Psycholinguistic Research
%V 9
%N 3
%P 275-284
%K *

%A Gibson, B.
%A Wittig, R.
%D 1983
%T The Develnet LAN: architecture and experience
%J Proc International Electrical, Electronics Conference
%V 1
%P 26-29
%C Toronto, ON
%O September 26-28
%K *

%A Girill, T.R.
%A Luk, C.H.
%D 1983
%T DOCUMENT: an interactive, online solution to four documentation problems
%J Comm ACM
%V 26
%N 5
%P 328-337
%O May

%A Glinert, E.P.
%A Tanimoto, S.L.
%D 1984
%T Pict: an interactive graphical programming environment
%J IEEE Computer
%V 17
%N 11
%P 7-25
%O November
%K *

%A Glinert, E.P.
%A Ladner, R.E.
%D 1984
%T A large font virtual terminal interface
%J Comm ACM
%V 27
%N 7
%P 567-572
%O June
%K *

%A Godfrey, D.
%A Chang, E.\0(Editors)
%D 1981
%T The Telidon book
%I Press Porcepic
%C Toronto, ON

%A Goldshlager, L.M.
%D 1980
%T Short algorithms for space-filling curves
%J Software -- Practice and Experience
%V 11
%P 99-100
%O September
%K *

%A Good, D.I.
%D 1982
%T The proof of a distributed system in Gypsy
%R Technical Report 30
%I Institute for Computing Science, University of Texas at Austin
%C Austin, TX
%O September
%K *

%A Gordon, J.
%A Shortliffe, E.H.
%D 1984
%T The Dempster-Shafer theory of evidence
%B Rule-based expert systems
%E B.G.Buchanan and E.H.Shortliffe
%I Addison-Wesley
%C Reading, MA
%P 272-292

%A Gordon, J.
%A Shortliffe, E.H.
%D 1985
%T A method for managing evidential reasoning in a hierarchical hypothesis space
%J Artificial Intelligence
%V 26
%P 323-357

%A Gosling, J.A.
%D 1981
%T A redisplay algorithm
%J SIGOA Newsletter (Proc ACM Symposium on Text manipulation)
%C Portland, OR
%V 2
%N 1/2
%P 123-129
%O Spring/Summer

%A Gosling, J.A.
%A Rosenthal, D.S.H.
%D 1983
%T A network window-manager
%R Report
%I Information Technology Center, Carnegie-Mellon University
%C Pittsburgh, PA
%K *

%A Grampp, F.T.
%A Morris, R.H.
%D 1984
%T UNIX operating system security
%J Bell System Technical J
%V 62
%N 8, part 2
%P 1649-1672
%O October

%A Grasser, A.C.
%D 1981
%T Prose comprehension beyond the word
%I Springer-Verlag
%C New York, NY

%A Gray, R.M.
%A Kieffer, J.C.
%A Linde, Y.
%D 1980
%T Locally optimal block quantizer design
%J Information and Control
%V 45
%P 178-198
%K *

%A Gray, R.M.
%D 1984
%T Hardware realization of waveform vector quantizers
%J IEEE Trans
%V SAC-2
%N 2

%A Green, M.
%D 1982
%T Towards a user interface prototyping system
%J Proc Graphics Interface 82
%P 37-45
%K *

%A Greenberg, S.
%D 1984
%T User modeling in interactive computer systems
%R MSc Thesis
%I Computer Science Department, University of Calgary

%A Greenberg, S.
%A Witten, I.H.
%D 1984
%T Comparison of menu displays for ordered lists
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 464-469
%O May
%K KConference

%A Greenberg, S.
%A Witten, I.H.
%D 1985
%T Adaptive personalized interfaces -- a question of viability
%J Behaviour and Information Technology
%V 4
%N 1
%P 31-45
%O January-March
%K KJournal

%A Greenberg, S.
%A Witten, I.H.
%D 1985
%T Interactive end-user creation of workbench hierarchies within a window system
%J Proc Canadian Information Processing Society Conference
%C Montreal, QUE
%P 408-416
%O May
%K KConference

%A Greenberg, S.
%A Peterson, M.
%A Witten, I.H.
%D 1986
%T Issues and experiences in the design of a window management system
%J Proc Canadian Information Processing Society Conference
%C Edmonton, AL
%P 33-44
%K KConference

%A Grice, H.P.
%D 1957
%T Meaning
%J Philosophical Review
%V LXVI
%N 3
%P 377-388
%K *

%A Grice, H.P.
%D 1969
%T Utterer's meaning and intentions
%J Philosophical Review
%V LXXVIII
%N 2
%P 147-177
%K *

%A Grossner, C.P.
%A Radhakrishnan, T.
%A Pospiech, A.
%D 1983
%T An integrated workstation for the visually handicapped
%J IEEE Micro
%P 8-16
%O June
%K *

%A Gullichsen, E.
%A Chang, E.
%D 1985
%T Generative design in architecture using an expert system
%R Research Report
%I Computer Science Department, University of Victoria
%O February
%K *

%A Hagelbarger, D.W.
%A Thompson, R.A.
%D 1983
%T Experiments in teleterminal design
%J IEEE Spectrum
%P 40-45
%O October
%K *

%A Halbert, D.C.
%D 1984
%T Programming by example
%R Technical Report
%I Xerox PARC, (Office Products Division)
%C Palo Alto, CA
%O December

%A Hammond, P.
%A Sergot, M.
%D 1983
%T A Prolog shell for logic based expert systems
%J Proc Expert Systems 83
%I Churchill College
%C Cambridge, England
%P 95-104
%O December
%K *

%A Hammond, P.
%D 1984
%T Representation of DHSS regulations as a logic program
%J Proc Expert Systems 83
%I Churchill College
%C Cambridge, England
%P 225-235
%O December
%K *

%A Hanson, S.J.
%A Kraut, R.E.
%A Farber, J.M.
%D 1984
%T Interface design and multivariate analysis of UNIX command use
%J ACM Trans Office Information Systems
%V 2
%N 1
%O March

%A Harrison, A.F.
%A Bramson, R.M.
%T The art of thinking
%I Berkley Books
%C New York, NY
%K *

%A Harth, E.
%D 1982
%T Windows on the mind
%I Harvester Press
%C Brighton, Sussex

%A Hartigan, J.A.
%D 1975
%T Clustering algorithms
%I Wiley

%A Hartley, J.
%D 1978
%T Designing instructional text
%I Kogan Page
%C London, England

%A Hartley, J.
%D 1982
%T Designing instructional text
%E D.H. Jonassen
%B The technology of text
%I Educational Technology Publications
%C Englewood Cliffs, NJ

%A Hasling, D.W.
%A Clancey, W.J.
%A Rennels, G.
%D 1984
%T Strategic explanations for a diagnostic consultation system
%J IJMMS
%V 20
%P 3-19
%K *

%A Haugeland, J.
%D 1979
%T Understanding natural language
%V LXXVI
%N 11
%P 619-632
%O November
%K *

%A Hayes, P.
%T The naive physics manifesto
%K *

%A Hayes, P.J.
%A Ball, E.
%A Reddy, R.
%D 1983
%T Breaking the man-machine communication barrier
%J IEEE Computer
%P 19-30
%O March
%K *

%A Hayes, P.J.
%D 1984
%T Executable interface definitions using form-based interface abstractions
%R Report CMS-CS-84-110
%I Computer Science Department, Carnegie-Mellon University
%K *

%A Hayes, P.J.
%A Szekely, P.A.
%A Lerner, R.A.
%D 1985
%T Design alternatives for user interface management systems based on experience with Cousin
%J Proc Human Factors in Computer Systems
%C San Francisco, CA
%P 169-175
%O April
%K *

%A Hayes, P.J.
%A Lerner, R.A.
%A Szekely, P.A.
%T The COUSIN user interface project
%K *

%A Hayes-Roth, F.
%D 1985
%T Rule-based systems
%J Comm ACM
%V 28
%N 9
%P 921-932
%O September
%K *

%A Hays, D.G.
%D 1964
%T Dependency theory -- a formalism and some observations
%J Language
%V 40
%P 511-25

%A Heath, F.G.
%A Foulk, P.W.
%A Li, D.Y.
%D 1984
%T Analysis and restructuring of concurrent systems using Prolog
%J Proc IEEE Part E
%V 131
%N 5
%P 169-176
%O September
%K *

%A Heckbert, P.
%D 1982
%T Color image quantization for frame buffer display
%J Proc SIGGRAPH 82
%C Boston, MA
%P 297-307
%O July
%K *

%A Held, G.
%D 1984
%T Data compression: techniques and applications
%I Wiley
%C New York, NY

%A Hendrix, G.G
%A Sacerdoti, E.D.
%A Sagalowicz, D.
%A Slocum, J.
%D 1978
%T Developing a natural language interface to complex data
%J ACM Trans Database Systems
%V 3
%N 2
%O June

%A Hester, J.H.
%A Hirschberg, D.S.
%D 1985
%T Self-organizing linear search
%J Computing Surveys
%V 17
%N 3
%P 295-311
%O September

%A Hewitt, C.
%D 1977
%T Viewing control structures as patterns of passing messages
%J Artificial Intelligence
%V 8
%P 323-364

%A Hewitt, C.
%A de\|Jong, P.S.
%D 1982
%T Open systems
%R AI Memo 691
%I MIT Artificial Intelligence Laboratory
%O December
%K *

%A Hewitt, C.
%A de\|Jong, P.S.
%D 1983
%T Analyzing the roles of descriptions and actions in open systems
%R AI Memo 727
%I MIT Artificial Intelligence Laboratory
%O April
%K *

%A Hewitt, C.
%A de\|Jong, P.S.
%D 1983
%T Message passing semantics as a foundation for reasoning in open systems
%R Research Report
%I MIT Artificial Intelligence Laboratory
%O May
%K *

%A Hibbard, P.
%D 1983
%T User manual for MINT -- the SPICE document preparation system
%R Technical Report
%I Computer Science Department, Carnegie-Mellon University
%C Pittsburgh, PA

%A Hilbert, D.
%D 1891
%T Ueber die stetige Abbildung einer Linie auf ein Flachenstuck
%J Math Annalen
%V 38
%P 459-460
%K *

%A Hill, D.R.
%A Dohrn, C.
%A Darragh, J.
%A Esau, R.
%A Levinson, D.
%A Unger, B.
%A Witten, I.H.
%D 1984
%T Using speech output as a medium for human-computer dialogue
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 470-476
%O May
%K KConference

%A Hill, D.R.
%A Witten, I.H.
%A Neal, R.
%A Lomow, G.
%D 1984
%T Jecl and Hide: practical questions for the Jade user interface
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 373-380
%O May
%K KConference

%A Hiltz, S.R.
%A Turoff, M.
%D 1985
%T Structuring computer-mediated communication systems to avoid information overload
%J CACM
%V 28
%N 7
%P 680-689
%O July

%A Hintikka, K.J.
%D 1975
%T The intentions of intentionality
%I D. Reidel
%C Dordrecht, Holland

%A Ho, C.S.
%A Hong, Y.C.
%A Kuo, T.S.
%D 1986
%T A society model for office information systems
%J ACM Trans Office Information Systems
%V 4
%N 2
%P 104-137
%O April
%K *

%A Horspool, R.N.
%A Cormack, G.V.
%D 1984
%T A general-purpose data compression technique with practical computer applications
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 138-141
%O May
%K *

%A Horspool, R.N.
%A Cormack, G.V.
%D 1985
%T Comments on `Data compression using static Huffman code-decode tables'
%O submitted to CACM, November 1985
%K *

%A Horspool, R.N.
%A Cormack, G.V.
%D 1986
%T Dynamic Markov modelling -- a prediction technique
%J Proc International Conference on the System Sciences
%C Honolulu, HA
%O January
%K *

%A Hosticka, B.J.
%D 1985
%T Performance comparison of analog and digital circuits
%J Proc IEEE
%V 73
%N 1
%P 25-29
%O January

%A Hou, H.S.
%A Andrews, H.C.
%D 1978
%T Cubic splines for image interpolation and digital filtering
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-26
%N 6
%P 508-517
%O December
%K *

%A Hovy, E.H.
%T Integrating text planning and production in generation
%J Proc IJCAI
%P 848-851
%K *

%A Hunter, R.
%A Robinson, A.H.
%D 1980
%T International digital facsimile coding standards
%J Proc IEEE
%V 68
%N 7
%P 854-867
%O July
%K *

%A Hutchings, E.
%D 1983
%T The autonomous Viking
%J Science
%V 219
%P 803-808
%O February 18

%A Jackendoff, R.
%D 1985
%T Semantics and cognition
%I MIT Press
%C Cambridge, MA

%A Jakobsson, M.
%D 1985
%T Compression of character strings by an adaptive dictionary
%J BIT
%V 25
%N 4
%P 593-603
%K *

%A Jantsch, E.
%D 1981
%T Autopoiesis: a central aspect of dissipative self-organization
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 65-88

%A Jarvis, J.F.
%D 1984
%T Robotics
%J IEEE Computer
%P 283-292
%O October
%K *

%A Jarvis, R.A.
%D 1983
%T Growing polyhedral obstacles for planning collision-free paths
%J Australian Computer J
%V 15
%N 3
%P 103-111
%O August
%K *

%A Jaynes, J.
%D 1976
%T The origin of consciousness in the breakdown of the bicameral mind
%I Houghton Mifflin
%C Boston, MA

%A Jefferson, D.R.
%D 1985
%T Virtual time
%J ACM Trans Programming Languages and Systems
%V 7
%N 3
%P 404-425
%O July
%K *

%A Johnson, W.L.
%A Soloway, E.
%A Cutler, B.
%A Draper, S.W.
%D 1983
%T Bug catalogue: I
%R Research Report
%I Cognition and Programming Project, Computer Science Department, Yale University
%O October
%K *

%A Jones, H.
%D 1976
%T Stanley Morison displayed
%I Frederick Muller
%C London, England

%A Jones, L.P.
%A Iyengar, S.S.
%D 1984
%T Space and time efficient virtual quadtrees
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-6
%N 2
%P 244-247
%O March
%K *

%A Kaczmarek, T.
%A Mark, W.
%A Sondheimer, N.
%D 1983
%T The Consul/CUE interface: an integrated interactive environment
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 98-102
%C Boston, MA
%O December 12-15
%K *

%A Kaehler, T.
%A Patterson, D.
%D 1986
%T A taste of Smalltalk
%I W.W. Norton
%C New York, NY

%A Kang, A.N.C.
%A Lee, R.C.T.
%A Chang, C-L.
%A Chang, S-K.
%D 1977
%T Storage reduction through minimal spanning trees and spanning forests
%J IEEE Trans Computers
%V C-26
%N 5
%P 425-434
%O May
%K *

%A Kawaguchi, E.
%A Endo, T.
%D 1980
%T On a method of binary-picture representation and its application to data compression
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-2
%N 1
%P 27-35
%O January
%K *

%A Kawaguchi, E.
%A Endo, T.
%A Matsunaga, J.I.
%D 1983
%T Depth-first picture expression viewed from digital picture processing
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-5
%N 4
%P 373-384
%O July
%K *

%A Kelley, J.F.
%A Chapanis, A.
%D 1982
%T How professional persons keep their calendars: implications for computerization
%J J Occupational Psychology
%V 55
%P 241-256
%K *

%A Kennedy, H.C.\0(Editor)
%D 1980
%T Selected works of Guiseppe Peano
%I Allen and Unwin
%C Winchester, MA

%A Keye, M.
%D 1984
%T Technique for real time pitch period estimation
%R Submitted to \fIElectronics Letters\fP
%K *

%A Kidd, A.L.
%A Cooper, M.B.
%D 1985
%T Man-machine interface issues in the construction and use of an expert system
%J IJMMS
%V 22
%P 91-102
%K *

%A Kigger, J.
%D 1984
%T The depth/breadth trade-off in the design of menu-driven user interfaces
%J IJMMS
%V 20

%A Klir, G.J.
%A Parviz, B.
%D 1985
%T General reconstruction characteristics of probabilistic and possibilistic systems
%R Research Report
%K *

%A Knuth, D.E.
%A Plass, M.F.
%D 1981
%T Breaking paragraphs into lines
%J Software -- Practice and Experience
%V 11
%P 1119-1184

%A Knuth, D.E.
%D 1983
%T The WEB system of structured documentation
%R Report STAN-CS-83-980
%I Computer Science Department, University of Stanford
%C Stanford, CA

%A Knuth, D.E.
%D 1984
%T Literate programming
%J Computer J
%V 27
%N 2
%P 97-111
%K *

%A Kolata, G.
%D 1986
%T Shakespeare's new poem: an ode to statistics
%J Science
%V 231
%P 335-336
%O 24 January

%A Kolodner, J.
%D 1983
%T Towards an understanding of the role of experience from novice to expert
%J IJMMS
%V 19
%K *

%A Kolodner, J.L.
%D 1983
%T Reconstructive memory: a computer model
%J Cognitive Science
%V 7
%P 281-328
%K *

%A Kolodner, J.L.
%D 1983
%T Maintaining organization in a dynamic long-term memory
%J Cognitive Science
%V 7
%P 243-280
%K *

%A Konopasek, M.
%A Jayaraman, S.
%D 1984
%T Expert systems for personal computers: the TK!Solver approach
%J Byte
%P 137-156
%O May
%K *

%A Koontz, H.
%A O'Donnell, C.
%D 1972
%T Principles of management: an analysis of managerial functions
%I McGraw Hill

%A Korein, J.
%A Badler, N.
%D 1983
%T Temporal anti-aliasing in computer generated animation
%J Computer Graphics
%V 17
%N 3
%P 377-388
%O July
%K *

%A Kornfeld, W.A.
%A Hewitt, C.E.
%D 1981
%T The scientific community metaphor
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-11
%N 1
%P 24-33
%O January
%K *

%A Kowalski, R.
%D 1983
%T Logic for expert systems
%J Proc Expert Systems 83
%I Churchill College
%C Cambridge, England
%P 80-93
%O December
%K *

%A Kraut, R.E.
%A Hanson, S.J.
%A Farber, J.M.
%D 1983
%T Command use and interface design
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 120-123
%C Boston, MA
%O December 12-15
%K *

%A Klir, G.J.
%D 1985
%T Architecture of systems problem solving
%I Plenum Press
%C New York, NY

%A Kunin, J.S.
%D 1982
%T Analysis and specification of office procedures
%R PhD Thesis
%I Department of Electrical Engineering and Computer Science, MIT
%O February

%A Lamb, M.
%A Buckley, V.
%D 1984
%T New techniques for gesture-based dialogue
%J Proc 1st IFIP Conference on Human-Computer Interaction
%C London, England
%O 4-7 September
%K *

%A Langdon, G.G
%D 1981
%T Tutorial on arithmetic coding
%R Research Report RJ3128
%I IBM Research Laboratory
%C San Jose, CA
%K *

%A Langdon, G.G
%D 1984
%T An introduction to arithmetic coding
%J IBM J Research and Development
%V 28
%N 2
%P 135-149
%O March
%K *

%A Langdon, G.G
%D 1983
%T A note on the Ziv-Lempel model for compressing individual sequences
%J IEEE Trans Information Theory
%V IT-30
%P 284-287
%O March
%K *

%A Langdon, G.G.
%A Rissanen, J.J.
%D 1983
%T A doubly-adaptive file compression algorithm
%J IEEE Trans Communications
%V COM-31
%N 11
%P 1253-1255
%O November
%K *

%A Langdon, G.G.
%A Rissanen, J.J.
%D 1982
%T A simple general binary source code
%J IEEE Trans Information Theory
%V IT-28
%P 800-803
%O September

%A Langley, P.
%D 1983
%T Learning search strategies through discrimination
%J IJMMS
%V 18
%P 513-541
%K *

%A Lansky, A.L.
%D 1985
%T Behavioral planning for multi-agent domains
%R NSF Proposal
%I SRI International
%K *

%A Latremouille, S.
%A Lee, E.
%D 1981
%T The design of videotex tree indexes: the use of descriptors and the enhancement of single index pages
%J Telidon Behavioural Research
%V 2
%I Department of Communications
%O May

%A Lauer, H.C.
%A Needham, R.M.
%D 1977
%T On the duality of operating system structures
%J Operating Systems: Theory and Practice
%K *

%A Lazowska, E.D.
%A Levy, H.M.
%A Almes, G.T.
%A Fischer, M.J.
%A Fowler, R.J.
%A Vestal, S.C.
%D 1981
%T The architecture of the Eden system
%J Proc Eighth Symposium on Operating System Principles
%P 148-159
%C Pacific Grove, CA
%O December
%K *

%A Lebowitz, M.
%D 1980
%T Generalization and memory in an integrated understanding system
%R PhD Thesis
%I Yale University
%C New Haven, CT

%A Lebowitz, M.
%D 1981
%T The nature of generalization in understanding
%J Proc IJCAI 81
%P 348-353
%K *

%A Lebowitz, M.
%D 1983
%T Generalization from natural language text
%J Cognitive Science
%V 7
%P 1-40
%K *

%A Lee, A.
%A Lochovsky, F.H.
%D 1983
%T Enhancing the usability of an office information system through direct manipulation
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 130-134
%C Boston, MA
%O December 12-15
%K *

%A Lee, D.T.
%D 1982
%T On \fIk\fP-nearest neighbor Voroni diagrams in the plane
%J IEEE Trans Computers
%V C-31
%N 6
%P 478-487
%O June
%K *

%A Lee, D.T.
%A Preparata, F.P.
%D 1984
%T Computational geometry -- a survey
%J IEEE Trans Computers
%V C-33
%N 12
%P 1072-1101
%O December

%A Lefebvre, V.A.
%D 1977
%T The structure of awareness
%I Sage Publications
%C Beverly Hills, CA
%O (english translation by A.Rapoport)

%A Lehar, A.F.
%A Stevens, R.J.
%D 1984
%T High-speed manipulation of the color chromaticity of digital images
%J IEEE Computer Graphics and Applications
%P 34-39
%O February
%K *

%A Lehnert, W.G.
%D 1977
%T A conceptual theory of question answering
%J Proc International Joint Conference on Artificial Intelligence
%I MIT
%C Cambridge, MA
%P 158-164
%O August

%A Lehnert, W.G.
%D 1978
%T The process of question answering
%I Lawrence Erlbaum Associates
%C Hillsdale, NJ
%K *

%A Lehnert, W.G.
%A Dyer, M.G.
%A Johnson, P.N.
%A Yang, C.J.
%A Harley, S.
%D 1983
%T BORIS: an experiment in in-depth understanding of narratives
%J Artificial Intelligence
%V 20
%P 15-62
%K *

%A Lemer, L.
%D 1974
%T A.R.T.H.U.R. The life and opinions of a digital computer
%I Harvester Press
%C Sussex, England

%A Lempel, A.
%A Ziv, J.
%T Compression of two-dimensional data
%K *

%A Lenat, D.
%D 1983
%T The role of heuristics in learning by discovery: three case studies
%B Machine learning
%E R.S. Michalski, J.G. Carbonell, and T.M. Mitchell
%I Tioga
%P 243-306

%A Lenat, D.B.
%A Sutherland, W.R.
%A Gibbons, J.
%D 1982
%T Heuristic search for new microcircuit structures: an application of artificial intelligence
%J AI Magazine
%P 17-33
%O Summer
%K *

%A Lenat, D.B.
%D 1983
%T EURISKO: a program that learns new heuristics and domain concepts
%J Artificial Intelligence
%V 21
%P 61-98
%K *

%A Lenat, D.B.
%A Brown, J.S.
%D 1984
%T Why AM and EURISKO appear to work
%J Artificial Intelligence
%V 23
%P 269-294

%A Lenat, D.B.
%A Prakesh, M.
%A Shepherd, M.
%D 1986
%T CYC: using common sense knowledge to overcome brittleness and knowledge acquisition bottlenecks
%J The AI Magazine
%P 65-85
%O Winter
%K *

%A Lewis, J.
%D 1963
%T Typography: basic principles.  Influences and trends since the 19th century
%I Van Nostrand Reinhold
%C New York, NY

%A Lewis, J.W.
%D 1983
%T An effective graphics user interface for rules
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 139-143
%C Boston, MA
%O December 12-15
%K *

%A Lewis, J.M.
%T Analysing the action of UNIX-users
%D 1986
%O March
%I University of Edinburgh, Department of Artificial Intelligence
%K *

%A Li, D.Y.
%A Heath, F.G.
%D 1983
%T ILEX: an intelligent relational database system
%J Proc ACM Conference on Personal and Small Computers
%C San Diego, CA
%P 245-252
%O December
%K *

%A Liang, F.M.
%D 1983
%T Word hy-phen-a-tion by com-put-er
%R PhD Thesis
%I Computer Science Department, Stanford University
%C Stanford, CA
%K *

%A Lieberman, H.
%D 1978
%T How to color in a coloring book
%J Proc SIGGRAPH 78
%P 111-116
%K *

%A Lieberman, H.
%D 1984
%T Seeing what your programs are doing
%J IJMMS
%V 21
%N 4
%P 311-331
%O October

%A Linde, Y.
%A Buzo, A.
%A Gray, R.M.
%D 1980
%T An algorithm for vector quantizer design
%J IEEE Trans Communications
%V COM-28
%N 1
%P 84-95
%O January
%K *

%A Linington, P.F.
%D 1983
%T Fundamentals of the layer service definitions and protocol specifications
%J Proc IEEE
%V 71
%N 12
%P 1341-1345
%O December

%A Ljolje, A.
%A Fallside, F.
%D 1986
%T Synthesis of natural sounding pitch contours in isolated utterances using hidden Markov models
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-34
%N 5
%P 1074-1079
%O October
%K *

%A Lloyd, J.W.
%D 1984
%T Foundations of logic programming
%I Springer-Verlag
%C Berlin

%A Lowrance, R.
%A Wagner, R.A.
%D 1975
%T An extension of the string-to-string correction problem
%J J ACM
%V 22
%N 2
%P 177-183
%O April
%K *

%A Lozano-Perez, T.
%A Wesley, M.A.
%D 1979
%T An algorithm for planning collision-free paths among polyhedral obstacles
%J Comm ACM
%V 22
%N 10
%P 560-570
%O October
%K *

%A Lozano-Perez, T.
%D 1981
%T Automatic planning of manipulator transfer movements
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-11
%N 10
%P 681-698
%O October

%A Lozano-Perez, T.
%D 1983
%T Robot programming
%J Proc IEEE
%V 71
%N 7
%P 821-841
%O July

%A Lu, M.I.
%A Chen, C.F.
%T Modified Huffman code
%R Research Report
%I Departmental of Electrical Engineering, Tatung Institute of Technology
%C Taipei, Taiwan
%K *

%A Lynch, T.J.
%D 1985
%T Data compression -- techniques and applications
%I Lifetime Learning Publications
%C Belmont, CA

%A MacMillan, S.A.
%D 1984
%T User models to personalize an intelligent agent
%R PhD Thesis
%I Stanford University

%A MacQueen, J.B.
%D 1967
%T Some methods for classification and analysis of multivariate observations
%J Proc 5th Berkeley Symposium on Mathematical Statistics and Probability
%V 1
%P 281-297

%A Maguire, M.
%D 1982
%T An evaluation of published recommendations on the design of man-computer dialogues
%J IJMMS
%V 16
%N 3
%P 237-261
%O April

%A Malcolm, M.
%A Dyment, D.
%D 1983
%T Experience designing the Waterloo Port user interface
%J Proc ACM Conference on Personal and Small Computers
%C San Diego, CA
%P 168-175
%O December
%K *

%A Mannos, J.L.
%A Sakrison, D.J.
%D 1974
%T The effects of a visual fidelity criterion on the encoding of images
%J IEEE Trans Information Theory
%V IT-20
%N 4
%O July
%K *

%A Mantei, M.
%D 1982
%T Disorientation behavior in person-computer interactions
%R PhD Thesis
%I University of Southern California
%C Los Angeles, CA

%A Maragos, P.A.
%A Schafer, R.W.
%A Mersereau, R.M.
%D 1984
%T Two-dimensional linear prediction and its application to adaptive predictive coding of images
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-32
%N 6
%P 1213-1229
%O December
%K *

%A Marchetti, C.
%D 1980
%T Society as a learning system: discovery, invention, and innovation cycles revisited
%J Technological Forecasting and Social Change
%V 18
%P 267-282
%K *

%A Martin, T.
%D 1980
%T Information retrieval
%B Human interaction with computers
%E Smith and Green
%I Academic Press
%C London, England
%P 161-175

%A Maslow, A.H.
%D 1954
%T Motivation and personality
%I Harper and Row
%C New York, NY

%A Maslow, A.H.
%D 1968
%T Toward a psychology of being
%I Van Nostrand Reinhold
%C New York, NY
%O second edition

%A Masrani, R.
%A Keenan, T.P.
%D 1984
%T Security and privacy in cellular telephone systems
%J Proc AFIPS Conference on Computer Security
%C Toronto, ON
%O September
%K *

%A Masrani, R.
%A Witten, I.H.
%D 1984
%T Natural language processing in object-oriented Prolog
%R Unpublished note
%O September

%A Mathews, M.V.
%D 1969
%T The technology of computer music
%I MIT Press

%A Maturana, H.R.
%D 1975
%T The organization of the living: a theory of the living organization
%J IJMMS
%V 7
%P 313-332

%A Maturana, H.R.
%A Varela, F.J.
%D 1980
%T Autopoiesis and cognition
%I D. Reidel
%C Dordrecht, Holland

%A Mazer, M.S.
%A Lochovsky, F.H.
%D 1984
%T Logical routing specification in office information systems
%J ACM Trans Office Information Systems
%V 2
%N 4
%P 303-330
%O October

%A McCarthy, J.
%D 1980
%T Circumscription -- a form of non-monotonic reasoning
%J Artificial Intelligence
%V 13
%P 27-39
%K *

%A McCracken, D.L.
%A Akscyn, R.M.
%D 1984
%T Experience with the ZOG human-computer interface system
%J IJMMS
%V 21
%N 4
%P 293-310
%O October

%A McCulloch, W.S.
%D 1954
%T Through the den of the metaphysician
%J British J Philosophy of Science
%V 5
%P 18-31

%A McDermott, J.
%A Steele, B.
%D 1981
%T Extending a knowledge-based system to deal with ad hoc constraints
%J Proc 7th International Joint Conference on Artificial Intelligence
%P 824-828

%A McDermott, J.
%T Artificial intelligence meets natural stupidity
%B Mind Design
%E J. Haugeland
%I MIT Press
%C Cambridge, MA
%P 143-160
%K *

%A McDermott, J.
%D 1982
%T A temporal logic for reasoning about processes and plans
%J Cognitive Science
%V 6
%P 101-155
%K *

%A McDonald, D.
%D 1977
%T Language generation: the linguistics component
%J Proc International Joint Conference on Artificial Intelligence
%P 142
%K *

%A McDonald, D.D.
%A Pustejovsky, J.D.
%D 1985
%T Description-directed natural language generation
%J Proc IJCAI
%P 799-805
%K *

%A McKeown, K.R.
%A Wish, M.
%A Matthews, K.
%T Tailoring explanations for the user
%J Proc IJCAI
%P 794-798
%K *

%A McLean, R.S.
%D 1983
%T Ontario Ministry of Education specifies its microcomputer
%J Proc 4th Canadian Symposium on Instructional Technology
%C Winnipeg, MN
%O October 19-21
%K *

%A Meehan, J.R.
%D 1977
%T TALESPIN, an interactive program that writes stories
%J Proc 5th International Joint Conference on Artificial Intelligence
%P 91-98

%A Mervis, C.B.
%A Rosch, E.
%D 1981
%T Categorization of natural objects
%J Annual Review of Psychology
%V 32
%P 89-115

%A Michaelsen, R.H.
%A Michie, D.
%A Boulanger, A.
%D 1985
%T The technology of expert systems
%J Byte
%P 303-312
%O April
%K *

%A Miller, P.L.
%D 1983
%T ATTENDING: critiquing a physician's management plan
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-5
%N 5
%P 449-461
%O September
%K *

%A Mitchell, T.M.
%D 1982
%T Generalization as search
%J Artificial Intelligence
%V 18
%P 203-226
%K *

%A Mitchell, T.M.
%D 1983
%T Learning and problem solving
%J Proc IJCAI 83
%P 1139-1151
%C Karlsruhe, W.Germany
%O August
%K *

%A Moffat, A.
%D 1986
%T Predictive text compression based on the future rather than the past
%R Research Report
%I Computer Science Department, University of Canterbury
%C Christchurch, New Zealand
%K *

%A Moher, T.G.
%D 1985
%T Estimating the distribution of software complexity \fIwithin\fP a program
%J Proc Human Factors in Computer Systems
%C San Francisco, CA
%P 61-64
%O April
%K *

%A Mooney, R.
%A de\|Jong, G.
%T Learning schemata for natural language processing
%J Proc IJCAI
%P 681-687
%K *

%A Morison, S.
%D 1951
%T First principles of typography
%I Cambridge University Press
%C Cambridge, England

%A Morrin, T.H.
%D 1974
%T A black-white representation of a gray-scale picture
%J IEEE Trans Computers
%V C-23
%P 184-186
%O February
%K *

%A Morris, R.
%A Cherry, L.L.
%D 1975
%T Computer detection of typographical errors
%J IEEE Trans Professional Communications
%V PC-18
%N 1
%P 54-56
%O March
%K *

%A Morris, R.
%A Thompson, K.
%D 1979
%T Password security: a case history
%J Comm ACM
%V 22
%N 11
%P 594-597
%O November
%K *

%A Moses, J.
%D 1971
%T Symbolic integration: the stormy decade
%J Comm ACM
%V 14
%N 8
%P 548-560

%A Mullen, J.
%D 1984
%T Unlimited vocabulary speech synthesis with low data rates
%J Electronics and Power
%P 850-852
%O November/December
%K *

%A Mycielski, J.
%D 1985
%T Can mathematics explain natural intelligence?
%R Research Report UC-32
%I Los Alamos National Laboratory
%C Los Alamos, NM
%O July
%K *

%A Mycroft, A.
%A O'Keefe, R.A.
%D 1984
%T A polymorphic type system for Prolog
%J Artificial Intelligence
%V 23
%P 295-307
%K *

%A Myers, B.A
%D 1986
%T Visual programming, programming by example, and program visualization: a taxonomy
%J Proc ACM CHI 86 Human Factors in Computing Systems
%P 59-66
%C Boston, MA
%O April 13-17
%K *

%A Nagy, G.
%A Wagle, S.
%D 1979
%T Geographic data processing
%J Computing Surveys
%V 11
%N 2
%P 139-181
%O June
%K *

%A Nagy, G.
%A Paton, K.
%D 1982
%T Intelligent facsimile
%P Proc Harvard Computer Graphics Week
%I Graduate School of Design, Harvard University
%K *

%A Nagy, G.
%D 1983
%T Candide's practical principles of experimental pattern recognition
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-5
%N 2
%P 199-200
%O March
%K *

%A Nagy, G.
%D 1983
%T Optical scanning devices
%J IEEE Computer
%P 13-24
%O May
%K *

%A Nagy, G.
%A Seth, S.
%T Hierarchical image representation with application to optically scanned documents
%R Discussion paper
%K *

%A Nagy, G.
%D 1984
%T Advances in information extraction techniques
%J Remote Sensing of Environment
%V 15
%P 167-175
%K *

%A Naiman, A.
%D 1984
%T Some new ingredients for the cookbook approach to anti-aliased text
%J Proc Graphics Interface 84
%I National Computer Graphics Association of Canada
%P 99-108
%O May

%A Nakatani, L.H.
%A Rohrlich, J.A.
%D 1983
%T Soft machines: A philosophy of user-computer interface design
%J Proceedings Human Factors in Computer Systems
%C Boston, MA
%O December 12-15
%K *

%A Nasanen, R.
%D 1984
%T Visibility of halftone dot textures
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-14
%N 6
%P 920-924
%O November/December
%K *

%A Nau, D.S.
%D 1983
%T Expert computer systems
%J IEEE Computer
%V 16
%N 2
%P 63-85
%O February

%A Neal, R.M.
%A Lomow, G.A.
%A Peterson, M.W.
%A Unger, B.W.
%A Witten, I.H.
%D 1984
%T Inter-process communication in a distributed programming environment
%J Proc Canadian Information Processing Society Conference
%C Calgary, AL
%P 361-364
%O May
%K KConference

%A Nelson, G.A.
%A Pfeifer, L.L.
%A Wood, R.C.
%D 1972
%T High-speed octave band digital filtering
%J IEEE Trans Audio and Electroacoustics
%V AU-20
%P 58-65
%O March
%K *

%A Niblett, B.\0(Editor)
%D 1980
%T Computer science and law
%I Cambridge University Press
%C Cambridge, England

%A Nicol, R.C.
%A Fenn, B.A.
%A Turkington, R.D.
%D 1980
%T Transmission techniques for picture viewdata
%J Proc International Broadcasting Convention
%K *

%A Nicholson, R.T.
%D 1985
%T Usage patterns in an integrated voice and data communications system
%J ACM Trans Office Information Systems
%V 3
%N 3
%P 307-314
%O July

%A Nierstrasz, O.M.
%D 1985
%T An object-oriented system
%E D.Tsichritzis
%B Office automation
%I Springer-Verlag
%C Berlin
%P 167-189

%A Nilsson, N.J.
%D 1986
%T Probabilistic logic
%J Artificial Intelligence
%V 28
%P 71-87

%A Nilsson, N.J.
%D 1980
%T Principles of artificial intelligence
%I Tioga
%C Palo Alto, CA

%A Nilsson, N.J.
%D 1980
%T The interplay between experimental and theoretical methods in artificial intelligence
%R Technical Note 229
%I SRI International
%O September
%K *

%A Nilsson, N.J.
%D 1981
%T Artificial intelligence: engineering, science, or slogan?
%R Technical Note 248
%I SRI International
%O July
%K *

%A Nix, R.
%D 1983
%T Editing by example
%R PhD Dissertation
%I Computer Science Department, Yale University
%C New Haven, CT

%A Nix, R.
%D 1984
%T Editing by example
%J Proc 11th ACM Symposium on Principles of Programming Languages
%C Salt Lake City, UT
%P 186-195
%O January

%A Noakes, P.D.
%A Aish, R.
%D 1984
%T A new peripheral for three-dimensional computer input
%J IEEE Micro
%V 4
%N 5
%P 26-35
%O October

%A Nooteboom, S.G.
%D 1983
%T The temporal organization of speech and the process of spoken-word recognition
%J IPO Annual Progress Report
%V 18
%P 32-36
%K *

%A Norman, D.A.
%D 1981
%T The trouble about Unix
%J Datamation
%V 27
%N 12
%P 139-150

%A Norman, D.A.
%D 1984
%T Stages and levels in human-machine interaction
%J IJMMS
%V 21
%N 4
%P 365-375
%O October

%A Norman, D.A.
%A Draper, S.W.\0(Editors)
%D 1986
%T User centered system design \(em new perspectives on human-computer interaction
%I Lawrence Erlbaum Associates
%C Hillsdale, NJ

%A Norman, K.L.
%A Weldon, L.J.
%A Shneiderman, B.
%D 1985
%T Cognitive representations of windows and multiple screen layouts of computer interfaces
%R Research Report CAR-TR-123, CS-TR-1498
%I Computer Science Department, University of Maryland
%O May

%A Null, A.
%D 1971
%T Space-filling curves or how to waste time with a plotter
%J Software -- Practice and Experience
%V 1
%P 403-410
%K *

%A Oren, T.I.
%A Brzozowski, J.A.
%A Gilmore, P.C.
%D 1982
%T Crisis in Canadian academic Computer Science: facts and recommendations
%R Report prepared by the Executive Committee of Canadian Computer Science Departments Chairmen
%O January

%A O'Shea, T.
%A Self, J.
%D 1983
%T Learning and teaching with computers: artificial intelligence in education
%I Prentice-Hall
%C Englewood Cliffs, NJ

%A O'Shea, T.
%A Eisenstadt, M.\0(Editors)
%D 1984
%T Artificial intelligence: tools, techniques, and applications
%I Harper and Row
%C New York, NY

%A Ogawa, Y.
%A Shima, K.
%A Sugawara, T.
%A Takagi, S.
%D 1984
%T Knowledge representation and inference environment: KRINE -- an approach to integration of frame, Prolog and graphics
%J Proc International Conference on Fifth Generation Computer Systems
%I ICOT
%P 643-651
%K *

%A Pake, G.E.
%D 1985
%T Research at Xerox PARC: a founder's assessment
%J IEEE Spectrum
%V 22
%N 10
%P 54-61
%O October

%A Paliwal, K.K.
%A Espeland, O.
%D 1983
%T Some considerations about the shape of the window filter in an adaptive gradient lattice algorithm
%R Report
%I Division of Telecommunications, University of Trondheim
%C Trondheim-NTH, Norway
%K *

%A Papamichalis, P.E.
%D 1985
%T Markov-Huffman coding of LPC parameters
%J IEEE Trans Acoustics, Speech and Signal Processing
%C ASSP-33
%N 2
%P 451-453
%O April

%A Park, O.C.
%A Tennyson, R.D.
%D 1983
%T Computer-based instructional systems for adaptive education: a review
%J Contemporary Education Review
%V 2
%N 2
%P 121-135
%O Fall
%K *

%A Parker-Rhodes, A.F.
%D 1978
%T Inferential semantics
%I Harvester Press
%C Brighton, Sussex

%A Patil, R.S.
%A Szolovits, P.
%A Schwartz, W.B.
%D 1981
%T Causal understanding of patient illness in medical diagnosis
%J Proc 7th International Joint Conference on Artificial Intelligence
%P 893-899
%K *

%A Patil, R.S.
%A Szolovits, P.
%A Schwartz, W.B.
%T Information acquisition in diagnosis
%J Proc International Joint Conference on Artificial Intelligence
%P 345-348
%K *

%A Patten, T.
%D 1986
%T Interpreting systemic grammar as a computational representation: a problem solving approach to text generation
%R PhD Thesis
%I University of Edinburgh

%A Paulus, E.
%D 1980
%T The concept of the NN-error risk with respect to an arbitrary separating surface and its applications to clustering
%J Proc IEEE Conference
%K *

%A Pavlidis, T.
%D 1981
%T Contour filling in raster graphics
%J ACM Computer Graphics
%V 15
%N 3
%P 29-36
%O August
%K *

%A Pawlak, Z.
%D 1982
%T Rough sets
%J Int J Computer and Information Systems
%V 11
%N 5
%P 341-356
%K *

%A Pawlak, Z.
%D 1985
%T Rough sets and fuzzy sets
%J Fuzzy Sets and Systems
%P 99-103
%K *

%A Paxton, A.L
%A Turner, E.J.
%D 1984
%T The application of human factors to the needs of the novice computer user
%J IJMMS
%V 20
%N 2
%P 137-156
%O February

%A Peano, G.
%D 1890
%T Sur une courbe, qui remplit toute une aire plane
%J Math Annalen
%V 36
%P 157-160
%K *

%A Pearl, J.
%D 1985
%T Fusion, propagation, and structuring in Bayesian networks
%R Technical Report CSD-850022 R-42, Revision I
%I Cognitive Systems Laboratory, Computer Science Department, UCLA
%O June

%A Pearl, J.
%D 1986
%T Fusion, propagation, and structuring in belief networks
%J Artificial Intelligence
%V 29
%N 3
%P 241-288
%O September

%A Peng, X.T.
%A Tu, X.C.
%A Wang, P.Z.
%D 1986
%T Studies on parametric fuzzy controllers
%R Research Report
%K *

%A Pereiro, L.M.
%A Nagr, R.
%D 1984
%T Delta-Prolog: a distributed logic programming language
%R Submitted to Int Conference on 5th Generation Systems
%C Tokyo, Japan
%O November 
%K *

%A Perlman, G.
%D 1981
%T Two papers in cognitive engineering: The design of an interface to a programming system, and MENUNIX: a menu-based interface to Unix (user manual)
%R Research Report 8105
%I Center for Human Information Processing, University of California
%C San Diego, CA
%O November
%K *

%A Perlman, G.
%D 1984
%T Natural artificial languages: low-level processes
%J IJMMS
%V 20
%N 4
%P 373-419
%O April

%A Perry, T.S.
%A Wallich, P.
%D 1985
%T Inside the PARC: the `information architects'
%J IEEE Spectrum
%V 22
%N 10
%P 62-75
%O October

%A Peters, A.M.
%D 1983
%T The units of language acquisition
%I Cambridge University Press
%C Cambridge, England

%A Phillips, J.
%D 1983
%T Self-describing programming environments
%R PhD Thesis
%I Computer Science Department, Stanford University
%C Stanford, CA

%A Pierce, J.R.
%D 1962
%T Symbols, signals and noise
%I Hutchinson
%C London, England

%A Pike, R.
%D 1983
%T Graphics in overlapping bitmap layers
%J ACM Trans Graphics
%V 2
%N 2
%P 135-160
%O April
%K *

%A Poggio, A.
%A Garcia Luna Aceves, J.J.
%A Craighill, E.J.
%A Moran, D.
%A Aguilar, L.
%A Worthington, D.
%A Hight, J.
%D 1985
%T CCWS: a computer-based, multimedia information system
%J IEEE Computer
%V 18
%N 10
%P 92-103
%O October

%A Poritz, A.B.
%D 1982
%T Linear predictive hidden Markov models and the speech signal
%J Proc 
%P 1291-1294
%K *

%A Post, E.
%D 1983
%T Real programmers don't use Pascal
%J Datamation
%P 263-265
%O July
%K *

%A Postel, J.B.
%D 1980
%T Internetwork protocol approaches
%J IEEE Trans Communications
%V COM-28
%N 4
%P 604-611
%O April
%K *

%A Potmesil, M.
%A Chakravarty, I.
%D 1983
%T Modeling motion blur in computer-generated images
%J ACM Computer Graphics
%V 17
%N 3
%P 389-399
%O July
%K *

%A Poulton, A.S.
%D 1983
%T Microcomputer speech synthesis and recognition
%I Sigma Technical Press
%C Wilmslow, Cheshire, UK

%A Preucil, M.
%A Sebela, Z.
%D 1982
%T Computer-assisted simulation of a coal-mine winding system
%J Proc 4th Formator Symposium on Mathematical Methods for the Analysis of Large-scale Systems
%C Prague
%P 391-404
%O May 18-21
%K *

%A Prusinkiewicz, P.
%A Christopher, M.
%D 1984
%T Hologram-like transmission of pictures
%R Technical Report CS-84-17
%I Computer Science Department, University of Regina
%O November
%K *

%A Purvy, R.
%A Farrell, J.
%A Klose, P.
%D 1983
%T The design of Star's records processing: data processing for the noncomputer professional
%J ACM Trans Office Information Systems
%V 1
%N 1
%P 3-24
%O January
%K *

%A Quinlan, J.R.
%D 1983
%T Inferno: a cautious approach to uncertain inference
%J Computer J
%V 26
%N 3
%P 255-269

%A Qureshi, S.U.H.
%D 1985
%T Adaptive equalization
%J Proc IEEE
%V 73
%N 9
%P 1349-1387
%O September

%A Rabiner, L.R.
%A Crochiere, R.E.
%D 1975
%T A novel implementation for narrow-band FIR digital filters
%J IEEE Trans Acoustics, Speech and Signal Processing
%V ASSP-23
%N 5
%P 457-464
%O October
%K *

%A Radhakrishnan, T.
%A Grossner, C.P.
%D 1985
%T Cuenet \(em a distributed computing facility
%J IEEE Micro
%P 42-52
%O February
%K *

%A Raeder, G.
%D 1985
%T A survey of current graphical programming techniques
%J IEEE Computer
%V 18
%N 8
%P 11-25

%A Rashid, R.F.
%D 1980
%T An interprocess communication facility for Unix
%R Technical Report
%I Computer Science Department, Carnegie-Mellon University
%O February

%A Rashid, R.F.
%A Robertson, G.G.
%D 1981
%T Accent: a communication oriented network operating system kernel
%J Proc Eighth Symposium on Operating System Principles
%P 64-75
%C Pacific Grove, CA
%O December

%A Rasmussen, J.
%D 1983
%T Skills, rules, and knowledge; signals, signs, and symbols, and other distinctions in human performance models
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-13
%N 3
%P 257-266
%O May/June
%K *

%A Rassbach, M.E.
%D 1980
%T CLASSY: an adaptive clustering algorithm
%J Proc IEEE Conference
%P 442-444
%K *

%A Rawlings, C.
%A Fox, J.
%D 1983
%T The UNIT package -- a critical appraisal of a frame-based knowledge representation system
%J Proc Expert Systems 83
%I Churchill College
%C Cambridge, England
%P 15-29
%O December
%K *

%A Redell, D.D.
%A White, J.E.
%D 1983
%T Interconnecting electronic mail systems
%J IEEE Computer
%V 16
%N 9
%P 55-63
%O September
%K *

%A Reeds, J.A.
%A Weinberger, P.J.
%D 1984
%T File security and the UNIX system \fIcrypt\fP command
%J Bell System Technical J
%V 63
%N 8, part 2
%P 1673-1684
%O October

%A Reichardt, J.
%D 1971
%T The computer in art
%I Studio Vista
%C London, England

%A Reiter, R.
%D 1980
%T A logic for default reasoning
%J Artificial Intelligence
%V 13
%P 81-132
%K *

%A Reynolds, J.K.
%A Postel, J.B.
%A Katz, A.R.
%A Finn, G.C.
%A DeSchon, A.L.
%D 1985
%T The DARPA experimental multimedia mail system
%J IEEE Computer
%V 18
%N 10
%P 82-89
%O October

%A Rich, C.
%D 1982
%T Knowledge representation languages and predicate calculus: how to have your cake and eat it too
%J Proc National Conference on Artificial Intelligence
%P 193-196

%A Rich, E.
%D 1984
%T The gradual expansion of artificial intelligence
%J IEEE Computer
%V 17
%N 5
%P 4-12
%O May

%A Riesbeck, C.K.
%D 1975
%T Conceptual analysis
%B Conceptual information processing
%E R.C.Schank
%I North Holland
%C Amsterdam

%A Riesbeck, C.K.
%D 1981
%T Failure-driven reminding for incremental learning
%J Proc IJCAI 81
%P 115-120
%K *

%A Riesbeck, C.K.
%D 1982
%T Realistic language comprehension
%E W.G. Lenhert and M.H. Ringle
%B Strategies for natural language processing
%I Lawrence Erlbaum Associates
%P 37-54

%A Riesbeck, C.K.
%D 1984
%T Knowledge reorganization and reasoning style
%J IJMMS
%V 20
%P 45-61
%K *

%A Rissanen, J.
%A Langdon, G.G.
%T Arithmetic coding
%J IBM J Research and Development
%D 1979
%V 23
%N 2
%P 149-162
%O March
%K *

%A Rissanen, J.
%D 1984
%T Complexity of strings in the class of Markov sources
%R Research Report
%I IBM Research Laboratory
%C San Jose, CA
%K *

%A Rissanen, J.
%D 1986
%T Stochastic complexity and sufficient statistics
%R Research Report

%A Ritchie, D.M.
%D 1981
%T On the security of UNIX
%R Programmers Manual for UNIX System III Volume II: Supplementary Documents
%I Western Electric Corporation

%A Ritchie, G.D.
%A Hanna, F.K.
%D 1984
%T AM: a case study in AI methodology
%J Artificial Intelligence
%V 23
%P 249-268
%K *

%A Roberts, M.G.
%D 1982
%T Local order estimating Markovian analysis for noiseless source coding and authorship identification
%R PhD Thesis
%I Stanford University

%A Rogers, H.
%D 1943
%T Paragraphs on printing
%I William E. Rudges
%C New York, NY
%O re-published by Dover Publications, New York, 1979

%A Rosenthal, D.S.H.
%D 1982
%T Managing graphical resources
%J Computer Graphics
%V 16
%N 4
%P 38-45
%O December
%K *

%A Ross, P.
%A Jones, J.
%A Millington, M.
%D 1985
%T User modelling in command-driven computer systems
%R DAI Research Paper No 264
%I Department of Artificial Intelligence, University of Edinburgh
%K *

%A Rouse, S.H.
%A Rouse, W.B.
%D 1980
%T Computer-based manuals for procedural information
%J IEEE Trans Systems, Man and Cybernetics
%V SMC-10
%N 8
%P 506-510
%O August

%A Rowe, N.C.
%D 1984
%T Modelling degrees of item interest for a general database query system
%J IJMMS
%V 20
%N 5
%P 421-443
%O May
%K *

%A Runciman, C.
%A Thimbleby, H.
%D 1986
%T Equal opportunity interactive systems
%R Report
%I Computer Science Department, University of York
%C York 
%K *

%A Rychener, M.D.
%D 1979
%T A semantic network of production rules in a system for describing computer structures
%J Proc 6th Joint Conference on Artificial Intelligence
%P 738-743

%A Ryman, R.
%A Singh, B.
%D 1982
%T The Benesh notation computerized editor
%J Proc Dance in Canada Conference
%O June

%A Sagan, H.
%D 1986
%T Approximating polygons for Lebesgue's and Schoenberg's space filling curves
%J American Mathematical Monthly
%P 361-368
%O May
%K *

%A Sammut, C.
%A Banerji, R.
%D 1983
%T Hierarchical memories: an aid to concept learning
%J Proc International Machine Learning Workshop
%P 74-80
%I Allerton House
%C Monticello, IL
%O June 22-24
%K *

%A Sammut, C.
%A Banerji, R.
%D 1986
%T Learning concepts by asking questions
%B Machine learning Volume 2
%E R.S. Michalski, J.G. Carbonell, and T.M. Mitchell
%I Morgan Kaufmann Inc
%C Los Altos, CA
%P 167-191
%K *

%A Sandewall, E.
%T A functional approach to non-monotonic logic
%J Proc IJCAI
%P 100-106
%K *

%A Sakata, S.
%A Ueda, T.
%D 1985
%T A distributed interoffice mail system
%J IEEE Computer
%V 18
%N 10
%P 106-116
%O October

%A Samet, H.
%D 1983
%T A quadtree medial axis transform
%J Comm ACM
%V 26
%N 9
%P 680-693
%O September

%A Samet, H.
%D 1984
%T The quadtree and related hierarchical data structures
%J Computing Surveys
%V 16
%N 4
%P 187-260
%O June

%A Santisteban, A.
%D 1983
%T The perceptual color space of digital image display terminals
%J IBM J Research and Development
%V 27
%N 2
%P 127-132
%O March
%K *

%A Sawaragi, Y.
%A Yoshikawa
%D 1970
%T Discrete-time markovian decision processes with incomplete state observation
%J The Annals of Mathematical Statistics
%V 41
%N 1
%P 78-86
%K *

%A Schank, R.C.\0(Editor)
%D 1975
%T Conceptual information processing
%I North Holland

%A Schank, R.C.
%A Abelson, R.
%D 1977
%T Scripts, plans, goals and understanding
%I Lawrence Erlbaum Associates

%A Schank, R.C.
%D 1980
%T Language and memory
%J Cognitive Science
%V 4
%P 243-284
%K *

%A Schank, R.C.
%A Slade, S.
%T Advisory systems
%K *

%A Scharf, T.F.
%D 1984
%T Sounding out speech synthesis
%J Electronics and Power
%P 847-849
%O November/December
%K *

%A Schroeder, M.E.
%D 1969
%T Images from computers
%J IEEE Spectrum
%O March
%K *

%A Schulert, A.J.
%A Rogers, G.T.
%A Hamilton, J.A.
%D 1985
%T ADM \(em a dialog manager
%J Proc ACM CHI 85 Human Factors in Computing Systems
%P 177-183
%O April
%K *

%A Searle, J.R.
%D 1980
%T Minds, brains, and programs
%J Behavioral and Brain Sciences
%V 3
%P 417-457
%K *

%A Searle, J.R.
%D 1983
%T Intentionality
%I Cambridge University Press
%C Cambridge, England

%A Seely\|Brown, J.
%A Burton, R.R.
%A Bell, A.G.
%D 1975
%T SOPHIE \(em a step toward creating a reactive learning environment
%J IJMMS
%V 7
%N 5
%P 675-696
%O September

%A Segre, A.M.
%A Sherwood, B.A.
%A Dickerson, W.B.
%D 1983
%T An expert system for the production of phoneme strings from unmarked english text using machine induced rules
%J Proc Association for Computational Linguistics
%C Pisa, Italy
%O September
%K *

%A Selim, S.Z.
%A Ismail, M.A.
%D 1984
%T \fIK\fP-means-type algorithms: a generalized convergence theorem and characterization of local optimality
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-6
%N 1
%P 81-87
%O January
%K *

%A Sergot, M.
%T Prospects for representing the law as logic programs
%B In Clark and Tarnlund's book
%K *

%A Seybold
%D 1985
%T Apple Laserwriter
%J Seybold Report on Publishing Systems
%V 14
%N 9
%O January 28
%K *

%A Shafer, G.
%D 1976
%T A mathematical theory of evidence
%I Princeton University Press
%C Princeton, NJ

%A Shamos, M.I.
%A Hoey, D.
%D 1975
%T Closest-point problems
%J Proc 16th IEEE Symposium on Foundations of Computer Science
%P 151-162
%O October

%A Shamos, M.I.
%D 1977
%T Computational geometry
%I Springer-Verlag
%C New York, NY
%A Shannon, C.E.
%D 1948
%T A mathematical theory of communication
%J Bell System Technical J
%V 27
%P 398-403
%O July

%A Shannon, C.E.
%D 1951
%T Presentation of a maze-solving machine
%B Trans 8th Conference Josiah Macy Foundation
%E H.von Foerster
%C New York, NY
%P 173-192

%A Shannon, C.E.
%D 1951
%T Prediction and entropy of printed English
%J Bell System Technical J
%P 50-64
%O January
%K *

%A Shapiro, E.
%D 1983
%T A subset of concurrent Prolog and its interpreter
%R ICOT Technical Report TR-003
%O January
%K *

%A Shapiro, E.
%D 1983
%T Systems programming in concurrent Prolog
%R ICOT Technical Report TR-034
%O November
%K *

%A Shapiro, E.
%A Takeuchi, A.
%D 1983
%T Object oriented programming in concurrent Prolog
%J New Generation Computing
%V 1
%P 25-48
%K *

%A Shaw, M.L.G.
%A Gaines, B.R.
%D 1983
%T Does the human component in the network have a protocol?
%J Proc International Electrical, Electronics Conference
%V 2
%P 546-549
%C Toronto, ON
%O September 26-28
%K *

%A Shaw, M.L.G
%A Gaines, B.R.
%D 1985
%T Knowledge engineering tools for expert systems
%B Computer models for decision making
%E G.Mitra
%I North Holland
%C Amsterdam
%K *

%A Shneiderman, B.
%D 1984
%T Response time and display rate in human performance with computers
%J Computing Surveys
%V 16
%N 3
%P 265-285
%O September

%A Shneiderman, B.
%A Norman, K.
%A Rogers, J.
%A Arifin, R.
%A Weldon, L.
%D 1985
%T A multi-screen programmer work station based on the IBM PC
%R Research Report
%I Computer Science Department, University of Maryland
%O April

%A Shoch, J.F.
%A Hupp, J.A.
%D 1982
%T The `worm' programs \(em early experience with a distributed computation
%J Comm ACM
%V 25
%N 3
%P 172-180
%O March
%K *

%A Shoemake, K.
%T Animating rotation with quaternion curves
%D 1985
%J ACM
%V 19
%N 3
%O July
%K *

%A Shortliffe, E.H.
%A Buchanan, B.G.
%D 1975
%T A model of inexact reasoning in medicine
%J Mathematical Biosciences
%V 23
%P 351-379

%A Shortliffe, E.H.
%D 1976
%T Computer-based medical consultations: MYCIN
%I Elsevier Science
%C New York, NY
%K *

%A Shortliffe, E.H.
%D 1980
%T Consultation systems for physicians: the role of artificial intelligence techniques
%J Proc Canadian Society for Computational Studies of Intelligence
%I University of Victoria
%C Victoria, BC
%K *

%A Shrager, J.C.
%T Invoking a beginner's aid process by recognizing DCL goals
%D 1981
%R MSc Thesis
%I University of Pennsylvania

%A Shrager, J.C.
%A Finin, T.
%D 1982
%T An expert system that volunteers advice
%J Proc National Conference on Artificial Intelligence
%P 339-340
%K *
%K *

%A Shu, C.S.
%D 1985
%T FORMAL: A forms-oriented visual-directed application development system
%J IEEE Computer
%V 18
%N 8
%P 38-49

%A Sierpinski, W.
%D 1912
%T Sur une nouvelle courbe qui remplit toute une aire plaine
%J Bull Acad Sci Cracovie
%V Serie A
%P 462-478
%K *

%A Simons, G.L.
%D 1980
%T Robots in industry
%I National Computing Centre
%C Manchester, England

%A Simpson, R.J.
%A Terrell, T.J.
%D 1984
%T Digital filtering using the NEC PD7720 signal processor
%J Microprocessing and Microprogramming
%V 14
%P 67-78
%K *

%A Sleeman, D.
%D 1982
%T Assessing aspects of competence in basic algebra
%B Intelligent Tutoring Systems
%E D. Sleeman and J.S. Brown
%I Academic Press
%C London, England
%P 185-200

%A Sloman, A.
%A Croucher, M.
%D 1981
%T Why robots will have emotions
%J Proc 7th International Joint Conference on Artificial Intelligence
%V 1
%P 197-202
%C Vancouver, BC
%K *

%A Smith, K.
%D 1985
%T Watch out hackers, public encryption chips are coming
%J Electronics Week
%P 30-31
%O May 20
%K *

%A Smith, R.
%D 1979
%T Tint fill
%J Proc ACM Conference
%P 276-284
%K *

%A Solomon, H.
%D 1977
%T Data dependent clustering techniques
%B Classification and clustering
%E J. Van Ryzin
%I Academic Press
%C New York, NY
%P 155-173

%A Southall, R.
%D 1984
%T First principles of typographic design for document production
%J TUGBOAT (TEX Users Group Newsletter)
%V 5
%N 2
%P 79-90
%K *

%A Sowa, J.F.
%D 1983
%T Generating language from conceptual graphs
%B Computational Linguistics
%E N.Cercone
%P 29-43
%I Pergamon
%C Oxford, England
%K *

%A Sparck\|Jones, K.
%D 1984
%T User models and expert systems
%R Technical Report
%I Computer Laboratory, University of Cambridge
%C Cambridge, England
%K *

%A Spector, A.Z.
%D 1982
%T Performing remote operations efficiently on a local computer network
%J Comm ACM
%V 25
%N 4
%P 246-260
%O April
%K *

%A Spencer, H.
%D 1969
%T The visible word
%I Lund Humphries
%C London, England

%A Stankovic, J.A.
%D 1982
%T Software communication mechanisms: procedure call versus messages
%J IEEE Computer
%P 19-25
%O April
%K *

%A Stankovic, J.A.
%D 1984
%T A perspective on distributed computer systems
%J IEEE Trans Computers
%V C-33
%N 12
%P 1102-1115
%O December
%K *

%A Staunstrup, J.
%D 1982
%T Message passing communication versus procedure call communication
%J Software -- Practice and Experience
%V 12
%P 223-234
%K *

%A Stefik, M.
%D 1979
%T An examination of a frame-structured representation system
%J Proc 6th International Conference on Artificial Intelligence
%P 265-270
%K *

%A Stefik, M.
%A Conway, L.
%D 1982
%T Towards the principled engineering of knowledge
%J AI Magazine
%P 4-16
%O Summer
%K *

%A Stefik, M.
%A Bobrow, D.G.
%A Mittal, S.
%A Conway, L.
%D 1983
%T Knowledge programming in LOOPS: report on an experimental course
%J AI Magazine
%P 3-13
%O Fall
%K *

%A Stefik, M.J.
%A Bobrow, D.G.
%A Kahn, K.M.
%D 1986
%T Integrating access-oriented programming into a multiparadigm environment
%J IEEE Software
%P 10-18
%O January
%K *

%A Stefik, M.J.
%A Bobrow, D.G.
%D 1986
%T Object-oriented programming: themes and variations
%J AI Magazine
%V 6
%N 4
%P 40-62
%O Winter

%A Stevens, M.E.
%A Little, J.L.
%D 1967
%T Automatic typographic-quality typesetting techniques: a state-of-the-art review
%I National Bureau of Standards

%A Stevens, R.J.
%A Lehar, A.F.
%A Preston, F.H.
%D 1983
%T Manipulation and presentation of multi-dimensional image data using the Peano scan
%J IEEE Trans Pattern Analysis and Machine Intelligence
%P 520-
%O September

%A Stoffel, J.G.
%A Moreland, J.F.
%D 1981
%T A survey of electronic techniques for pictorial image reproduction
%J IEEE Trans Communications
%V COM-17
%N 12
%P 1898-1925
%O December
%K *

%A Stroustrup, B.
%D 1984
%T The C++ programming language
%R Computing Science Technical Report 108
%I Bell Laboratories
%C Murray Hill, NJ
%O January
%K *

%A Stroustrup, B.
%D 1984
%T Data abstraction in C
%R Computing Science Technical Report 109
%I Bell Laboratories
%C Murray Hill, NJ
%O January
%K *

%A Suchman, L.A.
%D 1982
%T Toward a sociology of human-machine interaction: pragmatics of instruction-following
%R Working Paper
%I Xerox PARC, (Intelligent Systems Laboratory)
%C Palo Alto, CA

%A Suchman, L.A.
%D 1982
%T Human-machine interaction and the idea of a self-explanatory machine
%J Paper presented at the Annual Meeting of the American Anthropological Society
%C Washington, DC
%O December
%K *

%A Suchman, L.A.
%D 1983
%T The role of common sense in interface design
%B Office Automation: Jekyll or Hyde
%E D.Marschall and J.Gregory
%I Working Women Education Fund
%C Cleveland, OH
%P 96-102

%A Suchman, L.A.
%D 1983
%T Office procedure as practical action: models of work and system design
%J ACM Trans Office Information Systems
%V 1
%N 4
%P 320-328
%O October
%K *

%A Suchman, L.A.
%D 1985
%T Plans and situated actions: the problem of human-machine communication
%R PhD Thesis
%I Xerox PARC
%C Palo Alto, CA
%K *

%A Sugeno, M.
%A Nishida, M.
%D 1984
%T Fuzzy control of model car
%K *

%A Summers, P.D.
%A Grossman, D.D.
%D 1984
%T XPROBE: an experimental system for programming robots by example
%J Int J Robotics Research
%V 3
%N 1
%P 25-39
%O Spring

%A Sussman, G.J.
%D 1975
%T A computer model of skill acquisition
%I American Elsevier
%C New York, NY

%A Tannenbaum, A.
%T Political history of UNIX
%R Report
%I MASSCOMP
%C Westford, MA 
%K *

%A Tanner, W.
%D 1979
%T Industrial robots -- Volume 1: Fundamentals
%I Society of Manufacturing Engineers
%C Dearborn, MI

%A Tennant, H.R.
%A Ross, K.M.
%A Thompson, C.W.
%D 1983
%T Usable natural language interfaces through menu-based natural language understanding
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 154-160
%C Boston, MA
%O December 12-15
%K *

%A Test, J.A.
%D 1982
%T The NUnix window system
%R Internal Report
%I Laboratory for Computer Science, MIT
%C Cambridge, MA
%K *

%A Thimbleby, H.
%D 1980
%T Dialogue determination
%J IJMMS
%V 13
%N 3
%P 295-304
%O October

%A Thomsett, R.
%D 1980
%T People and project management
%I Yourden Press
%C New York, NY

%A Thompson, B.A.
%A Thompson, W.A.
%D 1985
%T Inside an expert system
%J Byte
%P 315-330
%O April
%K *

%A Thompson, K.
%D 1984
%T Reflections on trusting trust
%J Comm ACM
%V 27
%N 8
%P 761-763
%O August

%A Ting, D.
%A Prasada, B.
%D 1980
%T Digital processing techniques for encoding of graphics
%J Proc IEEE
%V 68
%N 7
%P 757-769
%O July

%A Tokuda, H.
%A Manning, E.G.
%D 1983
%T An interprocess communication model for a distributed software testbed
%J Proc ACM SIGCOMM 83
%I University of Texas
%C Austin, TX
%O March
%K *

%A Tokuda, H.
%A Radia, S.P.
%A Manning. E.G.
%D 1983
%T Shoshin OS: a message-based operating system for a distributed software testbed
%J Proc 16th Annual Hawaii International Conference on System Sciences
%P 329-338
%K *

%A Tou, I.T.
%A Gonzalez, R.C.
%D 1974
%T Pattern recognition principles
%I Addison-Wesley
%C Reading, MA

%A Truin, P.G.M.
%D 1983
%T The `speaking tablet' as an aid in the acquisition of reading skills by dyslexic children
%J IPO Annual Progress Report
%V 18
%P 79-84
%K *

%A Tsichritzis, D.\0(Editor)
%D 1983
%T Beta Gamma
%R Technical Report CSRG-150
%I Computer Systems Research Group, University of Toronto
%C Toronto, ON

%A Tsichritzis, D.
%D 1985
%T Objectworld
%E D.Tsichritzis
%B Office automation
%I Springer-Verlag
%C Berlin
%P 379-398

%A Turkle, S.
%D 1982
%T The subjective computer: a study in the psychology of personal computation
%J Social Studies of Science
%V 12
%N 2
%P 173-205
%K *

%A Tyree, A.
%D 1986
%T Expert systems and the law
%J Current Affairs Bulletin
%P 13-18
%P March
%K *

%A Ulichney, R.A.
%A Troxel, D.E.
%D 1982
%T Scaling binary images with the telescoping template
%J IEEE Trans Pattern Analysis and Machine Intelligence
%V PAMI-4
%N 3
%P 331-335

%A Umphress, D.
%A Williams, G.
%D 1985
%T Identity verification through keyboard characteristics
%J IJMMS (submitted)
%K *

%A Unger, B.
%A Birtwistle, G.
%A Cleary, J.
%A Hill, D.
%A Lomow, G.
%A Neal, R.
%A Peterson, M.
%A Witten, I.H.
%A Wyvill, B.
%D 1984
%T Jade: a simulation and software prototyping environment
%J Proc Conference on Simulation in Strongly Typed Languages
%C San Diego, CA
%O February
%K KConference

%A Unger, B.W.
%A Lomow, G.A.
%A Birtwistle, G..
%D 1984
%T Simulation software and Ada
%I Society for Computer Simulation
%K *

%A University\|of\|Chicago\|Press
%D 1969
%T A manual of style
%I University of Chicago 

%A Uribe, R.B.
%D 1981
%T Modeling autopoiesis
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 51-62

%A Van\|Dijk, T.A.
%A Kintsch, W.
%D 1983
%T Strategies of discourse comprehension
%I Academic Press
%C New York, NY

%A Van\|Lehn, K.
%D 1983
%T Felicity conditions for human skill acquisition: validating an AI-based theory
%R Research Report CIS-21
%I Xerox PARC
%C Palo Alto, CA
%O November

%A Varela, F.J.
%A Maturana, H.R.
%A Uribe, R.B.
%D 1974
%T Autopoiesis: the organization of living systems, its characterization and a model
%J Biosystems
%V 5
%P 187-196

%A Varela, F.J.
%D 1979
%T Principles of biological autonomy
%I North Holland
%C New York, NY

%A Varela, F.J.
%D 1981
%T Describing the logic of the living
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 36-48

%A Wade, N.
%D 1985
%T Literal pictures
%J Word and  Image
%V 1
%N 3
%P 242-272
%O July-September
%K *

%A Wagner, R.A.
%A Fischer, M.J.
%D 1974
%T The string-to-string correction problem
%J J ACM
%V 21
%N 1
%P 168-173
%O January
%K *

%A Wall, R.S.
%A Apon, A.W.
%A Beal, J.
%A Gately M.T.
%A Oren, L.G.
%D 1985
%T An evaluation of commercial expert system building tools
%R Computer Science Laboratory Technical Report 85-30
%I Texas Instruments
%C Dallas, TX
%O November
%K *

%A Waltz, D.L.
%D 1975
%T Natural language access to a large data base
%J Advance papers of the International Joint Conference on Artificial Intelligence
%I MIT
%C Cambridge, MA

%A Waterman, D.A.
%D 1978
%T A rule-based approach to knowledge acquisition for man-machine interface programs
%J IJMMS
%V 10
%P 693-711
%K *

%A Waters, R.C.
%D 1985
%T The programmer's apprentice: a session with KBEmacs
%J IEEE Trans Software Engineering
%V SE-11
%N 11
%P 1296-1320
%O November
%K *

%A Webber, B.L.
%A Nilsson, N.J.
%D 1981
%T Readings in artificial intelligence
%I Tioga
%C Palo Alto, CA

%A Weinreb, D.
%A Moon, D.
%D 1981
%T LISP machine manual
%I Third edition
%O March

%A Weizenbaum, J.
%D 1976
%T Computer power and human reason
%I Freeman
%C San Francisco, CA

%A Welch, T.A.
%D 1984
%T A technique for high-performance data compression
%J IEEE Computer
%V 17
%N 6
%P 8-19
%O June
%K *

%A Weyer, S.A.
%D 1982
%T Searching for information in a dynamic book
%R PhD Thesis
%I School of Education, Stanford University
%O (Also Report SCG-82-1, Xerox Parc)

%A Whalen, T.
%A Mason, C.
%D 1981
%T The use of tree-structured index which contains three types of design defects
%J Telidon Behavioural Research
%V 2
%I Department of Communications
%O May

%A Whalen, T.
%A Latremouille, S.
%D 1981
%T The effectiveness of a tree-structured index when the existence of information is uncertain
%J Telidon Behavioural Research
%V 2
%I Department of Communications
%O May

%A Wijk, C.van
%A Kempen, G.
%D 1985
%T From sentence structure to intonation contour
%E B.S.Muller
%T Sprachsynthese: zur Synthese von naturlich gesprochener Sprache aus Texten und Konzepten
%I Georg Olms Verlag
%C Hildesheim
%K *

%A Wilensky, R.
%A Arens, Y.
%A Chin, D.
%D 1984
%T Talking to Unix in English: an overview of UC
%J Comm ACM
%V 27
%N 6
%P 574-593
%O June
%K *

%A Wilkes, A.J.
%A Singer, D.W.
%A Gibbons, J.J.
%A King, T.R.
%A Robinson, P.
%A Wiseman, N.E.
%D 1984
%T The Rainbow workstation
%J Computer J
%V 27
%N 2
%O May
%K *

%A Wilkes, A.J.
%A Wiseman, N.E.
%D 1982
%T A soft-edged character set and its derivation
%J Computer J
%V 25
%N 1
%P 140-147
%O February
%K *

%A Wilkinson, W.
%D 1980
%T Viewdata: The Prestel System
%B Videotext: the coming revolution in home/office information retrieval
%E Sigel, E.
%I Harmony Books
%C New York, NY
%P 57-86

%A Wilks, Y.
%D 1977
%T Good and bad arguments about semantic primitives
%R Research Report
%I Department of Artificial Intelligence, University of Edinburgh
%O May
%K *

%A Wilks, Y.
%D 1984
%T Beliefs, points of view and multiple environments
%B Artificial and human intelligence
%E A.Elithorn and R.Banerji
%I Elsevier Science
%P 147-171
%K *

%A Willems, NJ
%D 1983
%T STEP: A model of standard English intonation patterns
%J IPO Annual Progress Report
%V 18
%P 37-42
%K *

%A Williams, G.
%D 1984
%T The Apple Macintosh computer
%J Byte
%V 9
%N 2
%P 30-54
%O February

%A Winograd, T.
%D 1972
%T Understanding natural language
%I Academic Press
%C New York, NY

%A Winograd, T.
%D 1984
%T Moving the semantic fulcrum
%R Report CSLI-84-18
%I Center for the study of language and information, Stanford University
%C Stanford, CA
%O December
%K *

%A Witten, I.H.
%D 1983
%T The Department of Computer Science, University of Calgary
%J Computer Science Association Newsletter
%V 11
%N 1
%P 15-23
%O December
%K KArticle

%A Witten, I.H.
%A Cleary, J.G.
%D 1986
%T Foretelling the future by adaptive modeling
%J Abacus
%V 3
%N 3
%P 16-36
%O Spring
%K KArticle

%A Witten, I.H.
%A Fremont, D.
%D 1984
%T A student information service for a University Computer Science department
%J Proc 15th Ontario Universities Computing Conference
%I Lakehead University
%C Thunder Bay, ON
%O June
%K KInvited

%A Witten, I.H.
%D 1985
%T Elements of computer typography
%J IJMMS
%V 23
%N 6
%P 623-687
%O December
%K KJournal

%A Witten, I.H.
%A Bramwell, B.
%D 1985
%T A system for interactive viewing of structured documents
%J Comm ACM
%V 28
%N 3
%P 280-288
%O March
%K KJournal

%A Witten, I.H.
%D 1984
%T Dynamic documents
%J Proc PROTEXT I -- First International Conference on Text Processing Systems
%I Boole Press
%C Dublin, Ireland
%P 234-239
%O October
%K KConference

%A Witten, I.H.
%A Greenberg, S.
%D 1985
%T User interfaces for office systems
%B Oxford Surveys in Information Technology Volume 2
%E P.I. Zorkoczy
%I Oxford University Press
%C Oxford, England
%P 69-104
%K KJournal

%A Witten, I.H.
%D 1986
%T Making computers talk \(em an introduction to speech synthesis
%I Prentice-Hall
%C Englewood Cliffs, NJ

%A Witten, I.H.
%D 1987
%T Computer speech
%B The Encyclopaedia of Physical Science and Technology, Volume 3
%E Robert A Meyers
%I Academic Press
%P 482-506
%K KInvited

%A Witten, I.H.
%A Bonham, M.
%A Bramwell, B.
%A Greenberg, S.
%D in preparation
%T Interacting with dynamic documents -- the new age of reading
%R proposal submitted to MIT Press

%A Witten, I.H.
%D 1985
%T Selected topics in computer science I
%R Report
%I Institute of Information Processing, Graz, Austria
%O November
%K KReport

%A Witten, I.H.
%D 1986
%T Modeling behaviour sequences: principles, practice, prospects
%J Proc International Conference on Future Advances in Computing
%C Christchurch, New Zealand
%O February 17-21
%K KConference

%A Witten, I.H.
%D 1986
%T In search of `autonomy'
%J Proc International Conference on Future Advances in Computing
%C Christchurch, New Zealand
%O February 17-21
%K KConference

%A Witten, I.H.
%D 1986
%T Expert systems
%J Man-Machine Studies
%V UC-DSE
%N 28
%P 5-65
%I University of Canterbury
%C Christchurch, New Zealand
%O May
%K KArticle

%A Witten, I.H.
%D 1987
%T Thoughts on artificial intentionality
%J Man-Machine Studies
%V UC-DSE
%N 9
%P 5-52
%I University of Canterbury
%C Christchurch, New Zealand
%O January
%K KArticle

%A Witten, I.H.
%A Neal, R.
%A Cleary, J.G.
%D 1987
%T Arithmetic coding for data compression
%J Comm ACM
%V 30
%N 6
%P 520-540
%O June; reprinted in \fIC Gazette\fP, December 1987
%K KJournal

%A Witten, I.H.
%D 1987
%T A course on `expert systems' for electrical engineering students
%J Proc ACM SIGCSE Technical Symposium on Computer Science Education
%C St Louis, MO
%P 257-260
%O February (published as SIGCSE Bulletin \fI19\fR(1))
%K KConference

%A Wong, S.K.M
%A Ziarko, W.
%A Ye, R. Li
%D 1985
%T Comparison of rough-set and statistical methods in inductive learning
%R Technical Report CS-85-16
%I Computer Science Department, University of Regina
%K *

%A Wood, R.J.
%D 1982
%T A window based display management system
%R Internal Report
%I University of Maryland

%A Woods, W.A.
%D 1973
%T Progress in natural language understanding -- an application to lunar geology
%J Proc National Computer Conference
%C Montvale, NJ
%I AFIPS Press

%A Woolf, B.
%A McDonald, D.D.
%D 1983
%T Human-computer discourse in the design of a Pascal tutor
%J Proc ACM CHI 83 Human Factors in Computing Systems
%P 230-234
%C Boston, MA
%O December 12-15
%K *

%A Woolf, B.
%A McDonald, D.D.
%D 1984
%T Building a computer tutor: design issues
%J IEEE Computer
%V 17
%N 9
%P 61-73
%O September

%A Wright, W.E.
%D 1977
%T Gravitational clustering
%J Pattern Recognition
%V 9
%P 151-166
%K *

%A Wu, X.
%A Witten, I.H.
%D 1985
%T A fast \fIk-\fPmeans type clustering algorithm
%R Research Report 85/197/10
%I Computer Science Department, University of Calgary
%O June

%A Wupit, A.
%D 1983
%T Comparison of UNIX networks
%J Proc ACM Conference on Personal and Small Computers
%C San Diego, CA
%P 99-108
%O December

%A Wyvill, B.L.M.
%D 1984
%T Three computer science plays:  \fISquanderella\fP, \fIDigital Alice\fP, and \fITwenty eighty-four\fP
%R Research Report
%I Computer Science Department, University of Calgary

%A Wyvill, B.L.M.
%A Witten, I.H.
%D 1984
%T Three computer science plays
%R Research Report 84/184/42
%I Computer Science Department, University of Calgary
%O December
%K KReport

%A Xerox\|Corp
%D 1984
%T The role of electronic printing in the office of the future
%R Executive Presentation II
%K *

%A Yankelovich, N.
%A Meyrowitz, N.
%A van Dam, A.
%D 1985
%T Reading and writing the electronic book
%J IEEE Computer
%V 18
%N 10
%P 15-30
%O October

%A Yoeli, M.
%A Brzozowski, J.A.
%D 1984
%T A mathematical model of digital CMOS networks
%R Research Report CS-84-22
%I Computer Science Department, University of Waterloo
%O August
%K *

%A Young, J.Z.
%D 1978
%T Programs of the brain
%I Oxford University Press
%C Oxford, England

%A Zaniolo, C.
%D 1984
%T Object-oriented programming in Prolog
%J Proc International Symposium on Logic Programming
%C Atlantic City, NJ
%P 265-270
%O February 6-9
%K *

%A Zeleny, M.
%D 1977
%T Self-organization of living systems: a formal model of autopoiesis
%J Int J General Systems
%V 4
%N 1
%P 13-28

%A Zeleny, M.
%D 1978
%T Apl-autopoiesis: experiments in self-organization of complexity
%B Progress in cybernetics and systems research III
%E R.Trappl, G.J.Klir and L.Ricciardi
%P 65-84
%I Hemisphere
%C Washington, DC

%A Zeleny, M.\0(Editor)
%D 1981
%T Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY

%A Zeleny, M.
%D 1981
%T What is autopoiesis?
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York, NY
%P 4-17

%A Zimmermann, H.
%D 1980
%T OSI reference model \(em the ISO model of architecture for open systems interconnection
%J IEEE Trans Communications
%P 425-432
%O April

%A Zisman, M.M.
%D 1977
%T Representation, specification, and automation of office procedures
%R PhD Dissertation
%I Wharton School, University of Pennsylvania

%A Zissos, A.Y.
%A Witten, I.H.
%D 1985
%T User modelling for a computer coach: a case study
%J IJMMS
%V 23
%N 6
%P 729-750
%O December
%K KJournal

%A Ziv, J.
%A Lempel, A.
%D 1977
%T A universal algorithm for sequential data compression
%J IEEE Trans Information Theory
%V IT-23
%N 3
%P 337-343
%O May
%K *

%A Ziv, J.
%A Lempel, A.
%D 1978
%T Compression of individual sequences via variable-rate coding
%J IEEE Trans Information Theory
%V IT-24
%P 530-536
%O September
%K *
<Y 1874>
<A T. HARDY>
<T Madding Crowd(Penguin 1978)>
<C i>
<P 51>
DESCRIPTION OF FARMER OAK -- AN INCIDENT
When Farmer Oak smiled, the corners of his mouth
spread till they were within an unimportant distance of
his ears, his eyes were reduced to chinks, and diverging
wrinkles appeared round them, extending upon his
countenance like the rays in a rudimentary sketch of
the rising sun.
His Christian name was Gabriel, and on working
days he was a young man of sound judgment, easy
motions, proper dress, and general good character. On
Sundays he was a man of misty views, rather given to
postponing, and hampered by his best clothes and
umbrella : upon the whole, one who felt himself to
occupy morally that vast middle space of Laodicean
neutrality which lay between the Communion people
of the parish and the drunken section, -- that is, he went
to church, but yawned privately by the time the con+
gegation reached the Nicene creed,- and thought of
what there would be for dinner when he meant to be
listening to the sermon. Or, to state his character as
it stood in the scale of public opinion, when his friends
and critics were in tantrums, he was considered rather a
bad man ; when they were pleased, he was rather a good
man ; when they were neither, he was a man whose
moral colour was a kind of pepper-and-salt mixture.
Since he lived six times as many working-days as
Sundays, Oak's appearance in his old clothes was most
peculiarly his own -- the mental picture formed by his
neighbours in imagining him being always dressed in
that way. He wore a low-crowned felt hat, spread out
at the base by tight jamming upon the head for security
in high winds, and a coat like Dr. Johnson's ; his lower
extremities being encased in ordinary leather leggings
and boots emphatically large, affording to each foot a
roomy apartment so constructed that any wearer might
stand in a river all day long and know nothing of
<P 52>
damp -- their maker being a conscientious man who
endeavoured to compensate for any weakness in his cut
by unstinted dimension and solidity.
Mr. Oak 'carried 'about him, by way of watch,+
what may be called a small silver clock; in other
words, it was a watch as to shape and intention, and
a small clock as to size. This instrument being several
years older than Oak's grandfather, had the peculiarity
of going either too fast or not at all. The smaller
of its hands, too, occasionally slipped round on the
pivot, and thus, though the minutes were told with
precision, nobody could be quite certain of the hour
they belonged to. The stopping peculiarity of his
watch Oak remedied by thumps and shakes, and he
escaped any evil consequences from the other two
defects by constant comparisons with and observations
of the sun and stars, and by pressing his face close
to the glass of his neighbours' windows, till he could
discern the hour marked by the green-faced timekeepers
within. It may be mentioned that Oak's fob being
difficult of access, by reason of its somewhat high
situation in the waistband of his trousers (which also
lay at a remote height under his waistcoat), the watch
was as a necessity pulled out by throwing the body to
one-side, compressing the- mouth and face to a mere
mass of- ruddy flesh- on account -of the exertion, and
drawing up the watch by its chain, like a bucket from a
well.
But some thoughtfull persons, who had seen him
walking across one of his fields on a certain December
morning -- sunny and exceedingly mild -- might have
regarded Gabriel Oak in other aspects than these. In
his face one might notice that many of the hues and
curves of youth had tarried on to manhood: there even
remained in his remoter crannies some relics of the boy.
His height and breadth would have been sufficient to
make his presence imposing, had they been exhibited
with due consideration. But there is a way some men
have, rural and urban alike, for which the mind is more
responsible than flesh and sinew : it is a way of curtail+
ing their dimensions by their manner of showing them.
And from a quiet modesty that would have become a
vestal which seemed continually to impress upon him
<P 53>
that he had no great claim on the world's room, Oak
walked unassumingly and with a faintly perceptible
bend, yet distinct from a bowing of the shoulders.
This may be said to be a defect in an individual if he
depends for his valuation more upon his appearance
than upon his capacity to wear well, which Oak did not.
He had just reached the time of life at which " young'
is ceasing to be the prefix of "man ' in speaking of one.
He was at the brightest period of masculine growth,
for his intellect and his emotions were clearly separated :
he had passed the time during which the influence of
youth indiscriminately mingles them in the character
of impulse, and he had not yet arrived at the stage
wherein they become united again, in the character of
prejudice, by the influence of a wife and family. In
short, he was twenty-eight, and a bachelor.
The field he was in this morning sloped to a
ridge called Norcombe Hill. Through a spur of this
hill ran the highway between Emminster and Chalk+
Newton. Casually glancing over the hedge, Oak saw
coming down the incline before him an ornamental
spring waggon, painted yellow and gaily marked,
drawn by two horses, a waggoner walking alongside
bearing a whip perpendicularly. The waggon was
laden with household goods and window plants, and
on the apex of the whole sat a woman, 'young-'and
attractive. Gabriel had not beheld the sight for more
than half a minute, when the vehicle was brought to a
standstill just beneath his eyes.
" The tailboard of the waggon is gone, Miss,' said the
waggoner.
"Then I heard it fall,' said the girl, in a soft, though
not particularly low voice. "I heard a noise I could
not account for when we were coming up the hill.'
"I'll run back.' +
" Do,' she answered. +
The sensible horses stood -- perfectly still, and the
waggoner's steps sank fainter and fainter in the distance.
The girl on the summit of the load sat motionless,
surrounded by tables and chairs with their legs upwards,
backed by an oak settle, and ornamented in front by
pots of geraniums, myrtles, and cactuses, together with
<P 54>
a caged canary -- all probably from the windows of the
house just vacated. There was also a cat in a willow
basket, from the partly-opened lid of which she gazed
with half-closed eyes, and affectionately-surveyed the
small birds around.
The handsome girl waited for some time idly in her
place, and the only sound heard in the stillness-was -the
hopping of the canary up-and down the perches of its
prison. Then she looked attentively downwards. It
was not at the bird, nor at the cat; it was at an oblong
package tied in paper, and lying between them. She
turned her head to learn if the waggoner were coming.
He was not yet in sight; and her-eyes crept back to
the package, her thoughts seeming to run 'upon what
was inside it. At length she drew the article into her
lap, and untied the paper covering; a small swing
looking-glass was disclosed, in which she proceeded to
survey herself attentively. She parted her lips and
smiled.
It was a fine morning, and the sun lighted up to a
scarlet glow the crimson jacket she wore, and painted
a soft lustre upon her bright face and dark hair. The
myrtles, geraniums, and cactuses packed around her
were fresh and green, and at such a leafless season they
invested the whole concern of horses, waggon, furniture,
and girl with a peculiar vernal charm. What possessed
her to indulge in such a performance in the sight of the
sparrows, blackbirds, and unperceived farmer who were
alone its spectators, -- whether the smile began as a
factitious one, to test her capacity in that art, -- nobody
knows ; it ended certainly in a real smile. She blushed
at herself, and seeing her reflection blush, blushed the
more.
The change from the customary spot and necessary
occasion of such an act -- from the dressing hour in a
bedroom to a time of travelling out of doors -- lent to
the idle deed a novelty it did not intrinsically possess.
The picture was a delicate one. Woman's prescriptive
infirmity had stalked into the sunlight, which had
clothed it in the freshness of an originality. A
cynical inference was irresistitle by Gabriel Oak as he
regarded the scene, generous though he fain would have
been. There was no necessity whatever for her looking
in the glass. She did not adjust her hat, or pat her
<P 55>
hair, or press a dimple into shape, or do one thing to
signify that any such intention had been her motive in
taking up the glass. She simply observed herself as a
fair product of Nature in the feminine kind, her thoughts
seeming to glide into far-off though likely dramas in
which men would play a part -- vistas of probable
triumphs -- the smiles being of a phase suggesting that
hearts were imagined as lost and won. Still, this was
but conjecture, and the whole series of actions was so
idly put forth as to make it rash to assert that intention
had any part in them at all.
The waggoner's steps were heard returning. She
put the glass in the paper, and the whole again into its
place.
When the waggon had passed on, Gabriel withdrew
from his point of espial, and descending into the road,
followed the vehicle to the turnpike-gate some way
beyond the bottom of the hill, where the object of his
contemplation now halted for the payment of toll. About
twenty steps still remained between him and the gate,
when he heard a dispute. lt was a difference con+
cerning twopence between the persons with the waggon
and the man at the toll-bar.
" Mis'ess's niece is upon the top of the things, and
she says that's enough that I've offered ye, you great
miser, and she won't pay any more.' These were the
waggoner's words.
"Very well ; then mis'ess's niece can't pass,' said the
turnpike-keeper, closing the gate.
Oak looked from one to the other of the disputants,
and fell into a reverie. There was something in the
tone of twopence remarkably insignificant. Threepence
had a definite value as money -- it was an appreciable
infringement on a day's wages, and, as such, a higgling
matter ; but twopence --  -- " Here,' he said, stepping
forward and handing twopence to the gatekeeper ; "let
the young woman pass.' He looked up at her then;
she heard his words, and looked down.
Gabriel's features adhered throughout their form so
exactly to the middle line between the beauty of St.
John and the ugliness of Judas Iscariot, as represented
in a window of the church he attended, that not a single
lineament could be selected and called worthy either of
distinction or notoriety. The redjacketed and dark+
<P 56>
haired maiden seemed to think so too, for she carelessly
glanced over him, and told her man to drive on. She
might have looked her thanks to Gabriel on a minute
scale, but she did not speak them; more probably she
felt none, for in gaining her a passage he had lost her
her point, and we know how women take a favour of
that kind.
The gatekeeper surveyed the retreating vehicle.
" That's a handsome maid ' he said to Oak
" But she has her faults,' said Gabriel.
" True, farmer. '
"And the greatest of them is -- well, what it is
always.'
" Beating people down ? ay, 'tis so.'
"O no.'
" What, then ? '
Gabriel, perhaps a little piqued by the comely
traveller's indifference, glanced back to where he had
witnessed her performance over the hedge, and said,
" Vanity.'
<C ii>
<P 57>
NIGHT -- THE FLOCK -- AN INIERIOR -- ANOTHER INTERIOR
IT was nearly midnight on the eve of St. Thomas"s, the
shortest day in the year. A desolating wind wandered
from the north over the hill whereon Oak had watched
the yellow waggon and its occupant in the sunshine of
a few days earlier.
  Norcombe Hill -- not far from lonely Toller-Down
 -- was one of the spots which suggest to a passer-by
that he is in the presence of a shape approaching the
indestructible as nearly as any to be found on earth.
It was a featureless convexity of chalk and soil -- an
ordinary specimen of those smoothly-outlined protuber+
ances of the globe which may remain undisturbed on
some great day of confusion, when far grander heights
and dizzy granite precipices topple down.
The hill was covered on its northern side by an
ancient and decaying plantation of beeches, whose
upper verge formed a line over the crest, fringing its
arched curve against the sky, like a mane. To-night
these trees sheltered the southern slope from the keenest
blasts, which smote the wood and floundered through
it with a sound as of grumbling, or gushed over its
crowning boughs in a weakened moan. The dry leaves
in the ditch simmered and boiled in the same breezes,
a tongue of air occasionally ferreting out a few, and
sending them spinning across the grass. A group or
two of the latest in date amongst the dead multitude
had remained till this very mid-winter time on the twigs
which bore them and in falling rattled against the trunks
with smart taps:
Betwenne this half-wooded, half naked hill, and the
vague still horizon that its summit indistinctly com+
manded, was a mysterious sheet of fathomless shade
 -- the sounds from which suggested that what it con+
cealed bore some reduced resemblance to features here.
<P 58>
The thin grasses, more or less coating the hill, were
touched by the wind in breezes of differing powers, and
almost of differing natures -- one rubbing the blades
heavily, another raking them piercingly, another brushing
them like a soft broom. The instinctive act of human+
kind was to stand and listen, and learn how the trees
to each other in the regular antiphonies of a cathedral
choir; how hedges and other shapes to leeward them
caught the note, lowering it to the tenderest sob; and
how the hurrying gust then plunged into the south, to
be heard no more.
The sky was clear -- remarkably clear -- and the
twinkling of all the stars seemed to be but throbs of
one body, timed by a common pulse. The North Star
was directly in the wind's eye, and since evening the
Bear had swung round it outwardly to the east, till he
was now at a right angle with the meridian. A
difference of colour in the stars -- oftener read of than
seen in England-was really perceptible here. The
sovereign brilliancy of Sirius pierced the eye with a steely
glitter, the star called Capella was yellow, Aldebaran and
Betelgueux shone with a fiery red.
To persons standing alone on a hill during a clear
midnight such as this, the roll of the world eastward is
almost a palpable movement. The sensation may be
caused by the panoramic glide of the stars past earthly
objects, which is perceptible in a few minutes of still+
ness, or by the better outlook upon space that a hill
affords, or by the wind, or by the solitude ; but whatever
be its origin, the impression of riding along is vivid and
abiding. The poetry of motion is a phrase much in
use, and to enjoy the epic form of that gratification it
is necessary to stand on a hill at a small hour of the
night, and, having first expanded with a sense of differ+
ence from the mass of civilised mankind, who are
dreamwrapt and disregardful of all such proceedings at
this time, long and quietly watch your stately progress
through the stars. After such a nocturnal reconnoitre
it is hard to get back to earth, and to believe that the
consciousness of such majestic speeding is derived from
a tiny human frame.
Suddenly an unexpected series of sounds began to
<P 59>
be heard
in this place up against the sky. They had a
clearness which was to be found nowhere in the wind,
and a sequence which was to be found nowhere in
nature. They were the notes of Farmer Oak's flute.
The tune was not floating unhindered into the open
air : it seemed muffled in some way, and was altogether
too curtailed in power to spread high or wide. It came
from the direction of a small dark object under the
plantation hedge -- a shepherd's hut -- now presenting
an outline to which an uninitiated person might have
been puzzled to attach either meaning or use.
The image as a whole was that of a small Noah's
Ark on a small Ararat, allowing the traditionary outlines
and general form of the Ark which are followed by toy+
makers -- and by these means are established in men's
imaginations among their firmest, because earliest im+
pressions -- to pass as an approximate pattern. The
hut stood on little wheels, which raised its floor about a
foot from the ground. Such shepherds' huts are dragged
into the fields when the lambing season comes on, to
shelter the shepherd in his- enforced nightly attendance.
It was only latterly that people had begun to call
Gabriel !Farmer' Oak. During the twelvemonth pre+
ceding this time he had been enabled by sustained
efforts of industry and chronic good spirits to lease the
small shepp farm of which Norcombe Hill was a portion,
and stock it with two hundred sheep. Previously he
had been a bailiff for a short time, and earlier still a
shepherd only, having from his childhood assisted his
father in tending the floeks of large proprietors, till old
Gabriel sank to rest.
This venture, unaided and alone, into the paths of
farming as master and not as man, with an advance of
sheep not yet paid for, was a critical juncture with
Gabriel Oak, and he recognised his position clearly.
The first movement in his new progress was the lambing
of his ewes, and sheep having been his speciality from
his "youth, he wisely refrained from deputing -- the task
of tending them at this season to a hireling or a novice.
The wind continued to beat-about the corners of the
hut, but the flute-playing ceased. A rectangular space
of light
<P 60>
appeared in the side of the hut, and in the
opening the outline of Farmer Oak's figure. He carried
a lantern in his hand, and closing the door behind him,
came forward and busied himself about this nook of the
field for nearly twenty minutes, the lantern light appear+
ing and disappearing here and there, and brightening
him or darkening him as he stood before or behind it.
Oak's motions, though they had a quiet-energy, were
slow, and their deliberateness accorded well with his
occupation. Fitness being the basis of beauty, nobody
could-have denied that his steady swings and turns"
in and- about the flock had elements of grace, Yet,
although if occasion demanded he could do or think a
thing with as mercurial a dash as can the men of towns
who are more to the manner born, his special power,
morally, physically, and mentally, was static, owing
little or nothing to momentum as a rule.
A close examination of the ground hereabout, even
by the wan starlight only, revealed how a portion of
what would have been casually called a wild slope had
been appropriated by Farmer Oak for his great purpose
this winter. Detached hurdles thatched with straw
were stuck into the ground at various scattered points,
amid and under which the whitish forms of his meek
ewes moved and rustled. The ring of the sheep-bell,
which had been silent during his absence, recommenced,
in tones that had more mellowness than clearness, owing
to an increasing growth of surrounding wool. This
continued till Oak withdrew again from the flock. He
 --  returned to the hut, bringing in his arms a new-born
lamb, consisting of four legs large enough for a full+
grown sheep, united by a seemingly inconsiderable mem+
brane about half the substance of the legs collectively,
which constituted the animal's entire body just at present.
The little speck of life he placed on a wisp of hay
before the small stove, where a can of milk was simmer+
ing. Oak extinguished the lantern by blowing into it
and then pinching the snuff, the cot being lighted
by a candle suspended by a twisted wire. A rather
hard couch, formed of a few corn sacks thrown carelessly
down, covered half the floor of this little
<P 61>
habitation, and
here the young man stretched himself along, loosened
his woollen cravat, and closed his eyes. In about the
time a person unaccustomed to bodily labour would have
decided upon which side to lie, Farmer Oak was asleep.
The inside of the hut, as it now presented itself, was
cosy and alluring, and the scarlet handful of fire in
addition to the candle, reflecting its own genial colour
upon whatever it could reach, flung associations of
enjoyment even over utensils and tools. In the corner
stood the sheep-crook, and along a shelf at one side
were ranged bottles and canisters of the simple prepara+
tions pertaining to ovine surgery and physic; spirits of
wine, turpentine, tar, magnesia, ginger, and castor-oil
being the chief. On a triangular shelf across the corner
stood bread, bacon, cheese, and a cup for ale or cider,
which was supplied from a flagon beneath. Beside the
provisions lay the flute whose notes had lately been
called forth by the lonely watcher to beguile a tedious
hour. The house was ventilated by two round holes,
like the lights of a ship's cabin, with wood slides+
The lamb, revived by the warmth' began to bleat'
instant meaning, as expected sounds will. Passing
from the profoundest sleep to the most alert wakefulness
with the same ease that had accompanied the reverse
operation, he looked at his watch, found that the hour+
hand had shifted again, put on his hat, took the lamb
in his arms, and carried it into the darkness. After
placing the little creature with its mother, he stood and
carefully examined the sky, to ascertain the time of
night from the altitudes of the stars.
The Dog-star and Aldebaran, pointing to the restless
Pleiades, were half-way up the Southern sky, and between
them hung Orion, which gorgeous constellation never
burnt more vividly than now, as it soared forth above
the rim of the landscape. Castor and Pollux will
the north-west; far away through the plantation Vega
and Cassiopeia's chair stood daintily poised on the
uppermost boughs.
<P 62>
"One o'clock,' said Gabriel.
Being a man not without a frequent consciousness
that there was some charm in this life he led, he stood
still after looking at the sky as a useful instrument, and
regarded it in an appreciative spirit, as a work of art
superlatively beautiful. For a moment he seemed
impressed with the speaking loneliness of the scene, or
rather with the complete abstraction from all its compass
of the sights and sounds of man. Human shapes,interferences,
troubles, and joys were all as if they were not, and there
seemed to be on the shaded hemisphere of the globe no sentient being
save himself; he could fancy them all gone round to the sunny side.
  Occupied this, with eyes stretched afar, Oak gradually per+
ceived that what he had previously taken to be a star low
down behind the outskirts of the plantation was in reality no
such thing. It was an artificial light, almost close at hand.
 To find themselves utterly alone at night where company
is desirable and expected makes some people fearful; but a
case more trying by far to the nerves is to discover some
mysterious companionship when intuition, sensation, memory,
analogy, testimony, probability, induction -- every kind of
evidence in the logician's list -- have united to persuade con+
sciousness that it is quite in isolation.
 Farmer Oak went towards the plantation and pushed
through its lower boughs to the windy side. A dim mass under
the slope reminded him that a shed occupied a place here,
the site being a cutting into the slope of the hill, so that at
its back part the roof was almost level with the ground. In
front it was formed of board nailed to posts and covered with
tar as apreservative. Through crevices in the roof and side
spread streaks and spots of light, a combination of which made
the radiance that had attracted him. Oak stepped up behind,
where,leaning down upon the roof and putting his eye close
to a hole, he could see into the interior clearly.
 The place contained two women and two cows. By the side
of the latter a steaming bran-mash stood in a bucket. One
of the women was past middle age. Her companion was ap+
parently young and graceful; he could form no decided opinion
<P 63>
upon her looks, her position being almost beneath his eye, so
that he saw her in a bird's-eye view, as Milton's Satan first saw
Paradise. She wore no bonnet or het, but had enveloped her+
self in a large cloak, which was carelessly flung over her head
as a covering.
 "There, now we'll go home," said the elder of the two, resting
 her knuckles upon her hips, and looking at their goings-on as
a whole. "I do hope Daisy will fetch round again now. I have
never been more frightened in my life, but I don't mind break+
ing my rest if she recovers."
 The young woman, whose eyelids were apparently inclined
to fall together on the smallest provocation of silence,yawned
in sympathy.
 "I wish we were rich enough to pay a man to do these
things," she said.
 "As we are not, we must do them ourselves," said the other;
"for you must help me if you stay."
"Well, my hat is gone, however," continued the younger. "It
went over the hedge, I think. The idea of such a slight wind
catching it."
 The cow standing erect was of the Devon breed, and was
encased in a tight warm hide of rich Indian red, as absolutely
uniform from eyes to tail as if the animal had been dipped in
a dye of that colour, her long back being mathematically level.
The other was spotted,grey and white. Beside her Oak now
noticed a little calf about a day old, looking idiotically at
the two women, which showed that it had not long been
accustomed to the phenomenon of eyesight, and often turn+
ing to the lantern, which it apparently mistook for the moon.
inherited instinct having as yet had little time for correction
by experience. Between the sheep and the cows Lucina had
been busy on Norcombe hill lately.
 "I think we had better send for some oatmeal," said the
"Yes, aunt; and I'll ride over for it as soon as it is
light. '
" But there's no side-saddle.'
<P 64>
"I can ride on the other : trust me.'
Oak, upon hearing these remarks, became more
curious to observe her features, but this prospect being
denied him by the hooding efect of the cloak, and by his
aerial position, he felt himself drawing upon his fancy
for their details. In making even horizontal and clear
inspections we colour and mould according to the warts
within us whatever our eyes bring in. Had Gabriel
been able from the first to get a distinct view of her +
countenance, his estimate of it as very handsome or
slightly so would have been as his soul required a
divinity at the moment or was ready supplied with one.
Having for some time known the want of a satisfactory
form to fill an increasing void within him, his position
moreover affording the widest scope for his fancy, he
painted her a beauty.
By one of those whimsical coincidences in which
Nature, like a busy mother, seems to spare a moment
from her unremitting labours to turn and make her
children smile, the girl now dropped the cloak, and
forth tumbled ropes of black hair over a red jacket.
Oak knew her instantly as the heroine of the yellow
waggon, myrtles, and looking-glass : prosily, as the
woman who owed him twopence.
They placed the calf beside its mother again, took
up the lantern, and went out, the light sinking down
the hill till it was no more than a nebula. Gabriel
Oak returned to his flock.
<C iii>
<P 65>
A GIRL ON HORSEBACK -- CONVERSATION
THE sluggish day began to break. Even its position
terrestrially is one of the elements of a new interest,
and for no particular reason save that the incident of
the night had occurred there, Oak went again into
the plantation. Lingering and musing here, he heard
the steps of a horse at the foot of the hill, and soon
there appeared in view an auburn pony with a girl on
its back, ascending by the path leading past the cattle+
shed. She was the young woman of the night before.
Gabriel instantly thought of the hat she had mentioned
as having lost in the wind; possibly she had come to
look for it. He hastily scanned the ditch and after
walking about ten yards along it, found the hat among the
leaves. Gabriel took it in his hand and returned to his
hut. Here he ensconced himself, and peeped through
the loophole in the direction of the riders approach.
She came up and looked around -- then on the other
side of the hedge. Gabriel was about to advance and
restore the missing article when an unexpected per+
formance induced him to suspend the action for the
present. The path, after passing the cowshed, bisected
the plantation. It was not a bridle-path -- merely a
pedestrian's track, and the boughs spread horizontally
at a height not greater than seven feet above the ground,
which made it impossible to ride erect beneath them.
The girl, who wore no riding-habit, looked around for
a moment, as if to assure herself that all humanity was
out of view, then dexterously dropped backwards flat
upon the pony's back, her head over its tail, her feet
against its shoulders, and her eyes to the sky. The
rapidity of her glide into this position was that of a
kingfisher -- its noiselessness that of a hawk. Gabriel's
eyes had scarcely been able to follow her. The tall lank
pony seemed used to such doings, and ambled
<P 66>
along unconcerned. Thus she passed under the level boughs.
The performer seemed quite at home anywhere
between a horse's head and its tail, and the necessity
for this abnormal attitude having ceased with the
passage of the plantation, she began to adopt another,
even more obviously convenient than the first. She had
no side-saddle, and it was very apparent that a firm
seat upon the smooth leather beneath her was un+
attainable sideways. Springing to her accustomed
perpendicular like a bowed sapling, and satisfying her,
self that nobody was in sight, she seated herself in the
manner demanded by the saddle, though hardly expected
of the woman, and trotted off in the direction of Tewnell
Mill.
Oak was amused, perhaps a little astonished, and
hanging up the hat in his hut, went again among his
ewes. An hour passed, the girl returned, properly
seated now, with a bag of bran in front of her. On
nearing the cattle-shed she was met by a boy bringing
a milking-pail, who held the reins of the pony whilst
she slid off. The boy led away the horse, leaving the
pail with the young woman.
Soon soft spirts alternating with loud spirts came
in regular succession from within the shed, the obvious
sounds of a person milking a cow. Gabriel took the
lost hat in his hand, and waited beside the path she
would follow in leaving the hill.
She came, the pail in one hand, hanging against her
knee. The left arm was extended as a balance, enough
of it being shown bare to make Oak wish that the event
ha happened in the summer, when the whole would
have been revealed. There was a bright air and manner
about her now, by which she seemed to imply that the
desirability of her existence could not be questioned;
and this rather saucy assumption failed in being offensive,
because a beholder felt it to be, upon the whole, true.
Like exceptional emphasis in the tone of a genius, that
which would have made mediocrity ridiculous was an
addition to recognised power. It was with some
surprise that she saw Gabriel's face rising like the
moon behind the hedge.
The adjustment of the farmer's hazy conceptions of
her
<P 67>
charms to the portrait of herself she now presented
him with was less a diminuition than a difference. The
starting-point selected by the judgment was. her height
She seemed tall, but the pail was a small one, and the
hedge diminutive; hence, making allowance for error
by comparison with these, she could have been not
above the height to be chosen by women as best. All
features of consequence were severe and regular. It
may have been observed by persons who go about the
shires with eyes for beauty, that in Englishwoman a
classically-formed face is seldom found to be united
with a figure of the same pattern, the highly-finished
features being generally too large for the remainder of
the frame ; that a graceful and proportionate figure of
eight heads usually goes off into random facial curves.
Without throwing a Nymphean tissue over a milkmaid,
let it be said that here criticism checked itself as out
of place, and looked at her proportions with a long
consciousness of pleasure. From the contours of her
figure in its upper part, she must have had a beautiful
neek and shoulders ; but since her infancy nobody had
ever seen them. Had she been put into a low dress
she would have run and thrust her head into a bush.
Yet she was not a shy girl by any means; it was merely
her instinct to draw the line dividing the seen from the
unseen higher than they do it in towns.
That the girl's thoughts hovered about her face
and form as soon as she caught Oak's eyes conning the
same page was natural, and almost certain. The self+
consciousness shown would have been vanity if a little
more pronounced, dignity if a little less. Rays of male
vision seem to have a tickling effect upon virgin faces
in rural districts ; she brushed hers with her hand, as if
Gabriel had been irritating its pink surface by actual
touch, and the free air of her previous movements was
reduced at the same time to a chastened phase of
itself. Yet it was the man who blushed, the maid not
at all.
" I found a hat,' said Oak.
" It is mine,' said she, and, from a sense of proportion,
kept down to a small smile an inclination to laugh dis+
tinctly : "it flew away last night.'
" One o'clock this morning ? '
<P 68>
" Well -- it was.' She was surprised. " How did you
know ? ' she said.
" I was here.'
" You are Farmer Oak, are you not ? '
" That or thereabouts. I'm lately come to this place.'
" A large farm ? ' she inquired, casting her eyes round,
and swinging back her hair, which was black in the
shaded hollows of its mass; but it being now an hour
past sunrise, the rays touched its prominent curves with
a colour of their own.
" No ; not large. About a hundred.' (In speaking
of farms the word "acres ' is omitted by the natives, by
analogy to such old expressions as "a stag of ten.')
' "I wanted my hat this morning,' she went on.
had to ride to Tewnell Mill.'
"Yes you had.'
"How do you know?'
"I saw you!
"Where?' she inquired, a misgiving bringing every
muscle of her lineaments and frame to a standstill.
"Here-going through the plantation, and all down
the hill,' said Farmer Oak, with an aspect excessively
knowing with regard to some matter in his mind, as he
gazed at a remote point in the direction named, and then
turned back to meet his colloquist's eyes.
A perception caused him to withdraw his own eyes
from hers as suddenly as if he had been caught in a
theft. Recollection of the strange antics she had
indulged in when passing through the trees, was suc+
ceeded in the girl by a nettled palpitation, and that' by
a hot face. It was a time to see a woman redden who
was not given to reddening s a rule; not a point in
the milkmaid but was of the deepest rose-colour. From
the Maiden's Blush, through all varieties of the Provence
down to the Crimson Tuscany, the countenance of Oak's
acquaintance quickly graduated ; whereupon he, in con+
siderateness, turned away his head.
The sympathetic man still looked the other way, and
wondered when she would recover coolness sufficient to
justify him in facing her again. He heard what seemed
to be the flitting of a
<P 69>
dead leaf upon the breeze, and
looked. She had gone away.
With an air between that of Tragedy and Comedy !
Gabriel returned to his work.
Five mornings and evenings passed. The young
woman came regularly to milk the healthy cow or to
attend to the sick one, but never allowed her vision to
stray in the direction of Oak's person. His want of
tact had deeply offended her -- not by seeing what he
could not help, but by letting her know that he had
seen it. For, as without law there is no sin, without
eyes there is no indecorum; and she appeared to feel
that Gabriel's espial had made her an indecorous woman
without her own connivance. It was food for great regret
with him; it was also a contretemps which touched into
life a latent heat he had experienced in that direction.
The acquaintanceship might, however, have ended in
a slow forgetting, but for an incident which occurred at
the end of the same week. One afternoon it began to
freeze, and the frost increased with evening, which drew
on like a stealthy tightening of bonds. It was a time
when in cottages the breath of the sleepers freezes to
the sheets; when round the drawing-room fire of a
thick-walled mansion the sitters' backs are cold, even
whilst their faces are all aglow. Many a small bird went
to bed supperless that night among the bare boughs.
As the milking-hour drew near, Oak kept his usual
watch upon the cowshed. At last he felt cold, and
shaking an extra quantity of bedding round the yeaning
ewes he entered the hut and heaped more fuel upon
the stove. The wind came in at the bottom of the door,
and to prevent it Oak laid a sack there and wheeled the
cot round a little more to the south. Then the wind
spouted in at a ventilating hole -- of which there was one
on each side of the hut.
Gabriel had always known that when the fire was
lighted and the door closed one of these must be kept
open -- that chosen being always on the side away from
the wind. Closing the slide to windward, he turned to
open the other; on second -- -thoughts the farmer con+
sidered that he would first sit down leaving both
closed for a minute or two, till the temperature of the
hut was a little raised. He sat down.
<P 70>
His head began to ache in an unwonted manner, and,
fancying himself weary by reason of the broken rests of
the preceding nights, Oak decided to get up, open the
slide, and then allow himself to fall asleep. He fell
asleep, however, without having performed the necessary
preliminary.
How long he remained unconseious Gabriel never
knew. During the first stages of his return to percep+
tion peculiar deeds seemed to be in course of enactment.
His dog was howling, his head was aching fearfully --
somebody was pulling him about, hands were loosening
his neckerchief.
On opening his eyes he found that evening had sunk
to dusk in a strange manner of unexpectedness. The
young girl with the remarkably pleasant lips and white
teeth was beside him. More than this -- astonishingly
more -- his head was upon her lap, his face and neck
were disagreeably wet, and her fingers were unbuttoning
his collar.
"Whatever is the matter?' said Oak, vacantly.
She seemed to experience mirth, but of too insignifi+
cant a kind to start enjoyment.
"Nothing now', she answered, "since you are not
dead It is a wonder you were not,suffocated in this
hut of yours.'
"Ah, the hut ! ' murmured Gabriel. "I gave ten
pounds for that hut. But I'll sell it, and sit under
thatched hurdles as they did in old times, curl up
to sleep in a lock of straw! It played me nearly the
same trick the other day .! ' Gabriel, by way of emphasis,
brought down his fist upon the floor.
"It was not exactly the fault of the hut,' she ob+
served in a tone which showed her to be that novelty
among women -- one who finished a thought before
beginning the sentence which was to convey it. " You
should I think, have considered, and not have been so
foolish as to leave the slides closed.'
"Yes I suppose I should,' said Oak, absently. He
was endeavouring to catch and appreciate the sensation
of being thus with her, his head upon her dress, before
the event passed on into the heap of bygone things.
He wished she knew his impressions ; but he would as
soon have thought of carrying an odour in a net as of
attempting to convey the intangibilities
<P 71>
of his feeling
in the coarse meshes of language. So he remained
silent.
She made him sit up, and then Oak began wiping
his face and shaking himself like a Samson. "How
can I thank 'ee ? ' he said at last, gratefully, some of the
natural rusty red having returned to his face.
 " Oh, never mind that,' said the girl, smiling, and
allowing her smile to hold good for Gabriel's next
remark, whatever that might prove to be.
"How did you find me?"
"I heard your dog howling and scratching at the
door of the hut when I came to the milking (it was so
lucky, Daisy's milking is almost over for the season, and
 I shall not come here after this week or the next). The
dog saw me, and jumped over to me, and laid hold of
my skirt. I came across and looked round the hut the
very first thing to see if the slides were closed. My
uncle has a hut like this one, and I have heard him tell
his shepherd not to go to sleep without leaving a slide
open. I opened the door, and there you were like
dead. I threw the milk over you, as there was no
water, forgetting it was warm, and no use.'
"I wonder if I should have died ? ' Gabriel said, in a
low voice, which was rather meant to travel back to
himself than to her.
"O no," the girl replied. She seemed to prefer a
less tragic probability ; to have saved a man from death
'involved talk that should harmonise with the dignity of
such a deed -- and she shunned it.
"I believe you saved my life, Miss --  -- I don!t know
your name. I know your aunt's, but not yours.'
" I would just as soon not tell it -- rather not. There
is no reason either why I should, as you probably will
never have much to do with me.'
 " Still, I should like to know.'
" You can inquire at my aunt's -- she will tell you.'
'My name is Gabriel Oak.'
"And mine isn't. You seem fond of yours in
speaking it so decisively, Gabriel Oak.'
<P 72>
" You see, it is the only one I shall ever have, and I
must make the most of it.'
" I always think mine sounds odd and disagreeable.'
"I should think you might soon get a new one.'
"Mercy ! -- how many opinions you keep about you
concerning other people, Gabriel Oak.
"Well Miss-excuse the words-I thought you
would like them But I can't match you I know in
napping out my mind upon my tongue. I never was
very clever in my inside. But I thank you. Come
give me your hand!'
She hesitated, somewhat disconcerted at Oak's old+
fashioned earnest conclusion. to a dialogue lightly
carried on."Very well,' she said, and gave him her
hand, compressing her lips to a demure impassivity.
He held it but an instant, and in his fear of being too
demonstrative, swerved to the opposite extreme, touching
her fingers with the lightness of a small-hearted person.
" I am sorry,' he said, the instant after.
" What for?'
"You may have it again if you like; there it is.'
She gave him her hand again.
Oak held it longer this time -- indeed, curiously long.
"How soft it is -- being winter time, too -- not chapped
or rough or anything!' he said.
"There -- that's long enough,' said she, though with+
out pulling it away "But I suppose you are thinking
you would like to kiss it? You may if you want to.'
"I wasn't thinking of any such thing,' said Gabriel,
simply ; "but I will'
"That you won't!' She snatched back her hand.
Gabriel felt himself guilty of another want of tact.
"Now find out my name,' she said, teasingly; and
withdrew.
<C iv>
<P 73>
GABRIEL'S RESOLVE -- THE VISIT -- THE MISTAKE
THE only superiority in women that is tolerable to the
rival sex is, as a rule, that of the unconscious kind ; but
a superiority which recognizes itself may sometimes
please by suggesting possibilities of capture to the
subordinated man.
This well-favoured and comely girl soon made appre+
ciable inroads upon the emotional constitution of young
Farmer Oak.
Love, being an extremely exacting usurer (a sense of
exorbitant profit, spiritually, by an exchange of hearts,
being at the bottom of pure passions, as that of exorbi+
tant profit, bodily or materially, is at the bottom of
those of lower atmosphere), every morning Oak's feelings
were as sensitive as the money-market in calculations
upon his chances. His dog waited for his meals in a
way so like that in which Oak waited for the girl's
presence, that the farmer was quite struck with the
resemblance, felt it lowering, and would not look at the
dog. However, he continued to watch through the
hedge for her regular coming, and thus his sentiments
towards her were ideepened without any corresponding
effect being produced upon herself. Oak had nothing
finished and ready to say as yet, and not being able
to frame love phrases which end where they begin ;
passionate tales -- +
     -- -Full of sound and fury
   -- -signifting nothing -- +
he said no word at all.
By making inquiries he found that the girl's name
was Bathsheba Everdene, and that the cow would go
dry in about seven days. He dreaded the eight day.
At last the eighth day came. The cow had ceased
to give milk for that year, and Bathsheba Everdene
came up the hill no more. Gabriel had reached a
pitch of existence he never
<P 74>
could have anticipated a
short time before. He liked saying 'Bathsheba' as a
private enjoyment instead of whistling; turned over his
taste to black hair, though he had sworn by brown ever
since he was a boy, isolated himself till the space he
filled in a possible strength in an actual weakness. Marriage
transforms a distraction into a support, the power of
which should be, and happily often is, in direct pro+
portion to the degree of imbecility it supplants. Oak
began now to see light in this direction, and said to
himself, "I'll make her my wife, or upon my soul I shall
be good for nothing .! '
All this while he was perplexing himself about an
errand on which he might consistently visit the cottage
of Bathsheba's aunt.
He found his opportunity in the death of a ewe,
mother of a living lamb. On a day which had a
summer face and a winter constitution-a fine January
morning, when there was just enough blue sky visible to
make cheerfully-disposed people wish for more, and an
occasional gleam of silvery sunshine, Oak put the lamb
into a respectable Sunday basket, and stalked across the
fields to the house of Mrs. Hurst, the aunt -- George,
the dog walking behind, with a countenance of great
concern at the serious turn pastoral affairs seemed to be
taking.
Gabriel had watched the blue wood-smoke curling
from the chimney with strange meditation. At evening
he had fancifully traced it down the chimney to the
spot of its origin -- seen the hearth and Bathsheba
beside it -- beside it in her out-door dress; for the
clothes she had worn on the hill were by association
equally with her person included in the compass of his
affection; they seemed at this early time of his love a
necessary ingredient of the sweet mixture called Bath+
sheba Everdene.
He had made a toilet of a nicely-adjusted kind -- of a
nature between the carefully neat and the carelessly
ornate -- of a degree between fine-market-day and wet+
Sunday selection. He thoroughly cleaned his silver
watch-chain with whiting, put new lacing straps to his
boots, looked to the brass eyelet-holes,
<P 75>
 went to the
inmost heart of the plantation for a new walking-stick,
and trimmed it vigorously on his way back; took a new
handkerchief from the bottom of his clothes-box, put
on the light waistcoat patterned all over with sprigs
of an elegant flower uniting the beauties of both rose
and lily without the defects of either, and used all the
hair-oil he possessed upon his usually dry, sandy, and
inextricably curly hair, till he had deepened it to a
splendidly novel colour, between that of guano and
Roman cement, making it stick to his head like mace
round a nutmeg, or wet seaweed round a boulder after
the ebb.
Nothing disturbed the stillness of the cottage save
 the chatter of a knot of sparrows on the eaves; one
might fancy scandal and rumour to be no less the
staple topic of these little coteries on roofs than of
those under them. It seemed that the omen was an
unpropitious one, for, as the rather untoward commence+
ment of Oak's overtures, just as he arrived by the garden
gate, he saw a cat inside, going into various arched shapes
and fiendish convulsions at the sight of his dog George.
The dog took no notice , for he had arrived at an age
at which all superfluous barking was cynically avoided
as a waste of breath -- -in fact he never barked even
at the sheep except to order, when it was done with
an absolutely neutral countenance, as a sort of Com+
mination-service, which, though offensive, had to be
gone through once now and then to frighten the flock
for their own good.
A voice came from behind some laurel-bushes into
which the cat had run:
"Poor dear! Did a nasty brute of a dog want to
kill it; -- did he poor dear !'
"I beg your pardon,' said Oak to the voice, 'but
George was walking on behind me with a temper as
mild as milk.'
Almost before he had ceased speaking, Oak was
seized with a misgiving as to whose ear was the recipient
of his answer. Nobody appeared, and he heard the
person retreat among the bushes.
Gabriel meditated, and so deeply that he brought
small furrows into his forehead by sheer force of
reverie. Where the
<P 76>
issue of an interview is as likely
to be a vast change for the worse as for the better,
any initial difference from expectation causes nipping
sensations of failure. Oak went up to the door a little
abashed : his mental rehearsal and the reality had had
no common grounds of opening.
Bathsheba's aunt was indoors. " Will you tell Miss
Everdene that somebody would be glad to speak to
her ?'said Mr. Oak. (Calling one's self merely Some+
body, without giving a name, is not to be taken as
an example of the ill-breeding of the rural world: it
springs from a refined modesty, of which townspeople,
with their cards and announcements, have no notion
whatever.)
Bathsheba was out. The voice had evidently been
hers.
" Will you come in, Mr. Oak ? '
"Oh, thank 'ee, said Gabriel, following her to the
fireplace. "I've brought a lamb for Miss Everdene.
I thought she might like one to rear; girls do.'
" She might,' said Mrs. Hurst, musingly ; " though
she's only a visitor here. If you will wait a minute,
Bathsheba will be in.'
" Yes, I will wait,' said Gabriel, sitting down. " The
lamb isn't really the business I came about, Mrs. Hurst.
In short, I was going to ask her if she'd like to be
married.'
"And were you indeed ?'
" Yes. Because if she would, I should be very glad
to marry her. D'ye know if she's got any other young
man hanging about her at all ?'
"Let me think," said Mrs. Hurst, poking the fire
superfluously.... " Yes -- bless you, ever so many young
men. You see, Farmer Oak, she's so good-looking, and
an excellent scholar besides -- she was going to be a
governess once, you know, only she was too wild. Not
that her young men ever come here -- but, Lord, in the
nature of women, she must have a dozen ! '
" That's unfortunate,' said Farmer Oak, contemplating
a crack in the stone floor with sorrow. "I'm only an
every-day sort of man, and my only chance was in being
the first comer... , Well, there's no use in my waiting,
for that was all I came about: so I'll take myself off
home-along, Mrs. Hurst.'
When Gabriel had gone about two hundred yards
along the
<P 77>
down, he heard a "hoi-hoi .! " uttered behind
him, in a piping note of more treble quality than that
in which the exclamation usually embodies itself when
shouted across a field. He looked round, and saw a girl
racing after him, waving a white handkerchief.
Oak stood still -- and the runner drew nearer. It was
Bathsheba Everdene. Gabriel's colour deepened: hers
was already deep, not, as it appeared, from emotion,
but from running.
"Farmer Oak -- I -- ' she said, pausing for want of
breath pulling up in front of him with a slanted face
and putting her hand to her side.
"I have just called to see you ' said Gabriel, pending
her further speech.
"Yes-I know that,! she said panting like a robin,
her face red and moist from her exertions, like a peony
petal before the sun dries off the dew. "I didn't know
you had come to ask to have me, or I should have come
in from the garden instantly. I ran after you to say --
that my aunt made a mistake in sending you away from
courting me --  --  -- '
Gabriel expanded."I'm sorry to have made you
run so fast, my dear,' he said, with a grateful sense of
favours to come. "Wait a bit till you've found your
breath.'
" -- It was quite a mistake-aunt's telling you I had
a young man "already,'- Bathsheba went on. " I haven't
a sweetheart at all -- and I never had one, and I thought
that, as times go with women, it was such a pity to send
you away thinking that I had several.'
"Really and truly I am glad to hear that.!' said .=
Farmer Oak, smiling one of his long special smiles, and
blushing with gladness. He held out his hand to take
hers, which, when she had eased her side by pressing
it there, was prettily extended upon her bosom to still
her loud-beating heart. Directly he seized it she put
it behind her, so that it slipped through his fingers like
an eel. "
"I have a nice snug little farm,' said Gabriel, with
half a degree less assurance than when he had seized
her hand.
"Yes ; you have.'
"A man has advanced me money to begin with, but
still, it
<P 78>
will soon be paid off and though I am only an
every-day sort of man, I have got on a little since I was
a boy.' Gabriel uttered "a little' in a tone to-show
her that it was the complacent form of "a great deal.'
He continued : " When we be married, I am quite sure
I can work twice as hard as I do now.'
 He went forward and stretched out his arm again.
Bathsheba had overtaken him at a point beside which
stood a low stunted holly bush, now laden with red
berries. Seeing his advance take the form of an attitude
threatening a possible enclosure, if not compression, of
her person, she edged off round the bush.
" Why, Farmer Oak,' she said, over the top, looking
at him with rounded eyes, "I never said I was going to
marry you.'
" Well -- that is a tale .! ' said Oak,  with dismay. " To
run after anybody like this, and then say you don"t
want him ! '
"What I meant to tell you was only this,' she said
eagerly, and yet half conscious of the absurdity of the
position she had made for herself -- "that nobody has
got me yet as a sweetheart, instead of my having a
dozen, as my aunt said; I hate to be thought men's
property in that way, though possibly I shall be had
some day. Why, if I'd wanted you I shouldn't have
run after you like this ; 'twould have'been the forwardest
thing ! But there was no harm in 'hurrying to correct
a piece of false news that had been told you.'
"Oh, no -- no harm at all." But there is such a thing
as being too generous in expressing a judgment impuls+
ively, and Oak added with a more appreciative sense
of all the circumstances -- ' Well, I am not quite certain
it was no harm.'
"Indeed, I hadn't time to think before starting
whether I wanted to marry or not, for you'd have been
gone over the hill.'
" Come,' said Gabriel, freshening again ; "think a
minute or two. I'll wait a while, Miss Everdene. Will
you marry me? Do, Bathsheba. I love you far more
than common!'
"I'll try to think,' she observed, rather more timor+
ously ; "if I can think out of doors; my mind spreads
away so.'
"But you can give a guess.'
<P 79>
"Then give me time.' Bathsheba looked thought+
fully into the distance, away from the direction in which
Gabriel stood.
"I can make you happy,' said he to the back of her
head, across the bush. "You shallo have as piano in a
year or two -- -farmers' wives are getting to have pianos
now --  and I'll practise up the flute right well to play
with you in the evenings.'
" Yes ; I should like that.'
"And have one of those little ten-pound" gigs for
market -- and nice flowers, and birds -- cocks and hens
I mean, because they be useful,' continued Gabriel,
feeling balanced between poetry and practicality.
"I should like it very much.'
"And a frame for cucumbers -- like a gentlman and
lady.'
"Yes.'
"And when the wedding was over, we'd have it put
in the newspaper list of marriages.'
" Dearly I should like that ! '
"And the babies in the births -- every man jack of
'em! And at home by the fire, whenever you look up,
there I shall be -- and whenever I look up' there will
be you.'
"Wait wait and don't be improper .!'
Her countenance fell, and she was silent awhile.
He regarded the red berries between them over and
over again, to such an extent, that holly seemed in
his after life to be a cypher signifying a proposal of
marriage. Bathsheba decisively turned to him.
"No;' 'tis no use,' she said. 'I don't want to marry
you. '
' Try.'
"I have tried hard all the time I've been thinking;
for a marriage would be very nice in one sense.
People would talk about me, and think I had won my
battle, and I should feel triumphant, and' all that,
But a husband --  -- ' - +
" Well .! '
" Why, he'd always be there, as you say; whenever
I looked up, there he'd be.'
" Of course he would -- I, that is.'
<P 80>
" Well, what I mean is that I shouldn't mind being
a bride at a wedding, if I could be one without having
a husband. But since a woman can't show off in that
way by herself, I shan't marry -- at least yet.'
' That's a terrible wooden story.'
At this criticism of her statement Bathsheba made
an addition to her dignity by a slight sweep away
from him.
"Upon my heart and soul, I don't know what a
maid can say stupider than that,' said Oak. "But
dearest,' he continued in a palliative voice, "don't be
like it !.' Oak sighed a deep honest sigh -- none the
less so in that, being like the sigh of a pine plantation,
it was rather noticeable as a disturbance of the atmo+
sphere. " Why won't you have me ? ' he appealed,
creeping round the holly to reach her side.
" I cannot,' she said, retreating.
"But why ?' he persisted, standing still at last in
despair of ever reaching her, and facing over the
bush.
' Because I don't love you.'
" Yes, but --  -- '
She contracted a yawn to an inoffensive smallness,
so that it was hardly ill-mannered at all. "I don't love
you,' she said.'
"But I love you -- and, as for myself, I am content
to be liked.'
" O Mr. Oak -- that's very fine ! You'd get to
despise me.'
"Never,' said Mr Oak, so earnestly that he seemed
to be coming, by the forceof his words, straight
through the bush and into her arms. "I shall do one
thing in this life -- one thing certain -- that is, love you,
and long for you, and keep wanting you till I die.' His
voice had a genuine pathos now, and his large brown
hands perceptibly trembled.
"It seems dreadfully wrong not to have you when
you feel so much!' she said with a little distress, and
looking hopeleely around for some means of escape
from her moral dilemma. " H(ow I wish I hadn't run
after you!' However she seemed to have a short cut
for getting back to cheerfulness, and set her face to
signify archness. "It wouldn't do, Mr Oak. I want
somebody to tame me; I am too independent ; and
you would never be able to, I know.'
<P 81>
Oak cast his eyes down the field in a way implying
that it was useless to attempt argument.
" Mr. Oak,' she said, with luminous distinctness and
common sense, " you are better off than I. I have
hardly a penny in the world -- I am staying with my
aunt for my bare sustenance. I am better educated
than you -- and I don't love you a bit: that's my side
of the case. Now yours: you are a farmer just begin+
ing; and you ought in common prudence, if you marry
at all (which you should certainly not think of doing
at present) to marry a woman with money, who would
admiration.
"That's the very thing I had been thinking myself !'
he naively said.
Farmer Oak had one-and-a-half Christian character
istics too many to succeed with Bathsheba : his humility,
and a superfluous moiety of honesty. Bathsheba was
decidedly disconcerted,
"Well, then, why did you come and disturb me?'
she said, almost angrily, if not quite, an enlarging red
spot rising in each cheek.
" I can't do what I think would be -- would be --  -- '
" Right ? '
" No : wise.'
" You have made an admission now, Mr. Oak,' she
exclaimed, with even more hauteur, and rocking her
head disdainfully. 'After that, do you think I could
marry you? Not if I know it.'
He broke in passionately ! "But don't mistake me
like that! Because I am open enough to own what
every man in my shoes would have thought of, you
make your colours come up your face, and get crabbed
with me. That about your not being good enough for
me is nonsense. You speak like a lady -- all the parish
notice it, and your uncle at Weatherbury is, I have
heerd, a large farmer -- much larger than ever I shall
be. May I call in the evening, or will you walk along
with me o' Sundays? I don't want you to make-up
your mind at once, if you'd rather not.'
<P 82>
" No -- no -- I cannot. Don't press me any more --
don't. I don't love you -- so 'twould be ridiculous,'
she said, with a laugh.
No man likes to see his emotions the sport of a
merry-go-round of skittishness. " Very well,' said Oak,
firmly, with the bearing of one who was going to give '
his days and nights to Ecclesiastes for ever. "Then
I'll ask you no more.'
<C v>
<P 83>
DEPARTURE OF BATHSHEBA -- A PASTORAL TRAGEDY
THE news which one day reached Gabriel, that Bath+
sheba Everdene had left the neighbourhood, had an
influence upon him which might have surprised any
who never suspected that the more emphatic the renun+
ciation the less absolute its character.
It may have been observed that there is no regula
path for getting out of love as there is for getting in.
Some people look upon marriage as a short cut that way,
but it has been known to fail. Separation, which was
the means that chance offered to Gabriel Oak by
Bathsheba's disappearance though effectual with people
of certain humours is apt to idealise the removcd object
with others -- notably those whose affection, placid and
regular as it may be flows deep and long. Oak belonged
to the even-tempered order of humanity, and felt the
secret fusion of himself in Bathsheba to be burning with
a finer flame now that she was gone -- that was all.
His incipient friendship with her aunt-had been
nipped by the failure of his suit, and all that Oak learnt
of Bathsheba's movements was done indirectly. It ap+
peared that she had gone to a place called Weatherbury,
more than twenty miles off, but in what capacity --
whether as a visitor, or permanently, he could not
discover.
Gabriel had two dogs. George, the elder, exhibited
an ebony-tipped nose, surrounded by a narrow margin
of pink flesh, and a coat marked in random splotches
approximating in colour to white and slaty grey ; but the
grey, after years of sun and rain, had been scorched and
washed out of the more prominent locks, leaving them
of a reddish-brown, as if the blue component of the grey
had faded, like the indigo from the same kind of colour in
Turner's pictures. In substance it had originally been
hair, but long contact with sheep seemed
<P 84>
to be turning
it by degrees into wool of a poor quality and staple.
This dog had originally belonged to a shepherd of
inferior morals and dreadful temper, and the result was
that George knew the exact degrees of condemnation
signified by cursing and swearing of all descriptions
better than the wickedest old man in the neighbourhood.
Long experience had so precisely taught the animal the
difference between such exclamations as 'Come in .! '
and 'D --  --  ye, come in !.' that he knew to a hair's
breadth the rate of trotting back from the ewes' tails
that each call involved, if a staggerer with the sheep
crook was to be escaped. Though old, he was clever
and trustworthy still.
The young dog, George's son, might possibly have
been the image of his mother, for there was not much
resemblance between him and George. He was learn+
ing the sheep-keeping business, so as to follow on at
the flock when the other should die, but had got no
further than the rudiments as yet -- still finding an
insuperable difculty in distinguishing between doing a
thing well enough and doing it too well. So earnest
and yet so wrong-headed was this young dog (he had no,
name in particular, and answered with perfect readiness
to any pleasant interjection), that if sent behind the
flock to help them on, he did it so thoroughly that he
would have chased them across the whole county with
the greatest pleasure if not called off or reminded when
to step by the example of old George.
Thus much for the dogs. On the further side of
Norcombe Hill was a chalk-pit, from which chalk had
been drawn for generations, and spread over adjacent
farms. Two hcdges converged upon it in the form of
a V, but without quite meeting. The narrow opening
left, which was immediately over the brow of the pit,
was protected by a rough railing.
One night, when Farmer Oak had returned to, his
house, believing there would be no further necessity for
his attendance on the down, he called as usual to the
dogs, previously to shutting them up in the outhouse till
next morning. Only one responded -- old George ; the
other-could not be found, either in the house, lane, or
garden. - Gabriel then remembered
<P 85>
that he had left the
two dogs on the hill eating a dead lamb (a kind of meat
he usually kept from them, except when other food-ran
finished his meal, he went indoors to the luxury of a bed,
which latterly he had only enjoyed on Sundays.
It was a still, moist night. Just before dawn he was
assisted in waking by the abnormal reverberation of
familiar music. To the shepherd, the note of the sheep'
chronic sound that only makes itself noticed by ceasing
ever distant, that all is well in the fold. In the solemn
This exceptional ringing may be caused in two ways -- +
by the rapid feeding of the sheep bearing the bell, as
when the flock breaks into new pasture, which gives it
an intermittent rapidity, or by the sheep starting off in
a run, when the sound has a regular palpitation. The
experieced ear of Oak knew the sound he now' heard
to be caused by the running of the flock with great
velocity.
He jumped out of bed, dressed, tore down the lane
through a foggy dawn, and ascended the hill. The
forward ewes were kept apart from those among which
the fall of lambs would be later, there being two hundred
of the latter class in Gabriel's flock. These two hundred
seemed to have absolutely vanished from the hill. There
were the fifty with their lambs, enclosed at the other end
as he had left them, but the rest, forming the bulk of
the flock, were nowhere. Gabriel called at the top of
his voice the shepherd's call.
" Ovey, ovey, ovey .! '
Not a single bleat. He went to the hedge -- a gap
had been broken through it, and in the gap were the
footprints of the sheep. Rather surprised to find
them break fence at this season, yet putting it down
instantly to their great fondness for ivy in winter-time,
of which a great deal grew in the plantation, he followed
through the hedge. They were not in the plantation.
He called again : the valleys and farthest hills
<P 86>
resounded
as when the sailors invoked the lost Hylas on the Mysian
shore ; but no sheep. He passed through the trees and
along the ridge of the hill. On the extreme summit,
where the ends of the two converging hedges of which
we have spoken were stopped short by meeting the brow
of the chalk-pit, he saw the younger dog standing against
the sky -- dark and motionless as Napoleon at St.
Helena.
A horrible conviction darted through Oak. With
a sensation of bodily faintness he advanced : at one
point the rails were broken through, and there he saw
the footprints of his ewes. The dog came up, licked
his hand, and made signs implying that he expected
some great reward for signal services rendered. Oak
looked over the precipice. The ewes lay dead and dying
at its foot -- a heap of two hundred mangled careases,
representing in their condition just now at least two
hundred more.
Oak was an intensely humane man: indeed, his
humanity often tore in pieces any politic intentions of
his which bordered on strategy, and carried him on as
by gravitation. A shadow in his life had always been
that his flock ended in mutton -- that a day came and
found every shepherd an arrant traitor to his defenceless
sheep. His first feeling now was one of pity for the
untimely fate of these gentle ewes and their unborn
lambs.
It was a second to remember another phase of the
matter. The sheep were not insured. All the savings
of a frugal life had been dispersed at a blow ; his hopes
of being an independent farmer were laid low -- possibly
for ever. Gabriel's energies, patience, and industry had
been so severely taxed during the years of his life between
eighteen and eight-and-twenty, to reach his present stage
of progress' that no more seemed to be left in him. He
hands.
Stupors, however, do not last for ever, and Farmer
Oak recovered from his. It was as remarkable as it was
characteristic that the one sentence he uttered was in
thankfulness : --
'Thank God I am not married : what would she have
done in the poverty now coming upon me ! '
<P 87>
Oak raised his head, and wondering what he could
do listlessly surveyed the scene. By the outer margin
of the Pit was an oval pond, and over it hung the
attenuated skeleton of a chrome-yellow moon which
had only a few days to last -- the morning star dogging
her on the left hand. The pool glittered like a dead
man's eye, and as the world awoke a breeze blew,
shaking and elongating the reflection of the moon
without breaking it, and turning the image of the star
to a phosphoric streak upon the water. All this Oak
saw and remembered.
As far as could be learnt it appeared that the poor
young dog, still under the impression that since he was
kept for running after sheep, the more he ran after
them the better, had at the end of his meal off the
dead lamb, which may have given him additional energy
and spirits, collected all the ewes into a corner, driven
the timid creatures through the hedge, across the upper
field, and by main force of worrying had given them
momentum enough to break down a portion of the
rotten railing, and so hurled them over the edge.
George's son had done his work so thoroughly that
he was considered too good a workman to live, and was,
in fact, taken and tragically shot at twelve o'clcck that
same day -- another instance of the untoward fate which
so often attends dogs and other philosophers who
follow out a train of reasoning to its logical conclusion,
and attempt perfectly consistent conduct in a world
made up so largely of compromise.
Gabriel's farm had been stocked by a dealer -- on the
strength of Oak's promising look and character -- who
was receiving a percentage from the farmer till such
time as the advance should be cleared off Oak found+
that the value of stock, plant, and implements which
were really his own would be about sufficient to pay his
debts, leaving himself a free man with the clothes he
stood up in, and nothing more.
<C vi>
<P 88>
THE FAIR -- THE JOURNEY -- THE FIRE
TWO months passed away. We are brought on to a
day in February, on which was held the yearly statute
or hiring fair in the county-town of Casterbridge.
At one end of the street stood from two to three
hundred blithe and hearty labourers waiting upon Chance
 -- all men of the stamp to whom labour suggests nothing
worse than a wrestle with gravitation, and pleasure
nothing better than a renunciation of the same among
these, carters and waggoners were distinguished by
having a piece of whip-cord twisted round their hats;
thatchers wore a fragment of woven straw; shepherds
held their sheep-crooks in their hands; and thus the
situation required was known to the hirers at a
glance.
In the crowd was an athletic young fellow of some+
what superior appearance to the rest -- in fact, his
superiority was marked enough to lead several ruddy
peasants standing by to speak to him inquiringly, as to
a farmer, and to use 'Sir' as a finishing word. His
answer always was,
'I am looking for a place myself -- a bailiff's. Do
Ye know of anybody who wants one ?'
Gabriel was paler now. His eyes were more medi+
tative, and his expression was more sad. He had
passed through an ordeal of wretchedness which had
given him more than it had taken away. He had sunk
from his modest elevation as pastoral king into the very
slime-pits of Siddim ; but there was left to him a digni+
fied calm he had never before known, and that indiffer+
ence to fate which, though it often makes a villain of
a man, is the basis of his sublimity when it does not.
And thus the abasement had been exaltation, and the
loss gain.
In the morning a regiment of cavalry had left the
town, and a sergeant and his party had been beating up
for recruits through the four streets. As the end of the
day drew on, and
<P 89>
he found himself not hired, Gabriel
almost wished that he had joined them, and gone off to
serve his country. Weary of standing in the market+
place, and not much minding the kind of work he
turned his hand to, he decided to offer himself in some
other capacity than that of bailiff.
All the farmers seemed to be wanting shepherds.
Sheep-tending was Gabriel's speciality. Turning down
an obscure street and entering an obscurer lane, he went
up to a smith's shop.
'How long would it take you to make a shepherd's
crook ? '
'Twenty minutes.'
'How much ? '
'Two shillings.'
He sat on a bench and the crook was made, a stem
being given him into the bargain.
He then went to a ready-made clothes' shop, the
owner of which had a large rural connection. As the
crook had absorbed most of Gabriel's money, he
attempted, and carried out, an exchange of his overcoat
for a shepherd's regulation smock-frock.
This transaction having been completed, he again
hurried off to the centre of the town, and stood on the
kerb of the pavement, as a shepherd, crook in hand.
Now that Oak had turned himself into a shepherd, it
seemed that bailifs were most in demand. However, two
or three farmers noticed him and drew near. Dialogues
followed, more or lessin the subjoined for: --
'Where do you come from?'
'Norcombe.'
'That's a long way.
'Fifteen miles.'
'Who's farm were you upon last?'
'My own.'
This reply invariably operated like a rumour of
cholera. The inquring farmer would edge away and
shake his head dubiously. Gabriel, like his dog, was
too good to be trustworthy,. and he never made advance
beyond this point.
It is safer to accept any chance that offers itself, and
 
 
<P 90>
extemporize a procedure to fit it, than to get a good
shepherd, but had laid himself out for anything in the
whole cycle of labour that was required in the fair. It
grew dusk. Some merry men were whistling and
singing by the corn-exchange. Gabriel's hand, which
had lain for some time idle in his smock-frock pocket,
touched his flute which he carried there. Here was
an opportunity for putting his dearly bought wisdom
into practice.
He drew out his flute and began to play  Jockey to
the Fair' in the style of a man who had never known
moment's sorrow. Oak could pipe with Arcadian
sweetness and the sound of the well-known notes
cheered his own heart as well as those of the loungers.
He played on with spirit, and in half an hour had
earned in pence what was a small fortune to a destitute
man.
By making inquiries he learnt that there was another
fair at Shottsford the next day.
'How far is Shottsford?'
'Ten miles t'other side of Weatherbury.'
Weatherbury!. It was where Bathsheba had gone
two months before. This information was like coming
from night into noon.
'How far is it to Weatherbury ?'
'Five or six miles.'
Bathsheba had probably left Weatherbury long before
this time, but the place had enough interest attaching
to it to lead Oak to choose Shottsford fair as his next
field of inquiry, because it lay in the Weatherbury
quarter. Moreover, the Weatherbury folk were by no
means uninteresting intrinsically. If report spoke truly
they were as hardy, merry, thriving, wicked a set as
any in the whole county. Oak resolved to sleep at
Weatherbury -- -that -- night on his way to Shottsford,
and struck out at once -- into the -- high road which had
been recommended as the direct route to the village in
question.
The road stretched through water-meadows traversed
by little brooks, whose quivering surfaces were braided
along their centres, and folded into creases at the sides;
or, where the flow was more rapid, the stream was pied
with spots of white froth,
<P 91>
which rode on in undisturbed
serenity. On the higher levels the dead and dry carcases
of leaves tapped the ground as they bowled along helter+
skelter upon the shoulders of the wind, and little birds
in the hedges were rustling their feathers and tucking
themselves in comfortably for the night, retaining their
places if Oak kept moving, but flying away if he
stopped to look at them. He passed by Yalbury-Wood
where the game-birds were rising to their roosts, and
heard the crack-voiced cock-pheasants' 'cu-uck, cuck,'
and the wheezy whistle of the hens.
By the time he had walked three or four miles every
shape in the-landscape had assumed a uniform hue of
blackness. He descended Yalbury Hill and could just
discern ahead of him a waggon, drawn up under a great
over-hanging tree by the roadside.
On coming close, he found there were no horses
attached to it, the spot being apparently quite deserted.
The waggon, from its position, seemed to have been left
there for the night, for beyond about half a truss  of hay
which was heaped in the bottom, it was quite empty.
Gabriel sat down on the shafts of the vehicle and con+
sidered his position. He calculated that he had walked
a very fair proportion of the journey; and having been
on foot since daybreak, he felt tempted to lie down upon
the hay in the waggon instead of pushing on to the
village of Weatherbury, and having to pay for a lodging.
Eating his las slices of bread and ham, and drinking
from the bottle of cider he had taken the precaution to
bring with him, he got into the lonely waggon. Here
he spread half of the hay as a bed, and, as well as he
could in the darkness, pulled the other half over him
by way of bed-clothes, covering himself entirely, and
feeling, physically, as comfortable as ever he had been
in his life. Inward melancholy it was impossible for
a man like Oak, introspective far beyond his neighbours,
to banish quite, whilst conning the present. untoward
page of his history. So, thinking of his misfortunes,
amorous and pastoral he fell asleep, shepherds enjoying,
in common with sailors, the privilege of being able to
summon the god instead of having to wait for him.
<P 92>
On somewhat suddenly awaking after a sleep of
whose length he had no idea, Oak found that the waggon
was in motion. He was being carried along the road
at a rate rather considerable for a vehicle without
springs, and under circumstances of physical uneadiness,
his head being dandled up and down on the bed of
the waggon like a kettledrum-stick. He then dis+
tinguished voices in conversation, comig from the
forpart of the waggon. His concern at this dilemma
(which would have been alarm, had he been a thriving
man; but -- misfortune is a fine opiate to personal terror)
led him to peer cautiously from the hay, and the first
sight he beheld was the stars above him. Charles's
Wain was getting towards a right angle with the Pole
star, and Gabriel concluded that it must be about nine
o'clock -- in other words, that he had slept two hours.
This small astronomical calculation was made without
any positive effort, and whilst he was stealthily turning
to discover, if possible, into whose hands he had fallen.
Two figures were dimly visible in front, sitting with
their legs outside the waggon, one of whom was driving.
Gabriel soon found that this was the waggoner, and it
appeared they had come from Casterbridge fair, like
himself.
A conversation was in progress, which continued
thus : --
'Be as 'twill, she's a fine handsome body as far's
looks be concerned. But that's only the skin of the
woman, and these dandy cattle be as-proud as a lucifer
in their insides.'
'Ay -- so 'a do seem, Billy Smallbury -- so 'a do seem.'
This utterance was very shaky by nature, and more so
by circumstance, the jolting of the waggon not being+
without its effect upon the speaker's larynx. It came
'from the man who held the reins.
'She's a very vain feymell -- so 'tis said here and
there.'
'Ah, now. If so be 'tis like that, I can't look her in
the face. Lord, no : not I -- heh-heh-heh .! Such a shy
man as I be.!'
'Yes -- she's very vain. 'Tis said that every night at
going to bed she looks in the glass to put on her night+
cap properly.'
'And not a married woman. Oh, the world .!
"And 'a can play the peanner, so 'tis said. Can
play so clever
<P 93>
that 'a can make a psalm tune sound as
well as the merriest loose song a man can wish for.'
'D'ye tell o't .! A happy time for us, and I feel quite
a new man! And how do she play?'
'That I dson't know, Master Poorgrass.'
On hearing these and other similar remarks, a wild
thought flashed into Gabriel's mind that they might
be speaking of Bathsheba. There were, however, no
ground for retaining such a supposition, for the waggon,
though going in the direction of Weatherbury, might be
going beyond it, and the woman alluded to seemed to be
the mistress of some estate. They were now apparently
close upon Weatherbury and not to alarm the speakers
unnecessarily, Gabriel slipped out of the waggon unseen.
He turned to an opening in the hedge, which he
found to be a gate, and mounting thereon, he sat
meditating whether to seek a cheap lodging in the
village, or to ensure a cheaper one by lying under
some hay or corn-stack. The crunching jangle of the
waggon died upon his ear. He was about to walk on,
when he noticed on his left hand an unusual light -- +
appearing about half a mile distant. Oak watched it,
and the glow increased. Something was on fire.
Gabriel again mounted the gate, and, leaping down
on the other side upon what he found to be ploughed
soil, made across the field in the exact direction of the
fire. The blaze, enlarging in a  double ratio by his
approach and its own increase, showed him as he drew
nearer the outlines of ricks beside it, lighted up to great
distinctness. A rick-yard was the source of the fire.
His weary face now began to be painted over with a
rich orange glow, and the whole front of his smock+
frock and gaiters was covered with a dancing shadow
pattern of thorn-twigs -- the light reaching him through
a leafless intervening hedge -- and the metallic curve of
his sheep-crook shone silver-bright in the same abound+
ing rays. He came up to the boundary fence, and
stood to regain breath. It seemed as if the spot was
unocupied by a living soul.
The fire was issuing from a long straw-stack, which
was so
<P 94>
far gone as to preclude a possibility of saving it.
A rick burns differently from a house. As the wind
blows the fire inwards, the portion in flames completely
disappears like melting sugar, and the outline is lost
to the eye. However, a hay or a wheat-rick, well put
together, will resist combustion for a length of time, if
it begins on the outside.
This before Gabriel's eyes was a- rick of straw, loosely
put together, and the flames darted into it with lightning
swiftness. It glowed on the windward side, rising and
falling in intensity, like the coal of a cigar. Then a
superincumbent bundle rolled down, with a whisking
noise ; flames elongated, and bent themselves about
with a quiet roar, but no crackle. Banks of smoke
went off horizontally at the back like passing clouds,
and behind these burned hidden pyres, illuminating
the semi-transparent sheet of smoke to a lustrous yellow
uniformity. Individual straws in the foreground were
consumed in a creeping movement of ruddy heat, as
if they were knots of red worms, and above shone
imaginary fiery faces, tongues hanging from lips, glaring
eyes, and other impish forms, from which at intervals
sparks flew in clusters like birds from a nest,
Oak suddenly ceased from being a mere spectator
by discovering the case to be more serious than he had
at first imagined. A scroll of smoke blew aside and
revealed to him a wheat-rick in startling juxtaposition
with the decaying one, and behind this a series of
others, composing the main corn produce of the farm;
so that instead of the straw-stack standing, as he had
imagined comparatively isolated, there was a regular
connection between it and the remaining stacks of the
group.
Gabriel leapt over the hedge, and saw that he was
not alone. The first man he came to was running
about in a great hurry, as if his thoughts were several
yards in advance of his body, which they could never
drag on fast enough.
'O, man -- fire, fire ! A good master and a. bad
servant is fire, fire .! -- I mane a bad servant and a good
master O, Mark Clark -- come !- And you, Billy
Smallbury -- and you, Maryann Money -- and you, Jan
Coggan, and Matthew there!' Other figures now
appeared behind this shouting man and among the
smoke, and
<P 95>
Gabriel found that, far from being alone
he was in a great company -- whose shadows danced
merrily up and down, timed by the jigging of the
flames, and not at all by their owners' movements.
The assemblage -- -belonging to that class of society
which casts its thoughts into the form of feeling, and
its feelings into the form of commotion -- set to work
with a remarkable confusion of purpose.
'Stop the draught under the wheat-rick!' cried
Gabriel to those nearest to him. The corn stood on
stone staddles, and between these, tongues of yellow
hue from the burning straw licked and darted playfully.
If the fire once got under this stack, all would be
lost.
'Get a tarpaulin -- quick .! ' said Gabriel.
A rick-cloth was brought, and they hung it like a
curtain across the channel. The flames immediately
ceased to go under the bottom of the corn-stack, and
stood up vertical.
'Stand here with a bucket of water and keep the
cloth wet,' said Gabriel again.
The flames, now driven upwards, began to attack
the angles of the huge roof covering the wheat-stack.
'A ladder,' cried Gabriel.
'The ladder was against the straw-rick and is burnt
to a cinder,' said a spectre-like form in the smoke.
Oak seized the cut ends of the sheaves, as if he
were going to engage in the operation of ' reed-drawing,'
and digging in his feet, and occasionally sticking in the
stem of his sheep-crook, he clambered up the beetling
face. He at once sat astride the very apex, and began
with his crook to beat off the fiery fragments which had
lodged thereon, shouting to the others to get him a
bough and a ladder, and some water.
Billy Smallbury -- one of the men who had been on
the waggon -- by this time had found a ladder, which
Mark Clark ascended, holding on beside Oak upon the
thatch. The smoke at this corner was stifling, and
Clark, a nimble fellow, having been handed a bucket
of water, bathed Oak's face and sprinkled him generally,
whilst Gabriel, now with a long beech-bough in one
hand, in addition to his crook in the other, kept
sweeping the stack and dislodging all fiery particles.
<P 96>
On the ground the groups of villagers were still
occupied in doing all they could to keep down the
conflagration, which was not much. They were all
tinged orange, and backed up by shadows of varying
pattern. Round the corner of the largest stack, out
of the direct rays of the fire, stood a pony, bearing a
young woman on its back. By her side was another
woman, on foot. These two seemed to keep at a
distance from the fire, that the horse might not beome
restive.
'He's a shepherd,' said the woman on foot. 'Yes --
he is. See how his crook shines as he beats the rick
with it. And his smock-frock is burnt in two holes, I
declare.! A fine young shepherd he is too, ma'am.'
' Whose shepherd is he?' said the equestrian in a
clear voice.
'Don't know, ma'am.'
 " Don't any of the others know ?'
 " Nobody at all -- I've asked 'em. Quite a stranger,
 they say.'
 The young woman on the pony rode out from the
shade and looked anxiously around.
"Do you think the barn is safe ?" she said.
"D'ye think the barn is safe, Jan Coggan ?' said
the second woman, passing on the question to the
nearest man in that direction.
"Safe -now -- leastwise I think so. If this rick had
gone the barn would have followed. 'Tis- that bold
shepherd up there that have done the most good -- he
sitting on the top o' rick, whizzing his great long-arms
about like a windmill.'
" He does work hard,' said the young woman on
horseback, looking up at Gabriel through her thick
woollen veil. "I wish he was shepherd here. Don't
any of you know his name.'
"Never heard the man's name in my life, or seed
his form afore.'
The fire began to get worsted, and Gabriel's elevated
position being no longer required of him, he made as
if to descend.
"Maryann,' said the girl on horseback, "go to him
as he comes down, and say that the farmer wishes to
thank him for the great service he has done.'
Maryann stalked off towards the rick and met
Oak at the foot of the ladder. She delivered ber
message.
<P 97>
" Where is your master the farmer ?' asked Gabriel,
kindling with the idea of getting employment that
seemed to strike him now.
" 'Tisn't a master ; 'tis a mistress, shepherd.'
" A woman farmer ? '
"Ay, 'a b'lieve, and a rich one too .!' said a by"
stander. " Lately 'a came here from a distance. Took
on her uncle's farm, who died suddenly. Used to
measure his money in half-pint cups. They say now
that she've business in every bank in Casterbridge, and
thinks no more of playing pitch-and-toss sovereign than
you and I, do pitch-halfpenny -- not a bit in the world,
shepherd.'
"That's she, back there upon the pony,' said Mary+
ann ;"wi'her face a-covered up in that black cloth with
holes in it.'
Oak, his features smudged, grimy, and undiscoverable
from the smoke and heat, his smock-frock burnt-into
holes and dripping with water, the ash stem of his sheep+
crook charred six inches shorter, advansed with the
humility stern adversity had thrust upon him up to
the slight female form in the saddle. He lifted his
hat with respect, and not without galantry: stepping
close to her hanging feet he said in a hesitating voice, --
" Do you happen to want a shepherd, ma'am ? '
She lifted the wool veil tied round her face, and
looked all astonishment. Gabriel and his cold-hearted
darling, Bathsheba Everdene, were face to face.
Bathsheba did not speak, and he mechanically
repeated in an abashed and sad voice, --
" Do you want a shepherd, ma'am ? '
<C vii>
<P 98>
RECOGNITION -- A TIMID GIRL
BATHSHEBA withdrew into the shade. She scarcely
knew whether most to be amused at the singularity of
the meeting, or to be concerned at its awkwardness.
There was room for a little pity, also for a very little
exultation : the former at his position, the latter at her
own. Embarrassed she was not, and she" remembered
Gabriel's declaration of love to her at Norcombe only
to think she had nearly forgotten it.
" Yes,' she murmured, putting on an air of dignity,
and turning again to him with a little warmth of cheek ;
" I do want a shepherd. But --  -- '
" He's the very man, ma'am,' said one of the villagers,
quietly.
Conviction breeds conviction. " Ay, that 'a is,' said
a second, decisively.
"The man, truly .! ' said a third, with heartiness."
" He's all there ! ' said number four, fervidly."
Then will you tell him to speak to the bailiff, said
Bathsheba.
All "was practical again now. A summer eve and
loneliness would have been necessary to give the
meeting its proper fulness of romance.
the palpitation within his breast at discovering that this
Ashtoreth of strange report was only a modification of
Venus the well-known and admired, retired with him to
talk over the necessary preliminaries of hiring.
The fire before them wasted away. "Men,' said
Bathsheba, " you shall take a little refreshment after this
extra work. Will you come to the house ?'
"We could knock in a bit and a drop a good deal
freer, Miss,
<P 99>
if so be ye'd send it to Warren's Malthouse,'
replied the spokesman.
Bathsheba then rode off into the darkness, and the
men straggled on to the village in twos and threes -- Oak
and the bailiff being left by the rick alone.
"And now,' said the bailiff, finally, "all is settled, I
think, about your coming, and I am going home-along.
Good-night to ye, shepherd.'
" Can you get me a lodging ? ' inquired Gabriel.
'That I can't, indeed," he said, moving past Oak as
a Christian edges past an offertory-plate when he does
not mean to contribute. "If you follow on the road till
you come to Warren's Malthouse, where they are all
gone to have their snap of victuals, I daresay some of
'em will tell you of a place. Good-night to ye, shepherd.'
The bailiff who showed this nervous dread of loving
his neighbour as himself, went up the hill, and Oak
walked on to the village, still astonished at the ren+
counter with Bathsheba, glad of his nearness to her, and
perplexed at the rapidity with which the unpractised girl
of Norcombe had developed into the supervising and cool
woman here. But some women only require an emerg+
ency to make them fit for one.
Obligcd, to some extent, to forgo dreaming in order
to find the way, he reachcd the churchyard, and passed
round it under the wall where several ancient trees grew.
There was a wide margin of grass along here, and
Gabriel's footsteps were deadened by its softness, even
at this indurating period of the year. When abreast of
a trunk which appeared to be the oldest of the old, he
became aware that a figure was standing behind it.
Gabriel did not pause in his walk, and in another
moment he accidentally kicked a loose stone. The noise
was enough to disturb the motionless stranger, who
started and assumed a careless position.
It was a slim girl, rather thinly clad.
" Good-night to you,' said Gabriel, heartily.
" Good-night,' said the girl to Gabriel.
The voice was unexpectedly attractive ; it was "the
low and
<P 100>
dulcet note suggestive of romance ; common in
descriptions, rare in experience.
'I'll thank you to tell me if I'm in the way for
Warren's Malthouse ? ' Gabriel resumed, primarily to gain
the information, indirectly to get more of the music.
"Quite right. It's at the bottom of the hill. And
do you know --  -- ' The girl hesitated and then went
on again. "Do you know how late they keep open
the Buck's Head Inn?' She seemed" to be won by
Gabriel's heartiness, as Gabriel had been won by her
modulations.
" I don't know where the Buck's Head is, or anything
about it. Do you think of going there to-night ?'
" Yes --  -- ' The woman again paused. There was
no necessity for any continuance of speech, and the fact
that she did add more seemed to proceed from an
unconscious desire to show unconcern by making a
remark, which is noticeable in the ingenuous when they
are acting by stealth. " You are not a Weatherbury man ? '
she said, timorously.
' I am not. I am the new shepherd -- just arrived.'
"Only a shepherd -- and you seem almost a farmer by
your ways.'
" Only a shepherd,' Gabriel repeated, in a dull cadence
of finality. " His thoughts were directed to the past, his
eyes to the feet of the girl; and for the first time he
saw lying there a bundle of some sort. She may have
perceived the direction of his face, for she said
coaxingly, --
" You won't say anything in the parish about having
seen me here, will you -- at least, not for a day or two ?'
"I won't if you wish me not to,' said Oak.
"Thank you, indeed,' the other replied.'I am
rather poor, and I don't want people to know anything
about me.'  Then she was silent and shivered.
'You ought to have a cloak on such a cold night,'
Gabriel observed. " I would advise 'ee to get indoors."
"O no! Would you mind going on and leaving
me ? I thank you much for what you have told me.'
" I will go on,' he said ; adding hesitatingly, -- ' Since
you are
<P 101>
not very well off, perhaps you would accept this
trifle from me. It is only a shilling, but'it is all I have
to spare.'
' Yes, I will take it,' said the stranger, gratefully.
She extended her hand ; Gabriel his. In feeling for
each other's palm in the gloom before the money could
be passed, a minute incident occurred which told much.
Gabriel's fingers alighted on the young woman's wrist.
It was beating with a throb of tragic intensity. He had
frequently felt the same quick, hard beat in the femoral
artery of -- his lambs when overdriven. It suggested a
consumption too great of a vitality which, to judge from
her figure and stature, was already too little.
"What is the matter ?'
" Nothing.'
'But there is?'
" No, no, no ! Let your having seen me be a.secret .! "
' Very well ; I will. Good-night, again.'
" Good-night.'
The young girl remained motionless by the tree, and
Gabriel descended into the village of Weatherbury, or
Lower Longpuddle as it was sometimes called. He
fancied that he had felt himself in the penumbra of a
very deep sadness when touching that slight and fragile
creature. But wisdom lies in moderating mere impres+
sions, and Gabriel endeavoured to think little of this.
<C viii>
<P 102>
THE MALTHOUSE -- THE CHAT -- NEWS
WARREN'S Malthouse was enclosed by an old wall
inwrapped with ivy, and though not much of the exterior
was visible at this hour, the character and purposes of
the building were clearly enough shown by its outline
upon the sky. From the walls an overhanging thatched
roof sloped up to a point in the centre, upon which rose
a small wooden lantern, fitted with louvre-boards on all
the four sides, and from these openings a mist was dimly
perceived to be escaping into the night air. There was
no window in front ; but a square hole in the door was
glazed with a single pane, through which red, comfortable
rays now stretched out upon the ivied wall in front.
Voices were to be heard inside.
Oak's hand skimmed the surface of the door with
fingers extended to an Elymas-the-Somerer pattern, till
he found a leathern strap, which he pulled. This lifted
a wooden latch, and the door swung open.
The room inside was lighted only by the, ruddy glow
from the kiln mouth, which shone over ,the floor with
the streaming, horizontality of the setting sun, and threw
upwards the shadows of all facial irregularities in those
assembled around. The stone-flag floor was worn into
a path from the doorway to the kiln, and into undula+
tions everywhere. A curved settle of unplaned oak
stretched along one side, and in a remote corner was a
small bed and bedstead, the owner and frequent occupier
of which was the maltster.
This aged man was now sitting opposite the fire, his
frosty white hair and beard overgrowing his gnarled
figure like the grey moss and lichen upon a leafless
apple-tree. He wore breeches and the laced-up shoes
called ankle-jacks; he kept his eyes fixed upon the
fire.
<P 103>
Gabriel's nose was greeted by an atmosphere laden
with the sweet smell of new malt. The conversation
(which seemed to have been concerning the origin of the
fire) immediately ceased, and every one ocularly criticised
him to the degree expressed by contracting the flesh of
their foreheads and looking at him with narrowed eye+
lids, as if he had been a light too strong for their sight.
Several exclaimed meditatively, after this operation had
been completed : --
"Oh, 'tis the new shepherd, 'a b'lieve.'
"We thought we heard a hand pawing about the
door for the bobbin, but weren't sure 'twere not a dead
leaf blowed across,' said another. " Come in, shepherd ;
sure ye be welcome, though we don't know yer name.'
" Gabriel Oak, that's my name, neighbours.'
The ancient maltster sitting in the midst turned up
this -- his turning being as the turning of a rusty
crane.
"That's never Gable Oak's grandson over at Nor+
combe -- never !. ' he said, as a formula expressive of
surprise, which nobody was supposed to take literally'.
'My father and my grandfather were old men of the
name of Gabriel,' said the shepherd, placidly.
"Thought I knowed the man's face as I seed him
on the rick ! -- thought I did.! And where be ye trading
o't to now, shepherd ? '
" I'm thinking of biding here,' said Mr. Oak.
"Knowed yer grandfather for years and years !'
continued the maltster, the words coming forth of their
own accord as if the momentum previously imparted
had been sufficient.
'Ah -- and did you! '
" Knowed yer grandmother.'
'And her too!'
"Likewise knowed yer father when he was a child.
Why, my boy Jacob there and your father were sworn
brothers -- that they were sure -- weren't ye, Jacob ? '
"Ay, sure,' said his son, a young man about sixty+
five, with a semi-bald head and one tooth in the left
centre of his upper jaw, which made much of itself by
standing prominent, like a
<P 104>
milestone in a bank. 'But
'twas Joe had most to do with him. However, my son
William must have knowed the very man afore us --
didn't ye, Billy, afore ye left Norcombe ? '
"No, 'twas Andrew,' said Jacob's son Billy, a child
of forty, or thereabouts, who manifested the peculiarity
of possessing a cheerful soul in a gloomy body, and
whose whiskers were assuming a chinchilla shade here
and there.
"I can mind Andrew,' said Oak, 'as being a man in
the place when I was quite a child.'
"Ay -- the other day I and my youngest daughter,
Liddy, were over at my grandson's christening,' continued
Billy. ' We were talking about this very family, and
'twas only last Purification Day in this very world, when
the use-money is gied away to the second-best poor
folk, you know, shepherd, and I can mind the day
because they all had to traypse up to the vestry -- yes,
this very man's family.'
' Come, shepherd, and drink. 'Tis gape and
swaller with us -- a drap of sommit, but not of much
account,' said the maltster, removing from the fire his
eyes, which were vermilion-red and bleared by gazing
into it for so many years. "Take up the God-forgive"
me, Jacob. See if 'tis warm, Jacoh.'
Jacob stooped to the God-forgive-me, which was a
two-handled tall mug standing in the ashes, cracked
and charred with heat : it was rather furred with ex"
traneous matter about the outside, especially in the
crevices of the handles, the innermost curves of which
may not have seen daylight for several years by reason
of this encrustation thereon -- formed of ashes accident+
ally wetted with cider and baked hard; but to the mind
of any sensible drinker the cup was no worse for that,
being incontestably clean on the inside and about the
rim. It may be observed that such a class of mug is
called a God-forgive-me in Weatherbury and its vicinity
for uncertain reasons ; probably because its size makes
any given toper feel ashamed of himself when he sees
its bottom in drinking it empty.
Jacob, on receiving the order to see if the liquor was
warm enough, placidly dipped his forefinger into it by
way of thermometer, and having pronounced it nearly
of the proper degree, raised the cup and very civilly
attempted to dust some of the
<P 105>
ashes from the bottom
with the skirt of his smock-frock, because Shepherd Oak
was a stranger.
"A clane cup for the shepherd,' said the maltster
commandingly.
"No -- not at all," said Gabriel, in a reproving tone
of considerateness. "I never fuss about dirt in its pure
state, and when I know what sort it is.' Taking the
mug he drank an inch or more from the depth of its
contents, and duly passed it to the next man.
wouldn't think of giving such trouble to neighbours in
washing up when there's so much work to be done in
the world already,' continued Oak in a moister tone,
after recovering from the stoppage of breath which is
occasioned by pulls at large mugs.
' A right sensible man,' said Jacob.
" True, true ; it can't be gainsaid!.' observed a brisk
young man -- Mark Clark by name, a genial and pleasant
gentleman, whom to meet anywhcre in your travels was
to know, to know was to drink with, and to drink with
was, unfortunately, to pay for.
"And here's a mouthful of bread and bacon that
mis'ess have sent, shepherd. The cider will go down
better with a bit of victuals. Don't ye chaw quite close,
shepherd, for I let the bacon fall in the road outside as
I was bringing it along, and may be 'tis rather gritty.
There, 'tis clane dirt; and we all know what that is,
as you say, and you bain't a particular man we see,
shepherd.'
" True, true -- not at all,' said the friendly Oak.
'Don't let your teeth quite meet, and you won't feel
the sandiness at all. Ah !. 'tis wonderful what can be
done by contrivance .! '
" My own mind exactly, neighbour.'
" Ah, he's his grandfer's own grandson .! -- his grandfer
were just such a nice unparticular man !.' said the maltster.
" Drink, Henry Fray -- drink,' magnanimously said
Jan Coggan, a person who held Saint-Simonian notions
of share and share alike where liquor was concerned, as
the vessel showed signs of approaching him in its gradual
revolution among them.
Having at this moment reached the end of a wistful
gaze
<P 106>
into mid-air, Henry did not refuse. He was a man
of more than middle age, with eyebrows high up in his
forehead, who laid it down that the law of the world
was bad, with a long-suffering look through his listeners
at the world alluded to, as it presented itself to his
imagination. He always signed his name 'Henery' --
strenuously insisting upon that spelling, and if any
passing schoolmaster ventured to remark that the second
'e' was superfluous and old-fashioned, he received the
reply that ' H-e-n-e-r-y' was the name he was christened
and the name he 'would stick to -- in the tone of one
to whom orthographical differences were matters which
had a great deal to do with personal character.
Mr. Jan Coggan, who had passed the cup to Henery,
was a crimson man with a spacious countenance, and
private glimmer in his eye, whose name had appeared
on the marriage register of Weatherbury and neighbour+
ing parishes as best man and chief witness in countless
unions of the previous twenty years; he also very
frequently filled the post of head godfather in baptisms
of the subtly-jovial kind.
" Come, Mark Clark -- come. Ther's plenty more
in the barrel,' said Jan.
"Ay -- that I will; 'tis my only doctor,' replied Mr.
Clark, who, twenty years younger than Jan Coggan,
revolved in the same orbit. He secreted mirth on all
occasions for special discharge at popular parties.
" Why, Joseph Poorgrass, ye han't had a drop! ' said
Mr. Coggan to a self-conscious man in the background,
thrusting the cup towards him.
" Such a modest man as he is !. ' said Jacob Smallbury.
" Why, ye've hardly had strength of eye enough to look
in our young mis'ess's face, so I hear, Joseph ?'
All looked at Joseph Poorgrass with pitying reproach.
" No -- I've hardly looked at her at all,' simpered
Joseph, reducing his body smaller whilst talking,
apparently from a meek sense of undue prominence.
"And when I seed her, 'twas nothing but blushes with
me!'
' Poor feller,' said Mr. Clark.
"'Tis a curious nature for a man,' said Jan Coggan.
<P 107>
" Yes,' continued Jdseph Poorgrass -- his shyness,
which was so painful as a defect, filling him with a
mild complacency now that it was regarded as an
interesting study. " 'Twere blush, blush, blush with
me every minute of the time, when she was speaking
to me.'
"I believe ye, Joseph Poorgrass, for we all know ye
to be a very bashful man.'
"'Tis a' awkward gift for a man, poor soul,' said the
maltster. "And ye have suffered from it a long time,
we know.'
"Ay ever since I was a boy. Yes -- mother was
concerned to her heart about it -- yes. But twas all
nought.'
"Did ye ever go into the world to try and stop it,
Joseph Poorgrass ? '
"Oh ay, tried all sorts o' company. They took me
to Greenhill Fair, and into a great gay jerry-go-nimble
show, where there were women-folk riding round --
standing upon horses, with hardly anything on but their
smocks; but it didn't cure me a morsel. And then I
was put errand-man at the Women's Skittle Alley at the
back of the Tailor's Arms in Casterbridge. 'Twas a
horrible sinful situation, and a very curious place for a
good man. I had to stand and look ba'dy people in
the face from morning till night; but 'twas no use -- I
was just as-bad as ever after all. Blushes hev been
in the family for generations. There, 'tis a happy pro+
vidence that I be no worse.'
" True,' said Jacob Smallbury, deepening his thoughts
to a profounder view of the subject. "'Tis a thought
to look at, that ye might have been worse; but even
as you be, 'tis a very bad affliction for 'ee, Joseph. For
ye see, shepherd, though 'tis very well for a woman,
dang it all, 'tis awkward for a man like him, poor
feller ? '
" 'Tis -- 'tis,' said Gabriel, recovering from a medita+
tion. " Yes, very awkward for the man.'
" Ay, and he's very timid, too,' observed Jan Coggan.
"Once he had been working late at Yalbury Bottom,
and had had a drap of drink, and lost his way as he was
coming home-along through Yalbury Wood, didn't ye,
Master Poorgrass ? '
" No, no, no ; not that story !' expostulated the
modest man, forcing a laugh to bury his concern.
<P 108>
" --  --  And so 'a lost himself quite,' continued Mr
Coggan, with an impassive face, implying that a true
narrative, like time and tide, must run its course and
would respect no man. "And as he was coming along
in the middle of the night, much afeared, and not able
to find his way out of the trees nohow, 'a cried out,
" Man-a-lost!. man-a-lost !." A owl in a tree happened
to be crying "Whoo-whoo-whoo !" as owls do, you
know, shepherd ' (Gabriel nodded), " and Joseph, all
in a tremble, said, " Joseph Poorgrass, of Weatherbury,
sir.!"
"No, no, now -- that's too much! ' said the timid
man, becoming a man of brazen courage all of a sudden.
"I didn't say sir. I'll tike my oath I didn't say " Joseph
Poorgrass o' Weatherbury, sir." No, no ; what's right
is right, and I never said sir to the bird, knowing very
well that no man of a gentleman's rank would be
hollering there at that time o' night. " Joseph Poor+
grass of Weatherbury,"  -- that's every word I said, and
I shouldn't ha' said that if 't hadn't been for Keeper
Day's metheglin.... There, 'twas a merciful thing it
ended where it did.'
The question of which was right being tacitly waived
by the company, Jan went on meditatively : --
"And he's the fearfullest man, bain't ye, Joseph?
Ay, another time ye were lost by Lambing-Down Gate,
weren't ye, Joseph ? '
"I was,' replied Poorgrass, as if there were some
conditions too serious even for modesty to remember
itself under, this being one.
' Yes ; that were the middle of the night, too. The
gate would not open, try how he would, and knowing
there was the Devil's hand in it, he kneeled down.'
'Ay,' said Joseph, acquiring confidence from the
warmth of the fire, the cider, and a perception of the
narrative capabilities of the experience alluded to.
" My heart died within me, that time; but I kneeled
down and said the Lord's Prayer, and then the Belie
THE CHAT
right through, and then the Ten Commandments, in
earnest prayer. But no, the gate wouldn't open; and
then I went on with Dearly Beloved Brethren, and,
thinks I, this makes four, and 'tis all I know out of
book, and if this don't do it nothing will, and I'm a
lost man. Well, when I got to
<P 109>
Saying After Me, I
rose from my knees and found the gate would open
 -- yes, neighbours, the gate opened the same as ever.'
  A meditation on the obvious inference wsas indulged
in by all, and during its continuance each directed his
vision into the ashpit, which glowed like a desert in
the tropics under a vertical sun, shaping their eyes long
and liny, partly because of the light, partly from the
depth of the subject discussed.
  Gabriel broke the silence. "What sort of a place
is this to live at, and what sort of a mis'ess is she to
work under?' Gabriel's bosom thrilled gently as he
thus slipped under the notice of the assembly the inner+
most subject of his heart.
  "We d' know little of her -- nothing. She only
showed herself a few days ago. Her uncle was took
bad, and the doctor was called with his world-wide
skill; but he couldn't save the man. As I take it,
she's going to keep on the farm.
  "That's abouyt the shape o't, 'a b'lieve,' said Jan
uncle was a very fair sort of man. Did ye know en,
be under 'em as under one here and there. Her
uncle was a very fair sort of man. Did ye know 'en,
shepherd -- a bachelor-man ? '
  "Not at all.'
  "I used to go to his house a-courting my first wife,
Charlotte, who was his dairymaid. Well, a very good+
hearted man were Farmer Everdene, and I being a
respectable young fellow was allowed to call and see
her and drink as much ale as I liked, but not to carry
away any -- outside my skin I mane of course.'
  "Ay, ay, Jan Coggan; we know yer maning.'
  "And so you see 'twas beautiful ale, and I wished
to value his kindness as much as I could, and not to
be so ill-mannered as to drink only a thimbleful, which
would have been insulting the man's generosity  --  -- '
  "True, Master Coggan, 'twould so,' corroborated
Mark Clark.
  " --  -- And so I used to eat a lot of salt fish afore
going, and then by the time I got there I were as dry
as a lime-basket -- so thorough dry that that ale would
slip down  -- ah, 'twould slip down sweet! Happy
times! heavenly times! Such lovely drunks as I
used to have at that house! You can mind, Jacob?
You used to go wi' me sometimes.'
<P 110>
  "I can -- I can,' said Jacob. "That one, too, that
we had at Buck's Head on a White Monday was a
pretty tipple.'
  "'Twas. But for a wet of the better class, that
brought you no nearer to the horned man than you were
afore you begun, there was none like those in Farmer
Everdene's kitchen. Not a single damn allowed; no,
not a bare poor one, even at the most cheerful moment
when all were blindest, though the good old word of
sin thrown in here and there at such times is a great
relief to a merry soul.'
  "True,' said the maltster. "Nater requires her
swearing at the regular times, or she's not herself; and
unholy exclamations is a necessity of life.'
  "But Charlotte,' continued Coggan -- "not a word of
the sort would Charlotte allow, nor the smallest item of
taking in vain.... Ay, poor Charlotte, I wonder if she
had the good fortune to get into Heaven when 'a died!.
But 'a was never much in luck's way, and perhaps 'a
went downwards after all, poor soul.'
  "And did any of you know Miss Everdene's-father
and mother?' inquired the shepherd, who found some
difficulty in keeping the conversation in the desired
channel.
THE CHAT
  "I knew them a little,' said Jacob Smallbury; "but
they were townsfolk, and didn't live here. They've
been dead for years. Father, what sort of people were
mis'ess' father and mother?'
  "Well,' said the maltster, "he wasn't much to look
at; but she was a lovely woman. He was fond enough
of her as his sweetheart.'
  "Used to kiss her scores and long-hundreds o times,
so 'twas said,' observed Coggan.
  "He was very proud of her, too, when they were
married, as I've been told,' said the maltster.
  "Ay,' said Coggan. "He admired her so much that
he used to light the candle three time a night to look
at her.'
  "Boundless love; I shouldn't have supposed it in the
universe!' murmered Joseph Poorgrass, who habitually
spoke on a large scale in his moral reflections.
  "Well, to be sure,' said Gabriel.
  "Oh, 'tis true enough. I knowed the man and
woman both well. Levi Everdene -- that was the man's
name, sure. ""Man,''
<P 111>
saith I in my hurry, but he were
of a higher circle of life than that -- 'a was a gentleman+
tailor really, worth scores of pounds. And he became
a very celebrated bankrupt two or three times.'
  "Oh, I thought he was quite a common man!.' said
Joseph.
  "O no, no! That man failed for heaps of money;
hundreds in gold and silver.'
  The maltster being rather short of breath, Mr. Coggan,
after absently scrutinising a coal which had fallen among
the ashes, took up the narrative, with a private twirl of
his eye: --
  "Well, now, you'd hardly believe it, but that man --
husbands alive, after a while. Understand' 'a didn't
want to be fickle, but he couldn't help it. The poor
feller were faithful and true enough to her in his wish,
but his heart would rove, do what he would. He spoke
to me in real tribulation about it once. ""Coggan,''
he said, ""I could never wish for a handsomer woman
than I've got, but feeling she's ticketed as my lawful
wife, I can't help my wicked heart wandering, do what
I will.'' But at last I believe he cured it by making her
take off her wedding-ring and calling her by her maiden
name as they sat together after the shop was shut, and
so 'a would get to fancy she was only his sweetheart, and
not married to him at all. And as soon as he could
thoroughly fancy he was doing wrong and committing
the seventh, 'a got to like her as well as ever, and they
lived on a perfect picture of mutel love.'
  "Well, 'twas a most ungodly remedy,' murmured
Joseph Poorgrass; "but we ought to feel deep cheerful+
ness that a 'happy Providence kept it from being any
worse. You see, he might have gone the bad road and
given his eyes to unlawfulness entirely -- yes, gross un+
lawfulness, so to say it.'
  "You see,' said Billy Smallbury, "The man's will was
to do right, sure enough, but his heart didn't chime in.'
  "He got so much better, that he was quite godly
in his later years, wasn't he, Jan ?' said Joseph Poor+
grass. "He got himself confirmed over again in a more
serious way, and took to saying ""Amen'' almost as loud
as the clerk, and he liked to copy comforting verses
from the tombstones. He used, too, to hold the money+
plate at Let Your Light so Shine, and stand
<P 112>
godfather
to poor little come-by-chance children; and he kept a
missionary' box upon his table to nab folks unawares
when they called; yes, and he would-box the charity+
boys' ears, if they laughed in church, till they could
hardly stand upright, and do other deeds of piety
natural to the saintly inclined.'
  "Ay, at that time he thought of nothing but high
things,' added Billy Smallbury. "One day Parson Thirdly
met him and said, ""Good-Morning, Mister Everdene; 'tis
THE CHAT
a fine day!'' ""Amen'' said Everdene, quite absent+
like, thinking only of religion when he seed a parson+
  "Their daughter was not at all a pretty chiel at that
time,' said Henery Fray. "Never should have. thought
she'd have growed up such a handsome body as she is.'
  "'Tis to be hoped her temper is as good as her face.'
  "Well, yes; but the baily will have most to do with
the business and ourselves. Ah!' Henery gazed into
the ashpit, and smiled volumes of ironical knowledge.
  "A queer Christian, like the Devil's head in a cowl,
  "He is,' said Henery, implying that irony must cease
at a certain point. "Between we two, man and man, I
believe that man would as soon tell a lie Sundays as
working-days -- that I do so.'
  "Good faith, you do talk!' said Gabriel.
  "True enough,' said the man of bitter moods, looking
round upon the company with the antithetic laughter
that comes from a keener appreciation of the miseries
of life than ordinary men are capable of. 'Ah, there's
people of one sort, and people of another, but that man
 -- bless your souls!'
  Gabriel thought fit to change the subject. "You
must be a very aged man, malter, to have sons growed
mild and ancient' he remarked.
  "Father's so old that 'a can't mind his age, can ye,
father?' interposed Jacob. "And he growled terrible
crooked too, lately' Jacob continued, surveying his
father's figure, which
<P 113>
was rather more bowed than his own.
"Really one may say that father there is three-double.'
  "Crooked folk will last a long while,' said the maltster,
grimly, and not in the best humour.
  "Shepherd would like to hear the pedigree of yer
life, father -- wouldn't ye, shepherd ?
  "Ay that I should,' said Gabriel with the heartiness
of a man who had longed to hear it for several months.
"What may your age be, malter?'
  The maltster cleared his throat in an exaggerated
form for emphasis, and elongating his gaze to the
remotest point of the ashpit! said, in the slow speech
justifiable when the importance of a subject is so
generally felt that any mannerism must be tolerated
in getting at it, "Well, I don't mind the year I were
born in, but perhaps I can reckon up the places I've
lived at, and so get it that way. I bode at Upper Long+
puddle across there' (nodding to the north) "till I were
eleven. I bode seven at Kingsbere' (nodding to the
east) "where I took to malting. I went therefrom to
Norcombe, and malted there two-and-twenty years, and+
two-and-twenty years I was there turnip-hoeing and
harvesting. Ah, I knowed that old place, Norcombe,
years afore you were thought of, Master Oak' (Oak smiled
sincere belief in the fact). "Then I malted at Dur+
nover four year, and four year turnip-hoeing; and
I was fourteen times eleven months at Millpond St.
Jude's ' (nodding north-west-by-north). "Old Twills
wouldn't hire me for more than eleven months at a
time, to keep me from being chargeable to the parish
if so be I was disabled. Then I was three year at
Mellstock, and I've been here one-and-thirty year come
Candlemas. How much is that?"
  "Hundred and seventeen,' chuckled another old
gentleman, given to mental arithmetic and little con+
versation, who had hitherto sat unobserved in a corner.
  "Well, then, that's my age,' said the maltster, em+
phatically.
  "O no, father!' said Jacob. "Your turnip-hoeing
were in the summer and your malting in the winter of
the same years, and ye don't ought to count-both halves
father.'
<P 114>
  "Chok' it all! I lived through the summers, didn't
I? That's my question. I suppose ye'll say next I be
no age at all to speak of?'
  "Sure we shan't,' said Gabriel, soothingly.
  "Ye be a very old aged person, malter,' attested Jan
must have a wonderful talented constitution to be able
to live so long, mustn't he, neighbours?'
  "True, true; ye must, malter, wonderful;' said the
meeting unanimously.
  The maltster, being know pacified, was even generous
enough to voluntarily disparage in a slight degree the
virtue of having lived a great many years, by mentioning
that the cup they were drinking out of was three years
older than he.
  While the cup was being examined, the end of
Gabriel Oak's flute became visible over his smock-frock
I seed you blowing into a great flute by now at Caster+
bridge?'
  "You did,' said Gabriel, blushingh faintly. "I've been
in great trouble, neighbours, and was driven to it.
take it careless-like, shepherd and your time will come
tired?'
  "Neither drum nor trumpet have I heard since
Christmas,' said Jan Coggan. "Come, raise a tune,
Master Oak!'
  "That I will,' said Gabriel, pulling out his flute and
putting it together. "A poor tool, neighbours; but
such as I can do ye shall have and welcome.'
  Oak then struck up "Jockey to the Fair,' and played
that sparkling melody three times through accenting the
notes in the third round in a most artistic and lively
manner by bending his body in small jerks and tapping
with his foot to beat time.
  "He can blow the flute very well -- that 'a can,' said
a young married man, who having no individuality worth
mentioning was known as "Susan Tall's husband.' He
continued, "I'd as lief as not be able to blow into a
flute as well-as that.'
<P 115>
  "He's a clever man, and 'tis a true comfort for us to
have such a shepherd,' murmured Joseph Poorgrass, in
a soft cadence. "We ought to feel full o' thanksgiving
that he's not a player of ba'dy songs 'instead of these
merry tunes; for 'twould have been just as easy for God
to have made the shepherd a loose low man -- a man of
iniquity, so to speak it -- as what he is. Yes, for our wives'
and daughters' sakes we should feel real thanks giving.'
  "True, true, -- real thanksgiving!' dashed in Mark
Clark conclusively, not feeling it to be of any conse+
quence to his opinion that he had only heard about a
word and three-quarters of what Joseph had said.
  "Yes,' added Joseph, beginning to feel like a man in
the Bible; "for evil do thrive so in these times that ye
may be as much deceived in the clanest shaved and
whitest shirted man as in the raggedest tramp upon the
turnpike, if I may term it so.'
  "Ay, I can mind yer face now, shepherd,' said
Henery Fray, criticising Gabriel with misty eyes as he
entered upon his second tune. "Yes -- now I see 'ee
blowing into the flute I know 'ee to be the same man
I see play at Casterbridge, for yer mouth were scrimped
up and yer eyes a-staring out like a strangled man's --
just as they be now.'
  "'Tis a pity that playing the flute should make a man
look such a scarecrow,' observed Mr. Mark Clark, with
additional criticism of Gabriel's countenance, the latter
person jerking out, with the ghastly grimace required by
the instrument, the chorus of "Dame Durden!
  "I hope you don't mind that young man's bad
manners in naming your features?' whispered Joseph to
Gabriel.
  "Not at all,' said Mr. Oak.
  "For by nature ye be a very handsome man,
shepherd,' continued Joseph Poorgrass, with winning
sauvity.
  "Ay, that ye be, shepard,' said the company.
  "Thank you very much,' said Oak, in the modest
tone good
<P 116>
manners demanded, thinking, however, that
he would never let Bathsheba see him playing the
flute; in this severe showing s discretion equal to that
related to its sagacious inventress, the divine Minerva
herself.
  "Ah, when I and my wife were married at Norcombe
Church,' said the old maltster, not pleased at finding
himself left out of the subject "we were called the
handsomest couple in the neighbourhood -- everybody
said so.'
  "Danged if ye bain't altered now, malter,' said a voice
with the vigour natural to the enunciation of a remark+
ably evident truism. It came from the old man in the
background, whose offensiveness and spiteful ways were
barely atoned for by the occasional chuckle he con+
tributed to general laughs.
  "O no, no,' said Gabriel.
  "Don't ye play no more shepherd ' said Susan Tall's
husband, the young married man who had spoken once
before. "I must be moving and when there's tunes
going on I seem as if hung in wires. If I thought after
I'd left that music was still playing, and I not there, I
should be quite melancholy-like.'
  "What's yer hurry then, Laban?' inquired Coggan+
"You used to bide as late as the latest.'
  "Well, ye see, neighbours, I was lately married to a
woman, and she's my vocation now, and so ye see --  -- '
The young man hated lamely.
  "New Lords new laws, as the saying is, I suppose,'
remarked Coggan.
  "Ay, 'a b'lieve -- ha, ha!' said Susan Tall's husband,
in a tone intended to imply his habitual reception of
jokes without minding them at all.   The young man
then wished them good-night and withdrew.
  Henery Fray was the first to follow. Then Gabriel
arose and went off with Jan Coggan, who had offered
him a lodging. A few minutes later, when the remaining
ones were on their legs and about to depart, Fray came
back again in a hurry. Flourishing his finger ominously
he threw a gaze teeming with tidings just -- where his eye
alighted by accident, which happened to be in Joseph
Poorgrass's face.
<P 117>
  "O -- what's the matter, what's the matter, Henery?'
said Joseph, starting back.
  "What's a-brewing, Henrey?' asked Jacob and Mark
Clark.
  "Baily Pennyways -- Baily Pennyways -- I said so; yes,
I said so!'
  "What, found out stealing anything?'
  "Stealing it is. The news is, that after Miss
Everdene got home she went out again to see all was
safe, as she usually do, and coming in found Baily
Pennyways creeping down the granary steps with half a
a bushel of barley. She fleed at him  like a cat -- never
such a tomboy as she is -- of course I speak with closed
doors?'
  "You do -- you do, Henery.'
  "She fleed at him, and, to cut a long story short,
he owned to having carried off five sack altogether, upon
her promising not to persecute him. Well, he's turned
out neck and crop, and my question is, who's going to
be baily now?'
  The question was such a profound one that Henery
was obliged to drink there and then from the large
cup till the bottom was distinctly visible inside. Before
he had replaced it on the table, in came the young man,
Susan Tall's husband, in a still greater hurry.
  "Have ye heard the news that's all over parish?'
  "About Baily Pennyways?'
  "But besides that?'
  "No -- not a morsel of it!' they replied, looking into
the very midst of Laban Tall as if to meet his words
half-way down his throat.
  "What a night of horrors!' murmured Joseph Poor+
grass, waving his hands spasmodically. "I've had the
news-bell ringing in my left ear quite bad enough for a
murder, and I've seen a magpie all alone!'
  "Fanny Robin -- Miss everdene's youngest servant --
can't be found. They've been wanting to lock up the
door these two hours, but she isn't come in. And they
don't know what to do about going to hed for fear of
locking her out. They wouldn't be so concerned if she
hadn't been noticed in such low spirits
<P 118>
these last few
days, and Maryann d'think the beginning of a crowner's
inquest has happened to the poor girl.'
  "O -- 'tis burned -- 'tis burned!' came from Joseph
Poorgrass's dry lips.
  "No -- 'tis drowned!' said 'Tall.
  "Or 'tis her father's razor!' suggested Billy Smallbury,
with a vivid sense of detail.
  "Well -- Miss Everdene wants to speak to one or two
of us before we go to bed. What with this trouble about
the baily, and now about the girl, mis'ess is almost wild.'
  They all hastened up the lane to the farmhouse,
excepting the old maltster, whom neither news, fire,
rain, nor thunder could draw from his hole. There, as
the others' footsteps died away he sat down again and
continued gazing as usual into the furnace with his red,
bleared eyes.
  From the bedroom window above their heads Bath+
sheba's head and shoulders, robed in mystic white, were
dimly seen extended into the air.
  "Are any of my men among you?' she said anxiously.
  "Yes, ma'am, several,' said Susan Tall's husband.
  "Tomorrow morning I wish two or three of you to
make inquiries in the villages round if they have seen
such a person as Fanny Robin. Do it quietly; there is
no reason for alarm as yet. She must have left whilst
we were all at the fire.'
  "I beg yer pardon, but had she any young man court+
ing her in the parish, ma'am?" asked Jacob Smallbury.
  "I don't know,' said Bathsheba.
  "I've never heard of any such thing, ma'am,' said
two or three.
  "It is hardly likely, either,' continued Bathsheba.
"For any lover of hers might have come to the house if
he had been a respectable lad. The most mysterious
matter connected with her absence -- indeed, the only
thing which gives me serious alarm -- is that she was
seen to go out of the house by Maryann with only her
indoor working gown on -- not even a bonnet.'
  "And you mean, ma'am, excusing my words, that a
young
<P 119>
woman would hardly go to see her young man
without dressing up,' said Jacob, turning his mental
vision upon past experiences. "That's true -- she would
not, ma'am.'
  "She had, I think, a bundle, though I couldn't see
very well,' said a female voice from another window,
which seemed that of Maryann. "But she had no
young man about here. Hers lives in Casterbridge, and
I believe he's a soldier.'
  "Do you know his name?' Bathsheba said.
  "No, mistress; she was very close about it.'
  "Perhaps I might be able to find out if I went to
Casterbridge barracks,' said William Smallbury.
  "Very well; if she doesn't return tomorrow, mind
you go there and try to discover which man it is, and
see him. I feel more responsible than I should if she
had had any friends or relations alive. I do hope she
has come to no harm through a man of that kind....
And then there's this disgraceful affair of the bailiff --
but I can't speak of him now.'
  Bathsheba had so many reasons for uneasiness that
it seemed she did not think it worth while to dwell
upon any particular one. "Do as I told you, then'
she said in conclusion, closing the casement.
  "Ay, ay, mistress; we will,' they replied, and moved
away.
  That night at Coggan's, Gabriel Oak, beneath the
screen of closed eyelids, was busy with fancies, and full
of movement, like a river flowing rapidly under its ice.
Night had always been the time at which he saw Bath+
sheba most vividly, and through the slow hours of
shadow he tenderly regarded her image now. It is
rarely that the pleasures of the imagination will compen+
sate for the pain of sleeplessness, but they possibly did
with Oak to-night, for the delight of merely seeing her
effaced for the time his perception of the great differ+
ence between seeing and possessing.
  He also thought of Plans for fetching his few utensils
and books from Norcombe. The Young Man's Best
Companion, The Farrier's Sure Guide, The Veterinary
Surgeon, Paradise Lost, The Pilgrim's Progress, Robinson
Crusoe, Ash's Dictionary, the Walkingame's Arithmetic,
constituted his library;
<P 120>
and though a limited series, it was
one from which he had acquired more sound informa+
tion by diligent perusal than many a man of opportunities
has done from a furlong of laden shelves.
<C ix>
<P 121>
THE HOMESTEAD -- A VISITOR -- HALF-CONFIDENCES
By daylight, the Bower of Oak's new-found mistress,
Bathsheba Everdene, presented itself as a hoary build+
ing, of the early stage of Classic Renaissance as regards
its architecture, and of 'a proportion which told at a
glance that, as is so frequently the case, it had once
been the memorial hall upon a small estate around it,
now altogether effaced as a distinct property, and merged
in the vast tract of a non-resident landlord, which com+
prised several such modest demesnes.
  Fluted pilasters, worked from the solid stone,
decorated its front, and above the roof the chimneys
were panelled or columnar, some coped gables with
finials and like features still retaining traces of their
Gothic extraction. Soft Brown mosses, like faded
velveteen, formed cushions upon the stone tiling, and
tufts of the houseleek or sengreen sprouted from the
eaves of the low surrounding buildings. A gravel walk
leading from the door to the road in front was encrusted
at the sides with more moss -- here it was a silver-green
variety, the nut-brown of the gravel being visible to the
width of only a foot or two in the centre. This circum+
stance, and the generally sleepy air of the whole prospect
here, together with the animated and contrasting state
of the reverse facade, suggested to the imagination that
on the adaptation of the building for farming purposes
the vital principle' of the house had turned round inside
its body to face the other way. Reversals of this kind,
strange deformities, tremendous paralyses, are often seen
to be inflicted by trade upon edifices -- either individual
or in the aggregate as streets and towns -- which were
originally planned for pleasure alone.
  Lively voices were heard this morning in the upper
rooms, the main staircase to which was of hard oak, the
balusters, heavy as bed-posts, being turned and moulded
in the quaint
<P 122>
fashion of their century, the handrail as
stout as a parapet-top, and the stairs themselves con+
tinually twisting round like a person trying to look over
his shoulder. Going up, the floors above were found
to have a very irregular surface, rising to ridges, sinking
into valley; and being just then uncarpeted, the face
of the boards was seen to be eaten into innumerable
the opening and shutting of every door a tremble
followed every bustling movement, and a creak accom+
panied a walker about the house like a spirit, wherever+
he went.
  In the room from which the conversation proceeded,
Bathsheba and her servant-companion, Liddy Small+
bury were to be discovered sitting upon the floor, and
sorting a complication of papers, books, bottles, and
rubbish spread out thereon -- remnants from the house+
hold stores of the late occupier. Liddy, the maltster's
great-granddaughter, was about Bathsheba's equal in
age, and her face was a prominent advertisement of the
features' might have lacked in form was amply made up
for by perfection  of hue, which at this winter-time was
the softened ruddiness on a surface of high rotundity
and, like the presentations of those great colourists, it
was a face which kept well back from the boundary
between comeliness and the ideal. Though elastic in
nature she was less daring than Bathsheba, and occa+
sionally showed some earnestness, which consisted half
of genuine feeling, and half of mannerliness superadded
by way of duty.
  Through a partly-opened door the noise of a scrubbing+
brush led up to the charwoman, Maryann Money, a person
who for a face had a circular disc, furrowed less by age
than by long gazes of perplexity at distant objects. To
think of her was to get good-humoured; to speak of
her was to raise the image of a dried Normandy
pippin.
  "Stop your scrubbing a moment,' said Bathsheba
through the door to her. "I hear something.'
  Maryann suspended the brush.
<P 123>
  The tramp of a horse was apparent, approaching the
front of the building. The paces slackened, turned in
at the wicket, and, what was most unusual, came up
the mossy path close to the door. The door was
tapped with the end of a crop or stick.
  "What impertinence!' said Liddy, in a low voice.
"To ride up the footpath like that! Why didn't he
stop at the gate? Lord! "tis a gentleman! I see the
top of his hat.'
  "Be quiet!' said Bathsheba.
  The further expression of Liddy's concern was con+
tinued by aspect instead of narrative.
  "Why doesn't Mrs. Coggan go to the door?' Bath+
sheba continued.
  Rat-tat-tat-tat, resounded more decisively from Bath+
sheba's oak.
  "Maryann, you go!' said she, fluttering under the
onset ot a crowd of romantic possibilities.
  "O ma'am -- see, here's a mess!'
  The argument was unanswerable after a glance at
Maryann.
  "Liddy -- you must,' said Bathsheba.
  Liddy held up her hands and arms, coated with dust
from the rubbish they were sorting, and looked implor+
ingly at her mistress.
  "There -- -Mrs. Coggan is going!' said Bathsheba,
exhaling her relief in the form of a long breath which
had lain in her bosom a minute or more.
  The door opened, and a deep voice said --
  "Is Miss Everdene at home?'
  "I'll see, sir,' said Mrs. Coggan, and in a minute
appeared in the room.
  "Dear, what a thirtover place this world is!' con+
tinued Mrs. Coggan (a wholesome-looking lady who
had a voice for each class of remark according to the
emotion involved; who could toss a pancake or twirl
a mop with the accuracy of pure mathematics, and
who at this moment showed hands shaggy with frag+
ments of dough and arms encrusted with flour). "I
am never up to my elbows, Miss, in making a pudding
but one of two things do happen -- either my nose must
needs begin
<P 124>
tickling, and I can't live without scratching
  A woman's dress being a part of her countenance,
and any disorder in the one being of the same nature
with a malformation or wound in the other, Bathsheba
said at once --
  "I can't see him in this state. Whatever shall I do?'
  Not-at-homes were hardly naturalized in Weatherbury
farmhouses, so Liddy suggested -- "Say you're a fright
with dust, and can't come down.'
  "Yes -- that sounds very well,' said Mrs. Coggan,
critically.
  "Say I can't see him -- that will do.'
  Mrs. Coggan went downstairs, and returned the
answer as requested, adding, however, on her own
responsibility, "Miss is dusting bottles, sir, and is quite
a object -- that's why 'tis.'
  "Oh, very well,' said the deep voice,' indifferently.
"All I wanted to ask was, if anything had been heard
of Fanny Robin?'
  "Nothing, sir -- but we may know to-night. William
Smallbury is gone to Casterbridge, where her young
man lives, as is supposed, and the other men be inquir+
ing about everywhere.'
  The horse's tramp then recommenced and -retreated,
and the door closed.
  "Who is Mr. Boldwood?' said Bathsheba.
  "A gentleman-farmer at Little Weatherbury.'
  "Married?'
  "No, miss.'
  "How old is he?'
  "Forty, I should say -- very handsome -- rather stern+
looking -- and rich.'
  "What a bother this dusting is!  I am always in
some unfortunate plight or other;' Bathsheba said,
complainingly. "Why should he inquire aboat Fanny?'
  "Oh, because, as she had no friends in her childhood,
he took her and put her to school, and got her her
place here under your uncle. He's a very kind man
that way, but Lord -- there!'
  "What?'
  "Never was such a hopeless man for a woman!
He's been
<P 125>
courted by sixes and sevens -- all the girls,
gentle and simple, for miles round, have tried him. Jane
Perkins worked at him for two months like a slave,
and the two Miss Taylors spent a year upon him,
and he cost Farmer Ives's daughter nights of tears
and twenty pounds' worth of new clothes; but Lord --
the money might as well have been thrown out of the
window.'
  A little boy came up at this moment and looked in
upon them. This child was one of the Coggans who,
with the Smallburys, were as common among the
families of this district as the Avons and Derwents
among our rivers. He always had a loosened tooth or
a cut finger to show to particular friends, which he did
with an air of being thereby elevated above the common
herd of afflictionless humanity -- to which exhibition
of congratulation as well as pity.
  "I've got a pen-nee!' said Master Coggan in a
scanning measure.
  "Well -- who gave it you, Teddy?' said Liddy.
  "Mis-terr Bold-wood! He gave it to me for opening
the gate.'
  "What did he say?'
  "He said "Where are you going, my little man?''
and I said, "To Miss Everdene's please;'' and he said,
"She is a staid woman, isn't she, my little man?' and
I said, ""Yes.'''
  "You naughty child! What did you say that for?'
  "Cause he gave me the penny!'
  "What a pucker evrything is in!' said Bathsheba,
discontentedly when the child had gone. 'Get away,
thing! You ought to be married by this time, and not
here troubling me!'
  "Ay, mistress -- so I did. But what between the poor
men I won't have, and the rich men who won't have me,
I stand as a pelicon in the wilderness!'
  "Did anybody ever want to marry you miss?' Liddy
ventured to ask when they were again alone. "Lots of
'em, i daresay.?'
  Bathsheba paused, as if about to refuse a reply, but
the temptation to say yes, since it was really in her
power was irresistible by aspiring virginity, in spite of
her spleen at having been published as old.
<P 126>
  "A man wanted to once,' she said, in a highly experi+
enced tone and the image of Gabriel Oak, as the farmer,
rose before her.
  "How nice it must seem!' said Liddy, with the fixed
features of mental realization. "And you wouldn't have
him?'
  "He wasn't quite good enough for me.'
  "How sweet to be able to disdain, when most of us
are glad to say, ""Thank you!'' I seem I hear it.
""No, sir -- I'm your better,'' or ""Kiss my foot, sir; my
face is for mouths of consequence.'' And did you love
him, miss?'
  "Oh, no. But I rather liked him.'
  "Do you now?'
  "Of course not -- what footsteps are those I hear?'
  Liddy looked from a back window into the courtyard
behind, which was now getting low-toned and dim with
the earliest films of night. A crooked file of men was
approaching the back door. The whole string of trailing
individuals advanced in the completest balance of inten+
tion, like the remarkable creatures known as Chain
Salpae, which, distinctly organized in other respects, have
one will common to a whole family. Some were, as
usual, in snow-white smock-frocks of Russia duck, and
some in whitey-brown ones of drabbet -- marked on the
wrists, breasts, backs, and sleeves with honeycomb-work.
Two or three womcn in pattens brought up the rear.
  "The Philistines be upon us,' said Liddy, making her
nose white against the glass.
  "Oh, very well. Maryann, go down and keep them
in the kitchen till I am dressed, and then show them in
to me in the hall.'
<C x>
<P 127>
HALF-AN-HOUR later Bathsheba, in finished dress,
and followed by Liddy, entered the upper end of the old
hall to find that her men had all deposited themselves on
a long form and a settle at the lower extremity. She sat
down at a table and opened th e time-book, pen in her
hand, with a canvas money-bag beside her. From this
she poured a small heap of coin. Liddy chose a
position at her elbow and began to sew, sometimes
pausing and looking round, or with the air of a privileged
person, taking up one of the half-sovereigns lying before
her and surveying it merely as a work of art, while
strictly preventing her countenance from expressing any
wish to possess it as money.
  "Now before I begin, men,' said Bathsheba, "I have
two matters to speak of. The first is that the bailiff is
dismissed for thieving, and that I have formed a resolu+
tion to have no bailiff at all, but to manage everything
with my own head and hands.'
  The men breathed an audible breath of amazement.
  "The next matter is, have you heard anything of
Fanny?'
  "Nothing, ma'am.
  "Have you done anything?'
  "I met Farmer Boldwood,' said Jacob Smallbury, 'and
I went with him and two of his men, and dragged New+
mill Pond, but we found nothing.'
  "And the new shepherd have been to Buck's Head,
by Yalbury, thinking she had gone there, but nobody
had seed her,' said Laban Tall.
  "Hasn't William Smallbury been to Casterbridge?'
  "Yes, ma'am, but he's not yet come home. He
promised to be back by six.'
  "It wants a quarter to six at present,' said Bathsheba,
 
<P 128>
looking at her watch. "I daresay he'll be in directly.
Well, now then' -- she looked into the book -- "Joseph
Poorgrass, are you there?'
  "Yes, sir -- ma'am I mane,' said the person addressed.
"I be the personal name of Poorgrass.'
  "And what are you?'
  "Nothing in my own eye. In the eye of other people
 -- well, I don't say it; though public thought will out.'
  "What do you do on the farm?'
  "I do do carting things all the year, and in seed time I
shoots the rooks and sparrows, and helps at pig-killing, sir.'
  "How much to you ?'
  "Please nine and ninepence and a good halfpenny
where 'twas a bad one, sir -- ma'am I mane.'
  "Quite correct. Now here are ten shillings in addi+
tion as a small present, as I am a new comer.'
  Bathsheba blushed slightly at the sense of being
generous in public, and Henery Fray, who had drawn
up towards her chair, lifted his eyebrows and fingers to
express amazement on a small scale.
  "How much do I owe you -- that man in the corner --
what's your name?' continued Bathsheba.
  "Matthew Moon, ma'am,' said a singular framework of
clothes with nothing of any consequence inside them,
which advanced with the toes in no definite direction
forwards, but turned in or out as they chanced to swing.
  "Matthew Mark, did you say? -- speak out -- I shall
not hurt you,' inquired the young farmer, kindly.
  "Matthew Moon mem' said Henery Fray, correct+
ingly, from behind her chair, to which point he had
edged himself.
  "Matthew Moon,' murmured Bathsheba, turning her
bright eyes to the book. "Ten and twopence halfpenny
is the sum put down to you, I see?'
  "Yes, mis'ess,' said Matthew, as the rustle of wind
among dead leaves.
  "Here it is and ten shillings. Now -the next -- Andrew
Randle, you are a new man, I hear. How come you to
leave your last farm?'
<P 129>
  "P-p-p-p-p-pl-pl-pl-pl-l-l-l-l-ease, ma'am, p-p-p-p-pl-pl+
pl-pl-please, ma'am-please'm-please'm --  --  '
  "'A's a stammering man, mem,' said Henery Fray in
an undertone, "and they turned him away because the
only time he ever did speak plain he said his soul was
his own, and other iniquities, to the squire. "A can cuss,
mem, as well as you or I, but 'a can't speak a common
speech to save his life.'
  "Andrew Randle, here's yours -- finish thanking me
in a day or two. Temperance Miller -- oh, here's another,
Soberness -- both women I suppose?'
  "Yes'm. Here we be, 'a b'lieve,' was echoed in shrill
unison.
  "What have you been doing?'
  "Tending thrashing-machine and wimbling haybonds,
and saying ""Hoosh!'' to the cocks and hens when they
go upon your seeds and planting Early Flourballs and
Thompson's Wonderfuls with a dibble.'
  "Yes -- I see. Are they satisfactory women?' she
inquired softly of Henery Fray.
  "O mem -- don't ask me! Yeilding women?' as
scarlet a pair as ever was!' groaned Henery under his
breath.
  "Sit down.
  "Who, mem?'
  "Sit down,'
  Joseph Poorgrass, in the background twitched, and
his lips became dry with fear of some terrible conse+
quences, as he saw Bathsheba summarily speaking, and
Henery slinking off to a corner.
  "Now the next. Laban Tall, you'll stay on working
for me?'
  "For you or anybody that pays me well, ma'am,'
replied the young married man.
  "True -- the man must live!' said a woman in the
back quarter, who had just entered with clicking pattens.
  "What woman is that?" Bathsheba asked.
  "I be his lawful wife!' continued the voice with
greater prominence of manner and tone. This lady
called herself five-and-twenty, looked thirty, passed as
thirty-five, and was forty. She was a woman who never,
like some newly married, showed
<P 130>
conjugal tenderness in
public, perhaps because she had none to show.
  "Oh, you are,' said Bathsheba. "Well, Laban, will
you stay on ?'
  "Yes, he'll stay, ma'am!' said again the shrill tongue
of Laban's lawful wife.
  "Well, he can speak for himself, I suppose.'
  "O Lord, not he, ma'am! A simple tool. Well
enough, but a poor gawkhammer mortal,' the wife replied
  "Heh-heh-heh!' laughed the married man with a
hideous effort of appreciation, for he was as irrepressibly
good-humoured under ghastly snubs as a parliamentary
candidate on the hustings.
  The names remaining were called in the same
manner.
  "Now I think I have done with you,' said Bathsheba,
closing the book and shaking back a stray twine of hair.
"Has William Smallbury returned?'
  "No, ma'am.'
  "The new shepherd will want a man under him,'
suggested Henery Fray, trying to make himself official
again by a sideway approach towards her chair.
  "Oh -- he will. Who can he have?'
  "Young Cain Ball is a very good lad,' Henery said,
"and Shepherd Oak don't mind his youth?' he added,
turning with an apologetic smile to the shepherd, who
had just appeared on the scene, and was now leaning
against the doorpost with his arms folded.
  "No, I don't mind that,' said Gabriel.
  "How did Cain come by such a name?' asked
Bathsheba.
  "Oh you see, mem, his pore mother, not being a
Scripture-read woman made a mistake at his christening,
thinking 'twas Abel killed Cain, and called en Cain,
but 'twas too late, for the name could never be got rid
of in the parish. "Tis very unfortunate for the boy.'
  "It is rather unfortunate.'
  "Yes. However, we soften it down as much as we
can, and call him Cainey. Ah, pore widow-woman!
she cried her heart
<P 131>
out about it almost. She was
brought up by a very heathen father and mother, who
never sent her to church or school, and it shows how
the sins of the parents are visited upon the children,
mem.'
  Mr. Fray here drew up his features to the mild degree
of melancholy required when the persons involved in
the given misfortune do not belong to your own family.
  "Very well then, Cainey Ball to be under-shepherd
And you quite understand your duties? -- you I mean,
Gabriel Oak?'
  "Quite well, I thank you Miss Everdene,' said
Shepard Oak from the doorpost. "If I don't, I'll
inquire.' Gabriel was rather staggered by the remark+
able coolness of her manner. Certainly nobody without
previous information would have dreamt that Oak and
the handsome woman before whom he stood had ever
been other than strangers. But perhaps her air was
the inevitable result of the social rise which had advanced
her from a cottage to a large house and fields. The
case is not unexampled in high places. When, in the
writings of the later poets, Jove and his family are found
to have moved from their cramped quarters on the peak
of Olympus into the wide sky above it, their words show
a proportionate increase of arrogance and reserve.
Footsteps were heard in the passage, combining in
their character the qualities both of weight and measure,
rather at the expense of velocity.
(All.) 'Here's Billy Smallbury come from Caster+
bridge.'
' And what's the news ? ' said Bathsheba, as William,
after marching to the middle of the hall, took a hand+
kerchief from his hat and wiped his forehead from its
centre to its remoter boundaries.
'I should have been sooner, miss,' he said, 'if it
hadn't been for the weather.' He then stamped with
each foot severely, and on looking down his boots were
perceived to be clogged with snow.
'Come at last, is it ?' said Henery.
" Well, what about Fanny ? ' said Bathsheba.
"Well, ma'am, in round numbers, she's run away with
the soldiers,' said William.
<P 132>
" No; not a steady girl like Fanny ! '
"I'll tell ye all particulars. When I got to Caster,
bridge Barracks, they said, " The Eleventh Dragoon+
Guards be gone away, and new troops have come."
The Eleventh left last week for Melchester and onwards.
The Route came from Government like a thief in the
night, as is his nature to, and afore the Eleventh knew
it almost, they wem on the march. They passed near
here.'
Gabriel had listened with interest. 'I saw them go,'
he said.
' Yes,' continued William, ' they pranced down the
street playing "The Girl I Left Behind Me,' so 'tis
said, in glorious notes of triumph. Every looker-on's
inside shook with the blows of the great drum to his
deepest vitals, and there was not a dry eye throughout
the town among the public-house people and the name+
less women !.'
'But they're not gone to any war?'
'No, ma'am; but they be gone to take the places
of them who may, which is very close connected. And
so I said to myself, Fanny's young man was one of the
regiment, and she's gone after him. There, ma'am,
that's it in black and white.'
Gabriel remained musing and said nothing, for he
was in doubt.
'Well, we are not likely to know more to-night, at
any rate,' said Bathsheba. 'But one of you had better
run across to Farmer Boldwood's and tell him that
much.'
She then rose; but before retiring, addressed a few
words to them with a pretty dignity, to which her
mourning dress added a soberness that was hardly to
be found in the words themselves.
'Now mind, you have a mistress instead of a master
I don't yet know my powers or my talents in farming;
but I shall do my best, and if you serve me well, so
shall I serve you. Don't any unfair ones among you
(if there are any such, but I hope not) suppose that
because I'm a woman I don't understand the difference
between bad goings-on and good.'
<P 133>
(All.) 'Nom!.
(Liddy.) 'Excellent well said.'
'I shall be up before you are awake; I shall be
afield before you are up ; and I shall have breakfasted
before you are afield. In short, I shall astonish you all.
(All.) 'Yes'm!'
'And so good-night.'
(All.) 'Good-night, ma'am.'
Then this small-thesmothete stepped from the table,
and surged out of the hall, her black silk dress licking
up a few straws and dragging them along with a scratch+
ing noise upon the floor. biddy, elevating her feelings
to the occasion from a sense of grandeur, floated off
behind Bathsheba with a milder dignity not entirely
free from travesty, and the door was closed.
<C xi>
<P 134>
OUTSIDE THE BARRACKS -- SNOW -- A MEETING
FOR dreariness nothing could surpass a prospect in the
outskirts of a certain town and military station, many
miles north of Weatherbury, at a later hour on this
same snowy evening -- if that may be called a prospect
of which the chief constituent was darkness.
It was a night when sorrow may come to the
brightest without causing any great sense of incongruity :
when, with impressible persons, love becomes solicitous+
ness, hope sinks to misgiving, and faith to hope : when
the exercise of memory does not stir feelings of regret
at opportunities for ambition that have been passed by,
and anticipation does not prompt to enterprise.
The scene was a public path, bordered on the left
hand by a river, behind which rose a high wall. On
the right was a tract of land, partly meadow'and partly
moor, reaching, at its remote verge, to a wide undulating
uplan.
The changes of the seasons are less obtrusive on
spots of this kind than amid woodland scenery. Still,
to a close observer, they are just as perceptible ; the
difference is that their media of manifestation are less
trite and familiar than such well-known ones as the
bursting of the buds or the fall of the leaf. Many are
not so stealthy and gradual as we may be apt to
imagine in considering the general torpidity of a moor
or waste. Winter, in coming to the country hereabout,
advanced in well-marked stages, wherein might have
been successively observed the retreat of the snakes,
the transformation of the ferns, the filling of the pools,
a rising of fogs, the embrowning by frost, the collapse
of the fungi, and an obliteration by snow.
This climax of the series had been reached to-night on
the aforesaid moor, and for the first time in the season
its
<P 135>
irregularities were forms without features ; suggestive
of anything, proclaiming nothing, and without more
character than that of being the limit of something
else -- the lowest layer of a firmament of snow. From
this chaotic skyful of crowding flakes the mead and
moor momentarily received additional clothing, only
to appear momentarily more naked thereby. The vast
arch of cloud above was strangely low, and formed as
it were the roof of a large dark cavern, gradually sinking
in upon its floor; for the instinctive thought was that
the snow lining the heavens and that encrusting the
earth would soon unite into one mass without any
intervening stratum of air at all.
We turn our attention to the left-hand characteristics ;
which were flatness in respect of the river, verticality
in respect of the wall behind it, and darkness as to
both. These features made up the mass. If anything
could be darker than the sky, it was the wall, and if any
thing could be gloomier than the wall it was the river
beneath. The indistinct summit of the facade was
notched and pronged by chimneys here and there, and
upon its face were faintly signified the oblong shapes
of windows, though only in the upper part. Below,
down to the water's edge, the flat was unbroken by
hole or projection.
An indescribable succession of dull blows, perplexing
in their regularity, sent their sound- with difficulty
through the fluffy atmosphere. It was a neighbouring
clock striking ten The bell was in the open air, and
being overlaid with several inches of muffling snow, had
lost its voiee for the time.
About this hour the snow abated : ten flakes fell
where twenty had fallen, then one had the room of
ten. Not long after a form moved by the brink of
the river.
By its outline upon the colourless background, a close
observer might have seen 'that it was small. This was
all that was positively discoverable, though it seemed
human.
The shape went slowly along, but without much
exertion, for the snow, though sudden, was not as yet
more than two inches deep. At this time some words
were spoken aloud : --
' One. Two. 'Three. Four. Five.'
 Between each utterance the little shape advanced
about half a dozen yards. It was evident now that
the windows high
<P 136>
in the wall were being counted.
The word 'Five' represented the fifth window from
the end of the wall.
Here the spot stopped, and dwindled smaller. The
figure was stooping. Then a morsel of snow flew
across the river towards the fifth window. It smacked
against the wall at a point several yards from its mark.
The throw was the idea of a man conjoined with the
execution of a woman. No man who had ever seen bird,
rabbit, or squirrel in his childhood, could possibly have
thrown with such utter imbecility as was shown here.
Another attempt, and another ; till by degrees the
wall must have become pimpled with the adhering
lumps of snow  At last one fragment struck the fifth
window.
The river would have been; seen by day to be of
that deep smooth sort which races middle and' sides
with the same gliding precision, any irregularities of
speed being immediately corrected by a small whirl+
pool. Nothing was heard in reply to the signal but
the gurgle and cluck of one of these invisible wheels --
together with a few small sounds which a sad man
would have called moans, and a happy man laughter --
caused by the flapping of the waters against trifling
objects in other parts of the stream.
The window was struck again in the same manner.
Then a noise was heard, apparently produced by
the opening of the window. This was followed by a
voice from the same quarter.
'Who's there ? '
The tones were masculine, and not those of surprise.
The high wall being that of a barrack, and marriage
being looked upon with disfavour in the army, assigna+
tions and communications had probably been made
across the river before tonight.
"Is it Sergeant Troy?' said the blurred spot in the
snow, tremulously.
This person was so much like a mere shade upon
the earth, and the other speaker so much a part of
the building, that one would have said the wall was
holding a conversation with the snow.
<P 137>
'Yes,' came suspiciously from the shadow. ' What
girl are you ? '
'O, Frank -- don't you know me ?' said the spot.
'Your wife, Fanny Robin.'
' Fanny !.' said the wall, in utter astonishment.
'Yes,' said the girl, with a half-suppressed gasp of
emotion.
There was something in the woman's tone which is
not that of the wife, and there was a mannerin the man
which is rarely a husband's. The dialogue went on:
'How did you come here ?'
'I asked which was your window. Forgive me !. '
"I did not expect you to-night. Indeed, I did not
think you would come at all. It was a wonder you
found me here. I am orderly to-morrow.'
'You said I was to come.'
' Well -- I said that you might.'
'Yes, I mean that I might. You are glad to see me,
Frank ? '
' O yes -- of course.'
' Can you -- come to me !.'
'My dear Fan, no .! The bugle has sounded, the
barrack gates are closed, and I have no leave. We are
all of us as good as in the county gaol till to-morrow
morning.'
' Then I shan't see you till then .! ' The words- were
in a faltering tone of disappointment.
' How did you get here from Weatherbury ? '
'I walked -- some part of the way -- the rest by the
carriers.'
' I am surprised.'
' Yes -- so am I. And Frank, when will it 'be ? '
' What ? '
' That you promised.'
" I don't quite recollect.'
'0 You do! Don't speak like that. It weighs me
to the earth. It makes me say what ought to be said
first by you.'
' Never mind -- say it.'
'0, must I? -- it is, when shall we be married,
Frank ? '
" Oh, I " see. Well --  you have to get proper
clothes.'
"I have money. Will it be by banns or license ?'
<P 138>
" Banns, I should think.'
" And we live in two parishes.'
"Do we ? What then?'
"My lodgings are in St. Mary's, and this is not. So
they will have to be published in both.'
"Is that the law?'
" Yes. O Frank -- you think me forward, I am
afraid .! Don't, dear Frank -- will you -- for I love you so.
And you said lots of times you would marry me, and
and -- I -- I -- I --  -- '
  "Don't cry, now! It is foolish. If i said so, of
course I will.'
'And shall I put up the banns in my parish, and will
you in yours?'
"Yes'
"To-morrow?'
"Not tomorrow. We'll settle in a few days.'
"You have the permission of the officers?'
"No, not yet.'
"O -- how is it? You said you almost had before
you left Casterbridge.'
"The fact is, I forgot to ask. Your coming like this
I'll go away now. Will you qoDe,and seq be to-morroy
is so sudden and unexpected.'
"Yes -- yes -- it is. It was wrong of me to worry you.
I'll go away now. Will you come and see me to-morrow,
at Mrs. Twills's, in North Street? I don't like to come
to the Barracks. There are bad women about, and they
think me one.'
"Quite,so. I'll come to you, my dean Good-night.'
"Good-night, Frank -- good-night!'
And the noise was again heard of a window closing
The little spot moved away. When she passed the
corner a subdued exclamation was heard inside the
wall.
"Ho -- ho -- Sergeant -- ho -- ho!' An expostulation
followed, but it was indistinct; and it became lost amid
a low peal of laughter, which was hardly distinguishable
from the gurgle of the tiny whirlpools outside.
<C xii>
<P 139>
FARMERS -- A RULE -- IN EXCEPTION
THE first public evidence of Bathsheba's decision to
be a farmer in her own person and by proxy no more
was her appearance the following market-day in. the
cornmarket at Casterbridge.
The low though extensive hall, supported by beams
and pillars, and latterly dignified by-the name of Corn Ex+
change, was thronged with hot men who talked among
each other in twos and threes, the speaker of the minute
looking sideways into his auditor's face and concentrating
his argument by a contraction of one eyelid during de+
livery. The greater number carried in their hands
ground-ash saplings, using them partly as walking-sticks
and partly for poking up pigs, sheep, neighbours with
their backs turned, and restful things in general, which
seemed to require such treatment in the course of their
peregrinations. During conversations each subjected
his sapling to great varieties of usage -- bending it round
his back, forming an"arch of it between his two hands,
overweighting it on the ground till it reached nearly a
semicircle; or perhaps it was hastily tucked under the
arm whilst the sample-bag was pulled forth and a hand+
ful of corn poured into the palm, which, after criticism,
was flung upon the floor, an issue of events perfectly
well known to half-a-dozen acute town-bred fowls which
had as usual crept into the building unobserved, and
waited the fulfilment of their anticipations with a high+
stretched neck and oblique eye.
Among these heavy yeomen a feminine figure glided,
the single one of her sex that the room contained. She
was prettily and even daintily dressed. She moved
between them as a chaise between carts, was heard after
them as a romance after sermons, was felt among them
like a breeze among furnaces. It had required a little
determination -- far more than she had at
<P 140>
first imagined
 -- to take up a position here, for at her first entry the
lumbering dialogues had ceased, nearly every face had
been turned towards her, and those that were already
turned rigidly fixed there.
Two or three only of the farmers were personally
known to Bathsheba, and to these she had made her
way. But if she was to be the practical woman she had
intended to show herself, business must be carried on,
introductions or none, and she ultimately acquired con+
fidence enough to speak and reply boldly to men merely
known to her by hearsay. Bathsheba too had her
sample-bags, and by degrees adopted the professional
pour into the hand -- holding up the grains in her narrow
palm for inspection, in perfect Casterbridge manner.
Something in the exact arch of her upper unbroken
row of teeth, and in the keenly pointed corners of her
red mouth when, with parted lips, she somewhat
defiantly turned up her face to argue a point with a
tall man, suggested that there was potentiality enough
in that lithe slip of humanity for alarming exploits of
sex, and daring enough to carry them out. But her eyes
had a softness -- invariably a softness -- which, had they
not been dark, would have seemed mistiness; as they
were, it lowered an expression that might have been
piercing to simple clearness,
Strange to say of a woman in full bloom and vigor,
she always allowed her interlocutors to finish their state+
ments before rejoining with hers. In arguing on prices,
he held to her own firmly, as was natural in a dealer,
and reduced theirs persistently, as was inevitable in a
oman. But there was an elasticity in her firmness
which removed it from obstinacy, as there was a naivete
in her cheapening which saved it from meanness.
Those of the farmers with whom she had no dealings
by far the greater part) were continually asking each
other, "Who is she?' The reply would be --
"Farmer Everdene's niece; took on Weatherbury
Upper Farm; turned away the baily, and swears she'll do
verything herself.'
The other man would then shake his head.
<P 141>
"Yes, 'tis a pity she's so headstrong,' the first would
say. "But we ought to be proud of her here -- she
lightens up the old place. 'Tis such a shapely maid,
however, that she'll soon get picked up.'
It would be ungallant to suggest that the novelty of
her engagement in such an occupation had almost as
much to do with the magnetism as had the beauty of
her face and movements. However, te interest was
eneral, and this Saturday's debut in the forum, whatever
it may have been to Bathsheba as the buying and selling
farmer, was unquestionably a triumph to her as the
maiden. Indeed, the sensation was so pronounced that
her instinct on two or three occasions was merely to
valk as a queen among these gods of the fallow, like a
little sister of a little Jove, and"to neglect closing prices
altogether.
The numerous evidences of-her power to attract were
only thrown into greater relief by a marked exception.
Women seem to have eyes in their ribbons for such
matters as these. Bathsheba, without looking within
a right angle of him, was conscious of a black sheep
among the flock.
It perplexed her first. If there had been a respect+
able minority on either side, the case would have been
most natural. If nobody had regarded her, she would
have -- -taken the matter indifferently -- such cases had
occurred. If eveybody, this man included, she would
have taken it as a matter of course -- people had done
so before. But the smallness of the exception made the
mystery.
She soon knew thus much of the recusant's appear+
ance. He was a gentlemanly man, with full and
distinctly outlined Roman features, the prominences
of which glowed in the sun with a bronze-like richness
of tone. He was erect in attitude, and quiet in
demeanour. One characteristic pre-eminently marked
him -- dignity.
Apparently he had some time ago reached that
entrance to middle age at which a man's aspect naturally
ceases to alter for the term of a dozen years or so; and,
artificially, a woman't does likewise.   Thirty-five and
fifiy were his limits of variation -- he might have been
either, or anywhere between the two.
It may be said that married men of forty are usually
ready
<P 142>
and generous enough to fling passing glances at
any specimen of moderate beauty they may discern by
the way. Probably, as with persons playing whist for
love, the consciousness of a certain immunity under
any circumstances from that worst possible ultimate,
the having to pay, makes them unduly speculative.
Bathsheba was convinced that this unmoved person
was not a married man.
When marketing was over, she rushed off to Liddy,
who was waiting for her -- beside the yellowing in which
they had driven to town. The horse was put in, and
on they trotted Bathsheba's sugar, tea, and drapery
parcels being packed behind, and expeessing in some
indescribable manner, by their colour, shape, and
general lineaments, that they were that youmg lady+
farmer's property, and the grocer's and drapers no
more.
" I've been through it, Liddy, and it is over. I shan't
mind it again, for they will all have grown accustomed
to seeing me there; but this morning it was as bad as
being married -- eyes everywhere!'
"I knowed it would. be,' Liddy said "Men be such
a terrible class of society to look at a body.'
"But there was one man who had more sense than
to waste his time upon me.' The information was put
in this form that Liddy might not for a moment suppose
her mistress was at all piqued. "A very good-looking
man,' she continued, "upright; about forty, I should
think. Do you know at all who he could be?'
Liddy couldn't think.
"Can't you guess at all?' said Bathsheba with some
disappointment.
"I haven't a notion; besides, 'tis no difference, since
he took less notice of you than any of the rest. Now,
if he'd taken more, it would have mattered a great deal.'
Bathsheba was suffering from the reverse feeling just
then, and they bowled along in silence. A low carriage,
bowling along still more rapidly behind a horse of un+
impeachable breed, overtook and passed them.
"Why, there he is!' she said.
Liddy looked. "That! That's Farmer Boldwood --
of course
<P 143>
'tis -- the man you couldn't see the other day
when he called.'
"Oh, Farmer Boldwood,' murmured Bathsheba, and
looked at him as he outstripped them. The farmer had
never turned his head once, but with eyes fixed on the
most advanced point along the road, passed as uncon+
sciously and abstractedly as if Bathshea and her charms
were thin air.
"He's an interesting man -- don't you think so?' she
remarked.
"O yes, very. Everybody owns it,' replied Liddy.
"I wonder why he is so wrapt up and indifferent, and
seemingly so far away from all he sees around him,'
"It is said -- but not known for certain -- that he met
with some bitter disappointment when he was a young
man and merry. A woman jilted him, they say.'
"People always say that -- and we know very well
women scarcely ever jilt men; 'tis the men who jilt us.
I expect it is simply his nature to be so reserved.'
"Simply his nature -- I expect so, miss -- nothing else
in the world.'
"Still, 'tis more romantic to think he has been served
cruelly, poor thing'! Perhaps, after all, he has! I
"Depend upon it he has. O yes, miss, he has!
feel he must have.'
"However, we are very apt to think extremes of
people. I --  shouldn't wonder after all if it wasn't a
little of both -- just between the two -- rather cruelly
used and rather reserved.'
"O dear no, miss -- I can't think it between the
two!'
"That's most likely.'
"Well, yes, so it is. I am convinced it is most likely.
You may --  take my word, miss, that that's what's the
matter with him.'
<C xiii>
<P 144>
SORTES SANCTORUM -- THE VALENTINE
IT was Sunday afternoon in the farmhouse, on the
thirteenth of February. Dinner being over, Bathsheba,
for want of a better companion, had asked Liddy to
come and sit with her. The mouldy pile was dreary
in winter-time before the candles were lighted and the
shutters closed ; the atmosphere of the place seemed
as old as the walls; every nook behind the furniture
had a temperature of its own, for the fire was not
kindled in this part of the house early in the day;
and Bathsheba's new piano, which was an old one
in other annals, looked particularly sloping and out
of level on the warped floor before night threw a
shade over its less prominent angles and hid the
unpleasantness. Liddy, like a little brook, though
shallow, was always rippling; her presence had not so
much weight as to task thought, and yet enough to
exercise it.
On the table lay an old quarto Bible, bound in
leather. Liddy looking at it said, --
"Did you ever find out, miss, who you are going to
marry by means of the Bible and key ?,
"Don't be so foolish, Liddy. As if such things
could be.'
" Well, there's a good deal in it, all the same.'
' Nonsense, child.'
" And it makes your heart beat fearful. Some believe
in it; some don't; I do.'
"Very well, let's try it,' said Bathsheba, bounding
from her seat with that total disregard of consistency
which can be indulged in towards a dependent, and
entering into the spirit of divination at once. 'Go and
get the front door key.'
Liddy fetched it. 'I wish it wasn't Sunday,' she
said, on returning. ' Perhaps 'tis wrong.'
' What's right week days is right Sundays,' replied her
mistress in a tone which was a proof in itself.
<P 145>
The book was opened -- the leaves, drab with age,
being quite worn away at much-read verses by the fore'
fingers "of unpractised readers in former days, where they
were moved along under the line as an aid to the vision.
The special verse in the Book of Ruth was sought out
by Bathsheba, and the sublime words met her eye. They
slightly thrilled and abashed her. It was Wisdom in
the abstract facing Folly in the concrete. Folly in the
concrete blushed, persisted in her intention, and placed
the key on -the book. A rusty patch immediately upon
the verse, caused by previous pressure of an iron
substance thereon, told that this was not the first time
the old volume had been used for the purpose.
'Now keep steady, and be silent,' said Bathsheba.
The 'verse was repeated; the book turned round ;
Bathsheba blushed guiltily.
'Who did you try ?' said Liddy curiously.
'I shall not tell you.'
'Did you notice Mr. Boldwood's doings in church
this morning, miss ? 'Liddy continued, adumbrating by
the remark the track her thoughts had taken.
'No, indeed,' said Bathsheba, with serene indifference
" His pew is exactly opposite yours, miss.'
"I know it.'
"And you did not see his goings on !,'
Certainly I did not, I tell you.'
Liddy assumed a smaller physiognomy, and shut
her lips decisively.
This move was unexpected, and proportionately dis
concerting. " What did he do?' Bathsheba said perforce.
"Didn't turn his head to look at you once all the
service.
"Why should he?' again demanded her mistress,
wearing a nettled look. "I didn't ask him to.
'Oh no. But everybody else was noticing you ; and
it was odd he didn't. There, 'tis like him. Rich and
gentlemanly, what does he care ? '
Bathsheba dropped into a silence intended to ex+
press that she had opinions on the matter too abstruse
for Liddy's comprehension, rather than that she had
nothing to say.
"
<P 146>
Dear me -- I had nearly forgotten the valentine
I bought yesterday,' she exclaimed at length.
"Valentine ! who for, miss ? ' said Liddy. " Farmer
Boldwood ?'
It was the single name among all possible wrong
ones that just at this moment seemed to Bathsheba
more pertinent than the right.
"Well, no. It is only for little Teddy Coggan.
have promised him something, and this will be a pretty
surprise for him. Liddy, you may as well bring me
my desk and I'll direct it at once.'
Bathsheba took from her desk a gorgeously illumin+
ated and embossed design in post-octavo, which had
been "bought on the previous market-day at the chief
stationer's in Casterbridge. In the eentre was a small
oval enclosure ; this was left blank, that the sender
might insert tender words more appropriate to the
special occasion than any generalities by a printer
could possibly be.
" Here's a place for writing,' said Bathsheba. 'What
shall I put ?'
" Something of this sort, I should think', returned
Liddy promptly : --
" The rose is red,
 The violet blue,
 Camation's sweet,
 And so are you.'
" Yes, that shall be it. It just suits itself to a chubby+
faced child like him,' said Bathsheba. She ins.erted the
words in a small though legible handwriting; enelosed
the sheet in an envelope, and dipped her pen for the
direction.
"What fun it would be to send it to the stupid old
Boldwood, and how he would wonder.! ' said the
irrepressible Liddy, lifting her eyebrows, and indulging
in an awful mirth on the verge of fear as she thought
of the moral and social magnitude of the man contem+
plated.
Bathsheba paused to regard the idea at full length.
Boldwood's had begun to be a troublesome image -- a
species of Daniel in her kingdom who persisted in
kneeling eastward
<P 147>
when reason and common sense
said that he might just as well follow suit with the
rest, and afford her the official glance of admiration
which cost nothing at all. She was far from being
seriously concerned about his nonconformity. Still,
it was faintly depressing that the most dignified and
valuable man in the parish should withhold his eyes,
and that a girl like Liddy should talk about it. So
Liddy's idea was at first rather harassing than piquant.
" No, I won't do that. He wouldn't see any humour
in it.'
" He'd worry to death,' said the persistent Liddy.
" Really, I don't care particularly to send it to
Teddy,' remarked her mistress. " He's rather a naughty
child sometimes.'
" Yes -- that he is.'
" Let's toss as men do,' said Bathsheba, idly. 'Now
then, head, Boldwood ; tail, Teddy. No, we won't toss
money on a Sunday that would be tempting the devil
indeed.'
"Toss this hymn-book; there can't be no sinfulness
in that, miss.'
'Very well. Open, Boldwood -- shut, Teddy. No;
it's more likely to fall open. Open, Teddy -- shut,
Boldwood.'
The book went fluttering in the air and came down shut.
Bathsheba, a small yawn upon her mouth, took the
pen, and with off-hand serenity directed the missive to
Boldwood.
'Now light a candle, Liddy. Which seal shall we
use? Here's a unicorn's head --  there's nothing in
that. What's this ? -- two doves -- no. It ought to be
something extraodinary, ought it not, Lidd? Here's
one with a motto -- I remember it is some funny one,
but I can't read it. We'll try this, and if it doen't
do we'll have another.'
A large red seal was duly affixed. Bathsheba looked
closely at the hot wax to discover the words.
'Capital!' she exclaimed, throwing down the letter
frolicsomely. " 'Twould upset the solemnity of a parson
 
<P 148>
The same evening the letter was sent, and was duly
returned to Weatherbury again in the morning.
Of love as a spectacle Bathsheba had a fair knowledge;
but of love subjectively she knew nothing.
<C xiv>
<P 149>
EFFECT OF THE LETTER -- SUNRISE
AT dusk, on the evening of St. Valentine's Day, Bold+
wood sat down to supper as usual, by a beaming fire
of aged logs. Upon the matel-shelf before him was
a time-piece, surmounted by a spread eagle, and upon
the eagle's wings was the letter Bathsheba had sent.
Here the bachelor's gaze was continually fastening
itself, till the large red seal became as a blot of blood
on the retina of his eye; and as he ate and drank he
still read in fancy the words thereon, although they
were too remote for his sight --
" MARRY ME.'
The pert injunction was like those crystal substances
which, colourless themselves, assume the tone of objects
about them. Here, in the quiet of Boldwood's parlour,
where everything that ,was not grave was extraneous,
and where the atmosphere was that of a Puritan Sunday
lasting all the week, the letter and its dictum changed'
their tenor from the thoughtlessness of their origin to
a deep solemnity, imbibed from their accessories
now.
Since the receipt of the missive in the morning,
Boldwood had felt the symmetry of his existence to
be slowly getting distorted in the direction of an ideal
passion. The disturbance was as the first floating
weed to Columbus -- the eontemptibly little suggesting
possibilities of the infinitely great.
The letter must have had an origin and a motive.
That the latter was of the smallest magnitude com+
patible with its existence at all, Boldwood, of course,
did not know. And such an explanation did not
strike him as a possibility even. It is foreign to a
mystified condition of mind to realize of the mystifier
that the processes of approving a course suggested by
circumstance, and of striking out a course from inner
impulse, would look the same in the result. The vast
difference between
<P 150>
starting a train of events, and direct+
ing into a particular groove a series already started, is
rarely apparent to the person confounded by the
issue.
When Boldwood went to bed he placed the valen+
tine in the corner of the looking-glass. He was
conscious of its presence, even when his back was
turned upon it. It was the first time in Boldwood's
life that such an event had occurred. The same
fascination that caused him to think it an act which had
a deliberate motive prevented him from regarding it as
an impertinence. He looked again at the direction.
The mysterious influences of night invested the writing
with the presence of the unknown writer. Somebody's
some woman's -- hand had travelled softly over the
paper bearing his name ; her unrevealed eyes had
watched every curve as she formed it ; her brain had
seen him in imagination the while. Why should
she have imagined him ? Her mouth -- were the lips
red or pale, plump or creased? -- had curved itself to a
certain expression as the pen went on -- the corners had
moved with all their natural tremulousness : what had
been the expression ?
The vision of the woman writing, as a supplement to
the words written, had no individuality. She was a
misty shape, and well she might be, considering that
her original was at that moment sound asleep and
oblivious of all love and letter-writing under the sky.
Whenever Boldwood dozed she took a form, and com+
paratively ceased to be a vision : when he awoke there
was the letter justifying the dream.
The moon shone to-night, and its light was not of
a customary kind. His window admitted only a
reflection of its rays, and the pale sheen had that
reversed direction which snow gives, coming upward
and lighting up his ceiling in an unnatural way, casting
shadows in strange places, and putting lights where
shadows had used to be.
The substance of the epistle had occupied him but
little in comparison with the fact of its arrival. He
suddenly wondered if anything more might be found in
the envelope than what he had withdrawn. He jumped
out of bed in the weird light, took the letter, pulled out
the flimsy sheet, shook the envelope -- searched it.
Nothing more was there. Boldwood looked, as he
<P 151>
had a hundred times the preceding day, at the insistent red
seal : " Marry me,' he said aloud.
The solemn and reserved yeoman again closed the
letter, and stuck it in the frame of the glass. In doing
so he caught sight of his reflected features, wan in
expression, and insubstantial in form. He saw how
closely compressed was his mouth, and that his eyes
were wide-spread and vacant. Feeling uneasy and dis+
satisfied with himself for this nervous excitability, he
returned to bed.
Then the dawn drew on. The full power of the
clear heaven was not equal to that of a cloudy sky at
noon, when Boldwood arose and dressed himself. He
descended the stairs and went out towards the gate of
a field to the east, leaning over which he paused and
looked around.
It was one of the usual slow sunrises of this time of
the year, and the sky, pure violet in the zenith, was
leaden to the northward, and murky to the east, where,
over the snowy down or ewe-lease on Weatherbury
Upper Farm, and apparently resting upon the ridge, the
only half of the sun yet visible burnt rayless, like a red
and flameless fire shining over a white hearthstone.
The whole effect resembled a sunset as childhood
resembles age.
In other directions, the fields and sky were so much
of one colour by the snow, that it was difficult in a
hasty glance to tell whereabouts the horizon occurred ;
and in general there was here, too, that before-mentioned
preternatural inversion of light and shade which attends
the prospect when the garish brightness commonly in
the sky is found on the earth, and the shades of earth
are in the sky. Over the west hung the wasting moon,
now dull and greenish-yellow, like tarnished brass.
Boldwood was listlessly noting how the frost had
hardened and glazed the surface of the snow, till it
shone in the red eastern light wit-h the polish of marble;
how, in some portions of the slope, withered grass-bents,
encased in icicles, bristled through the smooth wan
coverlet in the twisted and curved shapes of old
Venetian glass; and how the footprints of a few birds,
which had hopped over the snow whilst it lay in the
state of a soft fleece, were now frozen to a short perma+
<P 152>
nency. A half-muffled noise of light wheels interrupted
him. Boldwood turned back into the road. It was
the mail-cart -- a crazy, two-wheeled vehicle, hardly
heavy enough to resist a puff of wind. The driver held
out a letter. Boldwood seized it and opened it, ex+
pecting another anonymous one -- so greatly are people's
ideas of probability a mere sense that precedent will
repeat itself.
"I don't think it is for you, sir,' said the man, when
he saw Boldwood's action. "Though there is no name
I think it is for your shepherd.'
Boldwood looked then at the address --
To the New Shepherd,
Weatherbury Farm,
Near Casterbridge.
"Oh -- what a mistake !. -- it is not mine. Nor is it
for my shepherd. It is for Miss Everdene's.' You had
better take it on to him -- Gabriel Oak -- and say I opencd
it in mistake."
At this moment, on the ridge, up against the blazing
sky, a figure was visible, like the black snuff in the
midst of a candle-flame. Then it moved and began to
bustle about vigorously from place to place, carrying
square skeleton masses, which were riddled by the same
rays. A small figure on all fours followed behind. The
tall form was that of Gabriel Oak ; the small one that
of George ; the articles in course of transit were hurdles.
'Wait, 'said Boldwood. " That's the man on the hill.
I'll take the letter to him myself."
To Boldwood it was now no longer merely a letter to
I another man. It was an opportunity. Exhibiting a
face pregnant with intention, he entered the snowy field.
Gabriel, at that minute, descended the hill towards
the right. The glow stretched down in this direction
now, and touched the distant roof of Warren's Malthouse
whither the shepherd was apparently bent :  Boldwood
followed at a distance.
<C xv>
<P 153>
THE scarlet and orange light outside the malthouse did
not penetrate to its interior, which was, as usual, lighted
by a rival glow of similar hue, radiating from the hearth.
The maltster, after having lain down in his clothes
for a few hours, was now sitting beside a three-leggcd
table, breakfasting of bread and bacon. This was
eaten on the plateless system, which is performed by
placing a slice of bread upon the table, the meat flat
upon the bread, a mustard plaster upon the meat, and
a pinch of salt upon the whole, then cutting them
vertically downwards with a large pocket-knife till wood
is reached, when the severed lamp is impaled on the
knife, elevated, and sent the proper way of food.
The maltster's lack of teeth appeared not to sensibly
diminish his powers as a mill. He had been without
them for so many years that toothlessness was felt less
to be a defect than hard gums an acquisition. Indeed,
he seemed to approach the grave as a hyperbolic curve
approaches a stmight line -- less directly as he got nearer,
till it was doubtful if he would ever reach it at all.
In the ashpit was a heap of potatoes roasting, and a
boiling pipkin of charred bread, callcd 'coffee,' for the
benefit of whomsoever should call, for Warren's was a
sort of clubhouse. used as an alternative to the in!.
"I say, says I, we get a fine day, and then down
comes a snapper at night,' was a remark now suddenly
heard spreading into the malthouse from the door, which
had been opened the previous moment. The form of
Henery Fray advanced to the fire, stamping the snow
from his boots when about half-way there. The speech
and entry had not seemed to be at all an abrupt begin+
ning to the maltster, introductoy matter being often
omitted in this neighbourhood, both from word and
<P 154>
deed, and the maltster having the same latitude allowed
him, did not hurry to reply. He picked up a fragment
of cheese, by pecking upon it with his knife, as a butcher
picks up skewers.
Henery appeared in a drab kerseymere great-coat,
buttoned over his smock-frock, the white skirts of the
latter being visible to the distance of about a foot below
the coat-tails, which, when you got used to the style of
dress, looked natural enough, and even ornamental -- it
certainly was comfortable.
Matthew Moon, Joseph Poorgrass, and other carters
and waggoners followed at his heels, with great lanterns
dangling from their hands, which showed that they had
just come from the cart-horse stables, where they had
been busily engaged since four o'clock that morning.
"And how is she getting on without a baily?' the
maltster inquired.
Henery shook his head, and smiled one of the bitter
smiles, dragging all the flesh of his forehead into a
corrugated heap in the centre.
" She'll rue it -- surely, surely ! ' he said " Benjy
Pennyways were not a true man or an honest baily --
as big a betrayer as Joey Iscariot himself. But to think
she can carr' on alone! ' He allowed his head to swing
laterally three or four times in silence. " Never in all my
creeping up -- never! '
This was recognized by all as the conclusion of some
gloomy speech which had been expressed in thought
alone during the shake of the head; Henery meanwhile
retained several marks of despair upon his face, to
imply that they would be required for use again directly
he should go on speaking.
'All will be ruined, and ourselves too, or there's no
meat in gentlemen's houses!' said Mark Clark.
'A headstrong maid, that's what she is -- and won't
listen to no advice at all. Pride and vanity have ruined
many a cobbler's dog. Dear, dear, when I think o' it,
I sorrows like a man in travel ! '
'True, Henery, you do, I've heard ye,' said Joseph
Poorgrass in a voice of thorough attestation, and with
a wire-drawn smile of misery.
"'Twould do a martel man no harm to have what's
under
<P 155>
her bonnet,' said Billy Smallbury, who had just
entered, bearing his one tooth before him. "She can
spaik real language, and must have some sense some+
where. Do ye foller me ?'
"I do: but no baily -- I deserved that place,' wailed
Henery, signifying wasted genius by gazing blankly at
visions of a high destiny apparently visible to him on
Billy Smallbury's smock-frock. " There, 'twas to be, I
suppose. Your lot is your lot, and Scripture is nothing;
for if you do good you don't get rewarded according to
your works, but be cheated in some mean way out of
your recompense.'
"No, no; I don't agree with'ee there,' said Mark
Clark. God's a perfect gentleman in that respect.'
"Good works good pay, so to speak it,' attested
Joseph Poorgrass.
A short pause ensued, and as a sort of entr'acte
Henery turned and blew out the lanterns, which the
increase of daylight rendered no longer necessary even
in the malthouse, with its one pane of glass.
"I wonder what a farmer-woman can want with a
harpsichord, dulcimer, pianner, or whatever 'tis they d'call
it?' said the maltster. 'Liddy saith she've a new one.'
"Got a pianner?'
"Ay. Seems her old uncle's things were not good
enough for her. She've bought all but everything new.
There's heavy chairs for the stout, weak and wiry ones
for the slender; great watches, getting on to the size
of clocks, to stand upon the chimbley-piece.'
Pictures, for the most part wonderful frames.'
" And long horse-hair settles for the drunk, with horse+
hair pillows at each end,' said Mr. Clark. " Likewise
looking-glasses for the pretty, and lying books for the
wicked.'
A firm loud tread was now heard stamping outside;
the door was opened about six inches, and somebody on
the other side exclaimed --
"Neighbours, have ye got room for a few new-born
lambs?'
" Ay, sure, shepherd,' said the conclave.
The door was flung back till it kicked the wall and
trembled from top to bottom with the blow. Mr.
Oak appeared in the
<P 156>
entry with a steaming face, hay+
bands wound about his ankles to keep out the snow, a
leather strap round his waist outside the smock-frock,
and looking altogether an epitome of the world's health
and vigour. Four lambs hung in various embarrassing
attitudes over his shoulders, and the dog George, whom
Gabriel had contrived to fetch from Norcombe, stalked
solemnly behind.
" Well, Shepherd Oak, and how's lambing this year,
if I mid say it?' inquired Joseph Poorgrass.
"Terrible trying," said Oak. "I've been wet through
twice a-day, either in snow or rain, this last fortnight.
Cainy and I haven't tined our eyes to-night.'
"A good few twins, too, I hear ?'
"Too many by half. Yes ; 'tis a very queer lambing
this year. We shan't have done by Lady Day.'
"And last year 'twer all over by Sexajessamine
Sunday,' Joseph remarked.
"Bring on the rest Cain,' said Gabriel, " and then run
back to the ewes. I'll follow you soon.'
Cainy Ball -- a cheery-faced young lad, with a small
circular orifice by way of mouth, advanced and deposited
two others, and retired as he was bidden. Oak lowered
the lambs from their unnatural elevation, wrapped them
in hay, and placed them round the fire.
" We've no lambing-hut here, as I used to have at
Norcombe,' said Gabriel, " and 'tis such a plague to bring
the weakly ones to a house. If 'twasn't for your place
here, malter, I don't know what I should do! this keen
weather. And how is it with you to-day, malter? '
" Oh, neither sick nor sorry, shepherd ; 'but no
younger.'
" Ay -- I understand.
"Sit down, Shepherd Oak', continued the ancient man
of malt. " And how was the old place at Norcombe,
when ye went for your dog? I should like to see the
old familiar spot ; but faith, I shouldn't" know a soul
there now.'
" I suppose you wouldn't. 'Tis' altered very much.'
"Is it true that Dicky Hill's wooden cider-house is
pulled down?'
<P 157>
" O yes -- years ago, and Dicky's cottage just above it.'
"Well, to be sure!,
" Yes ; and Tompkins's old apple-tree is rooted that
used to bear two hogsheads of cider; and no help from
other trees.'
'Rooted? -- you don't say it! Ah! stirring times we
live in -- stirring times.'
"And you can mind the old well that used to be in
the middle of the place? That's turned into a solid
iron pump with a large stone trough, and all complete.'
"Dear, dear -- how the face of nations alter, and
what we live to see nowadays! Yes -- and 'tis the same
here. They've been talking but now of the mis'ess's
strange doings.'
" What have you been saying about her?' inquired
Oak, sharply turning to the rest, and getting very
warm.
" These middle-aged men have been pulling her over
the coals for pride and vanity,' said Mark Clark; "but
I say, let her have rope enough. Bless her pretty face
shouldn't I like to do so -- upon her cherry lips!'
The gallant Mark Clark here made a peculiar and well
known sound with his own.
" Mark,' said Gabriel, sternly, 'now you mind this !
none of that dalliance-talk -- that smack-and-coddle style
of yours -- about Miss Everdene. I don't allow it. Do
you hear? '
" With all my heart, as I've got no chance,' replied
Mr. Clark, cordially.
' I suppose you've been speaking against her? ' said
Oak, turning to Joseph Poorgrass with a very grim
look.
"No, no -- not a word I -- 'tis a real joyful thing that
she's no worse, that's what I say,' said Joseph, trembling
and blushing with terror. " Matthew just said --  -- '
" Matthew Moon, what have you been saying ? ' asked
Oak.
'I? Why ye know I wouldn't harm a worm -- no,
not one underground worm ?' said Matthew Moon,
looking very uneasy.
"Well, somebody has -- and look here, neighbours.'
Gabriel, though one of the quietest and most gentle
men on earth, rose to the occasion, with martial
promptness and vigour. "That's my fist.' Here he
placed his fist, rather smaller in size than a common
loaf, in the mathemarical centre of the maltster's little
table, and with it gave a bump or two thereon, as if
<P 158>
to ensure that their eyes all thoroughly took in the
idea of fistiness before he went further. "Now -- the
first man in the parish that I hear prophesying bad of
our mistress, why' (here the fist was raised and let fall
as T'hor might have done with his hammer in assaying
it) -- "he'll smell and taste that -- or I'm a Dutchman.'
All earnestly expressed by their features that their
minds did not wander to Holland for a moment on
account of this statement, but were deploring the
difference which gave rise to the figure ; and Mark
Clark cried "Hear, hear; just what I should ha' said.'
The dog George looked up at the same time after the
shepherd's menace, and though he understood English
but imperfectly, began to growl.
" Now, don't ye take on so, shepherd, and sit down!'
said Henery, with a deprecating peacefulness equal to
anything of the kind in Christianity.
"We hear that ye bc a extraordinary good and
clever man, shepherd,' said Joseph Poorgrass with
considerable anxiety from behind the maltster's bed+
stead whither he had retired for safety. "'Tis a great
thing to be clever, I'm sure,' he added, making move+
ments associated with states of mind rather than body ;
" we wish we were, don't we, neighbours ? '
"Ay, that we do, sure,' said Matthew Moon, with
a small anxious laugh towards Oak, to show how very
friendly disposed he was likewise.
" Who's been telling you I'm clever?' said Oak.
"'Tis blowed about from pillar to post quite common,'
said Matthew. " We hear that ye can tell the t1me as
well by the stars as we can by the sun and moon,
shepherd.'
" Yes, I can do a little that way,' said Gabriel, as a
man of medium sentiments on the subject.
names upon their waggons almost like copper-plate,
with beautiful flourishes, and great long tails. A
excellent fine thing for ye to be such a clever man,
shepherd. Joseph Poorgrass used to prent to Farmer
James Everdene's waggons before you came, and 'a
could never mind which way to turn the J's and E's
 -- could ye, Joseph?' Joseph shook his head to express
how absolute was
<P 159>
the fact that he couldn't. "And so
you used to do 'em the wrong way, like this, didn't ye,
Joseph ?' Matthew marked on the dusty floor with his
whip-handle
LAMES
"And how Farmer James would cuss, and call thee a
fool, wouldn't he, Joseph, when 'a seed his name
looking so inside-out-like ?' continued Matthew Moon
with feeling.
'Ay -- 'a would,' said Joseph, meekly. " But, you see,
I wasn't so much to blame, for them J's and E's be
such trying sons o' witches for the memory to mind
whether they face backward or forward ; and I always
had such a forgetful memory, too.'
"'Tis a bad afiction for ye, being such a man of
calamities in other ways.'
" Well, 'tis ; but a happy Providence ordered that it
should be no worse, and I feel my thanks. As to
shepherd, there, I'm sure mis'ess ought to have made
ye her baily -- such a fitting man for't as you be.'
"I don't mind owning that I expected it,' said Oak,
frankly. ' Indeed, I hoped for the place. At the same
time, Miss Everdene has a right to be own baily if
she choose -- and to keep me down to be a common
shepherd only.' Oak drew a slow breath, looked sadly
into the bright ashpit, and seemed lost in thoughts not
of the most hopeful hue.
The genial warmth of the fire now began to stimulate
the nearly lifeless lambs to bleat and move their limbs
briskly upon the hay, and to recognize for the first time
the fact that they were born. Their noise increased to a
chorus of baas, upon which Oak pulled the milk-can from
before the fire, and taking a small tea-pot from the pocket
of his smock-frock, filled it with milk, and taught those of
the helpless creatures which were not to be restored to
their dams how to drink from the spout -- a trick they
acquired with astonishing aptitude.
"And she don't even let ye have the skins of the
dead lambs, I hear?' resumed Joseph Poorgrass, his
eyes lingering on the operations of Oak with the neces+
sary melancholy.
"I don't have them,' said Gabriel.
"Ye be very badly used, shepherd,' hazardcd Joseph
again, in
<P 160>
the hope of getting Oak as an ally in lamenta+
tion after all. "I think she's took against ye -- that
I do.'
'O no -- not at all,' replied Gabriel, hastily, and a
sigh escaped him, which the deprivation of lamb skins
could hardly have caused.
Before any further remark had been added a shade
darkened the door, and Boldwood entered the malthouse,
bestowing upon each a nod of a quality between friendli+
ness and condescension.
"Ah! Oak, I thought you were here,' he said. 'I
met the mail-cart ten minutes ago, and a letter was put
into my hand, which I opened without reading the
address. I believe it is yours. You must excuse the
accident please.'
"O yes -- not a bit of difference, Mr. Boldwood --
not a bit,' said Gabriel, readily. He had not a corre+
spondent on earth, nor was there a possible letter coming
to him whose contents the whole parish would not have
been welcome to persue.
Oak stepped aside, and read the following in an
unknown hand: --
" DEAR FRIEND, -- I do not know your name, but l think
these few lines will reach you, which I wrote to thank you
for your kindness to me the night I left Weatherbury in a
reckless way. I also return the money I owe you, which
you will excuse my not keeping as a gift. All has ended
well, and I am happy to say I am going to be married to
the young man who has courted me for some time -- Sergeant
Troy, of the 11th Dragoon Guards, now quartered in this
town. He would, I know, object to my having received
anything except as a loan, being a man of great respecta+
bility and high honour -- indeed, a nobleman by blood.
 "I should be much obliged to you if you would keep the
contents of this letter a secret for the present, dear friend.
We mean to surprise Weatherbury by coming there soon
as husband and wife, though l blush to state it to one nearly
a strangen The sergeant grew up in Weatherbury. Thank+
ing you again for your kindness,
"I am, your sincere well-wisher,
" FANNV ROBIN.'
' Have you read it, Mr. Boldwood?' said Gabriel;
"if not, you had better do so. I know you are interested
in Fanny Robin.'
<P 161>
Boldwood read the letter and looked grieved.
"Fanny -- poor Fanny! the end she is so confident
of has not yet come, she should remember -- and may
never come. I see she gives no address.'
"What sort of a man is this Sergeant Troy?' said
Gabriel.
"H'm -- I'm afraid not one to build much hope upon
in such a case as this,' the farmer murmured, "though
he's a clever fellow, and up to everything. A slight
romance attaches to him, too. His mother was a French
governess, and it seems that a secret attachment existed
between her and the late Lord Severn. She was married
to a poor medical man, and soon after an infant was
horn; and while money was forthcoming all went on
well. Unfortunately for her boy, his best friends died;
and he got then a situation as second clerk at a lawyer's
in Casterbridge. He stayed there for some time, and
might have worked himself into a dignified position of
some sort had he not indulged in the wild freak of
enlisting. I have much doubt if ever little Fanny will
surprise us in the way she mentions -- very much doubt
A silly girl! -- silly girl!'
The door was hurriedly burst open again, and in
came running Cainy Ball out of breath, his mouth red
and open, like the bell of a penny trumpet, from which
he coughed with noisy vigour and great distension of face.
"Now, Cain Ball,' said Oak, sternly, "why will you
run so fast and lose your breath so? I'm always telling
you of it.'
'Oh -- I -- a puff of mee breath -- went -- the -- wrong
way, please, Mister Oak, and made me cough -- hok --
hok!'
"Well --  what have you come for?'
"I've run to tell ye,' said the junior shepherd,
supporting his exhausted youthful frame against the
doorpost, ' that you must come directly'. Two more ewes
have twinned -- that's what's the matter, Shepherd Oak.'
" Oh, that's it,' said Oak, jumping up, and dimissing
for the present his thoughts on poor Fanny. " You are
a good boy to run and tell me, Cain, and you shall
smell a large plum pudding some day as a treat. But,
before we go, Cainy, bring the tarpot, and we'll mark
this lot and have done with 'em.'
<P 162>
Oak took from his illimitable pockets a marking iron,
dipped it into the pot, and imprintcd on the buttocks
of the infant sheep the initials of her he delighted to
muse on -- "B. E.,' which signified to all the region
round that henceforth the lambs belonged to Farmer
Bathsheba Everdene, and to no one else.
" Now, Cainy, shoulder your two, and off Good
morning, Mr. Boldwood.' The shepherd lifted the
sixteen large legs and four small bodies he had himself
brought, and vanished with them in the direction of
the lambing field hard by -- their frames being now in a
sleek and hopeful state, pleasantly contrasting with their
death's-door plight of hialf an hour before.
Boldwood followed him a little way up the field,
hesitated, and turned back. He followed him again
with a last resolve, annihilating return. On approaching
the nook in which the fold was constructed, the farmer
drew out-his pocket-book, unfastened-it, and allowed it
to lie open on his hand. A letter was revealed -- Bath+
sheba's.
"I was going to ask you, Oak,' he said, with unreal
carelessness, "if you know whose writing this is? '
Oak glanced into the book, and replied instantly,
with a flushed face, " Miss Everdene's.'
Oak had coloured simply at the consciousness of
sounding her name. He now felt a strangely distressing
qualm from a new thought. ' The letter could of course
be no other than anonymous, or the inquiry would not
have been necessary.
Boldwood mistook his confusion : sensitive persons
are always ready with their "Is it I ? ' in prefercnce to
objective reasoning.
" The question was perfectly fair,' he returned -- and
there was something incongruous in the serious eamest+
ness with which he applied himself to an argument on
a valentine. " You know it is always expected that
privy inquiries will be made : that's where the -- fun
lies.' If the word "fun' had been "torture,' it could
not have been uttered with a more constrained and
restless countenance than was Boldwood's then.'
Soon parting from Gabriel, the lonely and reserved
man returned to his house to breakfast -- feeling twinges
of shame and regret at having so far exposed his mood
by those fevered
<P 163>
questions to a stranger. He again
placed the letter on the mantelpiece, and sat down to
think of the circumstances attending it by the light of
Gabriel's information.
ALL SAINTS' AND ALL SOULS"
<C xvi>
<P 164>
ALL SAINTS' AND ALL SOULS'
ON a week-day morning a small congregation, con+
sisting mainly of women and girls, rose from its knees
in the mouldy nave of a church called All Saints', in
the distant barrack-town before mentioned, at the end
of a service without a sermon. They were about to
disperse, when a smart footstep, entering the porch and
coming up the central passage, arrested their attention.
The step echoed with a ring unusual in a church; it
was the clink of spurs. Everybody looked. A young
cavalry soldier in a red uniform, with the three chevrons
of a sergeant upon his sleeve, strode up the aisle, with
an embarrassment which was only the more marked
by the intense vigour of his step, and by the deter+
mination upon his face to show none. A slight flush
had mounted his cheek by the time he had run the
gauntlet between these women ; but, passing on through
the chancel arch, he never paused till he came close
to the altar railing. Here for a moment he stood
alone.
The officiating curate, who had not yet doffed his
surplice, perceived the new-comer, and followed him
to the communion-space. He whispered to the soldier,
and then beckoned to the clerk, who in his turn
whispered to an elderly woman, apparently his wife, and
they also went up the chancel steps.
"'Tis a wedding!' murmured some of the women,
brightening. " Let's wait!'
The majority again sat down.
There was a creaking of machinery behind, and
some of the young ones turned their heads. From the
interior face of the west wall of the tower projected a
little canopy with a quarter-jack and small bcll beneath
it, the automaton being driven by the same clock
machinery that struck the large bell in the tower. Be+
tween the tower and the church was a close sereen, the
door of which was kept shut during services, hiding
this
<P 165>
grotesque clockwork from sight. At present, how+
ever, the door was open, and the egress of the jack, the
blows on the bell, and the mannikin's retreat intc.the
nook again, were visible to many, and audible through+
out the church.
The jack had struck half-past eleven.
" Where's the woman ?" whispered some of the
spectators.
The young sergeant stood still with the abnormal
rigidity of the old pillars around. He faced the south+
east, and was as silent as he was still.
The silence grew to be a noticeable thing as the
minutes went on, and nobody else appeared, and not a
soul moved. The rattle of the quarter-jack again from
its niche, its blows for three-quarters, its fussy retreat,
were almost painfully abrupt, and caused many of the
congregation to start palpably.
"I wonder where the woman is!' a voice whispered
again.
There began now that slight shifting of feet, that
artificial coughing among several, which betrays a
nervous suspense. At length there was a titter. But
the soldier never moved. There he stood, his face to
the south-east, upright as a column, his cap in his hand.
The clock ticked on. The women threw off their
nervousness, and titters and giggling became more
frequent. Then came a dead silence. Every one was
waiting for the end. Some persons may have noticed
how extraordinarily the striking of quarters. seems to
quicken the flight of time. It was hardly credible that
the jack had not got wrong with the minutes when the
rattle began again, the puppet emerged, and the four
quarters were struck fitfully as before: One could al+
most be positive that there was a malicious leer upon
the hideous creature's face, and a mischievous delight
in its twitchings. Then, followed the dull and remote
resonance of the twelve heavy strokes in the tower
above. The women were impressed, and there was no
giggle this time.
The clergyman glided into the vestry, and the clerk
vanished. The sergeant had not yet turned ; every
woman in the church was waiting to see his face, and
he appeared to know it. At last he did turn, and
stalked resolutely down the nave, braving them all,
with a compressed lip. Two bowed and toothless old
<P 166>
almsmen then looked at each other and chuckled,
innocently enough ; but the sound had a strange weird
effect in that place.
Opposite to the church was a paved square, around
which several overhanging wood buildings of old time
cast a picturesque shade. The young man on leaving
the door went to cross the square, when, in the middle,
he met a little woman. The expression of her face,
which had been one of intense anxiety, sank at the
sight of his nearly to terror.
" Well ? ' he said, in a suppressed passion, fixedly
looking at her.
" O, Frank -- I made a mistake! -- I thought that
church with the spire was All Saints', and I was at the
door at half-past eleven to a minute as you said.
waited till a quarter to twelve, and found then that I
was in All Souls'. But I wasn't much frightened, for
I thought it could be to-morrow as well.'
"You fool, for so fooling me! But say no more.'
" Shall it be to-monow, Frank ? ' she asked blankly.
"To-morrow !' and he gave vent to a hoarse laugh.
"I don't go through that experience again for some
time, I warrant you ! '
" But after all,' she expostulated in a trembling voice,
"the mistake was not such a terrible thing! Now, dear
Frank, when shall it be?'
"Ah, when ? God knows !' he said, with a light
irony, and turning from her walked rapidly away.
<C xvii>
<P 167>
IN THE MARKET-PLACE
ON Saturday Boldwood was in Casterbridge market
house as usual, when the disturber of his dreams entered
and became visible to him. Adam had awakened from
his deep sleep, and behold! there was Eve. The
farmer took courage, and for the first time really looked
at her.
Material causes and emotional effects are not to be
arranged in regular equation. The result from capital
employed in the production of any movement of a
mental nature is sometimes as tremendous as the cause
itself is absurdly minute. When women are in a freakish
mood, their usual intuition, either from carelessness or
inherent defect, seemingly fails to teaeh them this, and
hence it was that Bathsheba was fated to be astonished
today.
Boldwood looked at her -- not slily, critically, or
understandingly, but blankly at gaze, in the way a
reaper looks up at a passing train -- as something foreign
to his element, and but dimly understood. To Bold+
wood women had been remote phenomena rather than
necessary complements -- comets of such uncertain
aspeet, movement, and permanence, that whether
their orbits were as geometrical, unchangeable, and
as subject to laws as his own, or as absolutely erratic
as they superficially appeared, he had not deemed it
his duty to consider.
He saw her black hair, her correct facial curves
and profile, and the roundness of her chin and throat.
He saw then the side of her eyelids, eyes, and lashes,
and the shape of her ear. Next he noticed her figure,
her skirt, and the very soles of her shoes.
Boldwood thought her beautiful, but wondered
whether he was right in his thought, for it seemed
impossible that this romance in the flesh, if so sweet
as he imagined, could have
<P 168>
been going on long without
creating a commotion of delight among men, and pro+
voking more inquiry than Bathsheba had done, even
though that was not a little. To the best of his judg+
ment neither nature nor art could improve this perfect
one of an imperfect many. His heart began to move
within him. Boldwood, it must be remembered, though
forty years of age, had never before inspected a woman
with the very centre and force of his glance; they had
struck upon all his senses at wide angles.
Was she really beautiful? He could not assure
himself that his opinion was true even now. He fur+
tively said to a neighbour, 'Is Miss Everdene considered
handsome?'
"0 yes; she was a good deal 'notied the first
time she came, if you remember. A very handsome
girl indeed.'
A man is never more credulous than in receiving
favourable opinions on the beauty of a woman he is
half, or quite, in love with; a mere child's word on the
point has the weight of an R.A.'s. Boldwood was
satisfied now.
And this charming woman had in effect said to
him, "Marry me.' Why should she have done that
strange thing ? Boldwood's blindness to the difference
between approving of what circumstances suggest, and
originating what they do not suggest, was well matched
by Bathsheba's insensibility to the possibly great issues
of little beginnings.
She was at this moment coolly dealing with a dashing
young farmer, adding up accounts with him as indiffer+
ently as if his face had been the pages of a ledger. It
was evident that such a nature as his had no attraction
for a woman of Bathsheba's taste. But Boldwood grew
hot down to his hands with an incipient jealousy; he
trod for the first time the threshold of "the injured
lover's hell.' His first impulse was to go and thrust
himself between them. This could be done, but only
in one way -- by asking to see a sample of her corn.
Boldwood renounced the idea. He could not make
the request; it was debasing loveliness to ask it to
buy and sell, and jarred with his conceptions of her.
All this time Bathsheba was conscious of having
broken into that dignified stronghold at last. His
eyes, she knew, were
<P 169>
following her everywhere. This
was a triumph; and had it come naturally, such a
triumph would have been the sweeter to her for this
piquing delay. But it had been brought about by
misdirected ingenuity, and she valued it only as she
valued an artificial flower or a wax fruit.
Being a woman with some good sense in reasoning
on subjects wherein her heart was not involved, Bath+
sheba genuinely repented that a freak which had owed
its existence as much to Liddy as to herself, should
ever have been undertaken, to disturb the placidity of
a man she respected too highly to deliberately tease.
She that day nearly formed the intention of begging
his pardon on the very next occasion of their meeting.
The worst features of this arrangement were that, if
he thought she ridiculed him, an apology would in+
crease the offence by being disbelieved; and if he
thought she wanted him to woo her, it would read
like additional evidence of her forwardness.
<C xviii>
<P 170>
BOLDWOOD IN MEDITATION -- REGRET
BOLDWOOD was tenant of what was called Little
Weatherbury Farm, and his person was the nearest ap+
proach to aristocracy that this remoter quarter of the
parish could boast of. Genteel strangers, whose god
was their town, who might happen to be compelled to
linger about this nook for a day, heard the sound of
light wheels, and prayed to see good society, to the
degree of a solitary lord, or squire at the very least,
but it was only Mr. Boldwood going out for the day.
They heard the sound of wheels yet once more, and
were re-animated to expectancy : it was only Mr. Bold+
wood coming home again.
His house stood recessed from the road, and the
stables, which are to a farm what a fireplace is to a
room, were behind, their lower portions being lost
amid bushes of laurel. Inside the blue door, open
half-way down, were to be seen at this time the backs
and tails of half-a-dozen warm and contented horses
standing in their stalls; and as thus viewed, they pre+
sented alternations of roan and bay, in shapes like a
Moorish arch, the tail being a streak down the midst
of each. Over these, and lost to the eye gazing in
from the outer light, the mouths of the same animals
could be heard busily sustaining the above-named
warmth and plumpness by quantities of oats and hay.
The restless and shadowy figure of a colt wandered
about a loose-box at the end, whilst the steady grind
of all the eaters was occasionally diversified by the
rattle of a rope or the stamp of a foot.
Pacing up and down at the heels of the animals was
Farmer Boldwood himself. This place was his almonry
and cloister in one : here, after looking to the feeding
of his four-footed dependants, the celibate would walk
and meditate of an evening till the moon's rays streamed
in through the cobwebbed windows, or total darkness
enveloped the scene.
<P 171>
His square-framed perpendicularity showed more fully
now than in the crowd and bustle of the market-house.
In this meditative walk his foot met the floor with heel
and toe simultaneously, and his fine reddish-fleshed face
was bent downwards just enough to render obscure the
still mouth and the well-rounded though rather prominent
and broad chin. A few clear and thread-like horizontal
lines were the only interruption to the otherwise smooth
surface of his large forehead.
The phases of Boldwood's life were ordinary enough,
but his was not an ordinary nature. That stillness,
which struck casual observers more than anything else
in his character and habit, and seemed so precisely
like the rest of inanition, may have been the perfect
balance of enormous antagonistic forces -- positives and
negatives in fine adjustment. His equilibrium disturbed,
he was in extremity at once. If an emotion possessed
him at all, it ruled him; a feeling not mastering him
was entirely latent. Stagnant or rapid, it was never
slow. He was always hit mortally, or he was missed.
He had no light and careless touches in his constitu+
tion, either for good or for evil. Stern in the outlines of
action, mild in the details, he was serious throughout all.
He saw no absurd sides to the follies of life, and thus,
though not quite companionable in the eyes of merry
men and scoffers, and those to whom all things show
life as a jest, he was not intolerable to the earnest and
those acquainted with grief. Being a man -who read
all the dramas of life seriously, if he failed to please
when they were comedies, there was no frivolous treat+
ment to reproach him for when they chanced to end
tragically.
Bathsheba was far from dreaming that the dark and
silent shape upon which she had so carelessly thrown a
seed was a hotbed of tropic intensity. Had she known
Boldwood's moods, her blame would have been fearful,
and the stain upon her heart ineradicable. Moreover,
had she known her present power for good or evil over
this man, she would have trembled at her responsibility.
Luckily for her present, unluckily for her future tran+
quillity, her understanding had not yet told her what
Boldwood was. Nobody knew entirely ; for though it
was possible to form guesses concerning his wild 'capa+
<P 172>
bilities from old floodmarks faintly visible, he had never
been seen at the high tides which caused them.
Farmer Boldwood came to the stable-door and looked
forth across the level fields. Beyond the first enclosure
was a hedge, and on the other side of this a meadow
belonging to Bathsheba's farm.
It was now early spring -- the time of going to grass
with the sheep, when they have the first feed of the
meadows, before these are laid up for mowing. The
wind, which had been blowing east for several weeks,
had veered to the southward, and the middle of spring
had come abruptly -- almost without a beginning. It
was that period in the vernal quarter when we map
suppose the Dryads to be waking for the season. The
vegetable world begins to move and swell and the saps
to rise, till in the completest silence of lone gardens
and trackless plantations, where- everything seems -help+
less and still after the bond and slavery of frost, there
are bustlings, strainings, united thrusts, and pulls-all+
together, in comparison with which the powerful tugs of
cranes and pulleys in a noisy city are but.  pigmy efforts.
"Boldwood, looking into the distant meadows, saw
there three figures. They were those of Miss' Everdene,
Shepherd Oak, and Cainy Ball.
When Bathsheba's figure shone upon the farmer's
eyes it lighted him up as the moon lights up a great
tower. A man's body is as the shell; or the tablet, of
his soul, as he is reserved or ingenuous, overflowing or
self-contained. There was a  change in Boldwood's
exterior from its former impassibleness ; and his face
showed that he was now living outside his defences
for the first time, and with a fearful sense of exposure.
It is the usual experience of strong natures when they
love.
At last he arrived at a conclusion. It was to go
across and inquire boldly of her.
The insulation of his heart by reserve during these
many years, without a channel of any kind for disposable
emotion, had worked its effect. It has been observed
more than once that the causes of love are chiefly
<P 173>
subjective, and Boldwood was a living testimony to
the truth of the proposition. No mother existed to
absorb his devotion, no sister for his tenderness, no
idle ties for sense. He became surcharged with the
compound, which was genuine lover's love.
He approached the gate of the meadow. Beyond
it the ground was melodious with ripples, and the sky
with larks; the low bleating of the flock mingling with
both. Mistress and man were engaged in the operation
of making a lamb "take,' which is performed whenever
an ewe has lost her own offspring, one of the twins of
another ewe being given her as a substitute. Gabriel
had skinned the dead lamb, and was tying the skin
over the body of the live lamb, in the customary manner,
whilst Bathsheba was holding open a little pen of four
hurdles, into which the Mother and foisted lamb were
driven, where they would remain till the old sheep
conceived an affection for the young one.
Bathsheba looked up at the completion of the
manouvre, and saw the farmer by the gate, where he
was overhung by a willow tree in full bloom. Gabriel,
to whom her face was as the uncertain glory of an April
day, was ever regardful of its faintest changes, and
instantly discerned thereon the mark of some influence
from without, in the form of a keenly self-conscious
reddening. He also turned and beheld Boldwood.
At onee connecting these signs with the letter Bold+
wood had shown him, Gabriel suspected her of some
coquettish procedure begun by that means, and carried
on since, he knew not how.
Farmer Boldwood had read the pantomime denoting
that they were aware of his presence, and the perception
was as too much light turned upon his new sensibility.
He was still in the road, and by moving on he hoped
that neither would recognize that he had originally
intended to enter the field. He passed by with an
utter and overwhelming sensation of ignorance, shyness,
and doubt. Perhaps in her manner there were signs
that she wished to see him -- perhaps not -- he could not
read a woman. The cabala of this erotic philosophy
seemed to consist of the subtlest meanings expressed in
misleading ways.
<P 174>
Every turn, look, word, and accent
contained a mystery quite distinct from its obvious
import, and not one had ever been pondered by him
until now.
As for Bathsheba, she was not deceived into the
belief that Farmer Boldwood had walked by on business
or in idleness. She collected the probabilities of the
case, and concluded that she was herself responsible for
Boldwood's appearance there. It troubled her much
to see what a great flame a little Wildfire was likely to
kindle. Bathsheba was no schemer for marriage, nor
was she deliberately a trifler with the affections of men,
and a censor's experience on seeing an actual flirt after
observing her would have been a feeling of surprise
that Bathsheba could be so different from such a one,
and yet so like what a flirt is supposed to be.
She resolved never again, by look or by sign, to
interrupt the steady flow of this man's life. But a
resolution to avoid an evil is seldom framed till the evil
is so far advanced as to make avoidance impossible.
<C xix>
<P 175>
THE SHEEP-WASHING -- THE OFFER
BOLDWOOD did eventually call upon her. She was
not at home. " Of course not,' he murmured. In con+
templating Bathsheba as a woman, he had forgotten the
accidents of her position as an agriculturist -- that being
as much of a farmer, and as extensive a farmer, as
himself, her probable whereabouts was out-of-dooTs at
this time of the year. This, and the other oversights
Boldwood was guilty of, were natural to the mood, and
still more natural to the circumstances. The great aids
to idealization in love were present here : occasional
observation of her from a distance, and the absence of
social intercourse with her -- visual familiarity, oral
strangeness. The smaller human elements were kept
out of sight ; the pettinesses that enter so largely into
all earthly living and doing were disguised by the
accident of lover and loved-one not being on visiting
terms ; and there was hardly awakened a thought in
Boldwood that sorry household realities appertained to
her, or that she, like all others, had moments of
commonplace, when to be least plainly seen was to be
most prettily remembered. Thus a mild sort of
apotheosis took place in his fancy, whilst she still lived
and breathed within his own horizon, a troubled creature
like himself.
It was the end of May when the farmer determined
to be no longer repulsed by trivialities or distracted by
suspense. He had by this time grown used to being in
love; the passion now startled him less even when it
tortured him more, and he felt himself adequate to the
situation. On inquiring for her at her house they had
told him she was at the sheepwashing, and he went off
to seek her there.
The sheep-washing pool was a perfectly circular basin
of brickwork in the meadows, full of the clearest water.
To birds on the wing its glassy surface, reflecting the
light sky, must have been
<P 176>
visible for miles around as a
glistening Cyclops' eye in a green face. The grass
about the margin at this season was a sight to remember
long -- in a minor sort of way. Its activity in sucking
the moisture from the rich damp sod. was almost a pro+
cess observable by the eye. The outskirts of this level
water-meadow were diversified by rounded and hollow
pastures, where just now every flower that was not a
buttercup was a daisy. The river slid along noiselessly
as a shade, the swelling reeds and sedge forming a
flexible palisade upon its moist brink. To the north
of the mead were trees, the leaves of which were new,
soft, and moist, not yet having stiffened and darkened
under summer sun and drought, their colour being
yellow beside a green -- green beside a yellow.
From the recesses of this knot of foliage the loud
notes of three cuckoos were resounding through the
still air.
Boldwood went meditating down the slopes with his
eyes on his boots, which the yellow pollen from the
buttercups had bronzed in artistic gradations. A tribu+
tary of the main stream flowed through the basin of the
pool by an inlet and outlet at opposite points of its
diameter. Shepherd Oak, Jan Coggan, Moon, Poor+
grass, Cain Ball, and several others were assembled
here, all dripping wet to the very roots of their hair,
and Bathsheba was standing by in a new riding-habit --
the most elegant she had ever worn -- the reins of her
horse being looped over her arm. Flagons of cider
were rolling about upon the green. The meek sheep
were pushed into the pool by Coggan and Matthew
Moon, who stood by the lower hatch, immersed to their
waists; then Gabriel, who stood on the brink, thrust
them under as they swam along, with an instrument
like a crutch, formed for the purpose, and also for
assisting the exhausted animals when the wool became
saturated and they began to sink. They were let out
against the stream, and through the upper opening, all
impurities flowing away below. Cainy Ball and Joseph,
who performed this latter operation, were if possible
wetter than the rest ; they resembled dolphins under a
fountain, every protuberance and angle of their clothes
dribbling forth a small rill.
<P 177>
Boldwood came close and bade her good-morning, with
such constraint that she could not but think he had
stepped across to the washing for its own sake, hoping
not to find her there ; more, she fancied his brow severe
and his eye slighting. Bathsheba immediately contrived
to withdraw, and glided along by the river till she was
a stone's throw off. She heard footsteps brushing the
grass, and had a consciousness that love was encircling
her like a perfume. Instead of turning or waiting,
Bathsheba went further among the high sedges, but
Boldwood seemed determined, and pressed on till they
were completely past the bend of the river. Here,
without being seen, they could hear the splashing and
shouts of the washers above.
"Miss Everdene!' said the farmer.
She trembled, turned, and said 'Good morning.'
His tone was so utterly removed from all she had
expected as a beginning. It was lowness and quiet
accentuated : an emphasis of deep meanings, their form,
at the same time, being scarcely expressed. Silence
has sometimes a remarkable power of showing itself as
the disembodied soul of feeling wandering without its
carcase, and it is then more impressive than speech.
In the same way, to say a little is often to tell more
than to say a great deal. Boldwood told everything in
that word.
As the conseiousness expands on learning that what
was fancied to be the rumble of wheels is the reverbera+
tion of thunder, so did Bathsheba's at her intuitive
conviction.
'I feel -- almost too much -- to think,' he said, with a
solemn simplicity. "I have come to speak to you with+
out preface. My life is not my own since I have beheld
you clearly, Miss Everdene -- I come to make you an
offer of marriage.'
Bathsheba tried to preserve an absolutely neutral
countenance, and all the motion she made was that of
closing lips which had previously been a little parted.
"I am now forty-one years old,' he went on. "I may
have been called a confirmed bachelor, and I was a
confirmed bachelor. I had never any views of myself
as a husband in my earlier days, nor have I made any
calculation on the subject since I have been older.
But we all change, and my change, in this matter,
<P 178>
came
with seeing you. I have felt lately, more and more,
that my present way of living is bad in every respect.
Beyond all things, I want you as my wife.'
"I feel, Mr. Boldwood, that though I respect you
much, I do not feel -- what would justify me to -- in
accepting your offer,' she stammered.
This giving back of dignity for dignity seemed to
open the sluices of feeling that Boldwood had as yet
kept closed.
" My life is a burden without you,' he exclaimed, in
a low voice. "I want you -- I want you to let me say
I love you again and again!'
Bathsheba answered nothing, and the mare upon
her arm seemed so impressed that instead of cropping
the herbage she looked up.
"I think and hope you care enough for me to listen
to what I have to tell!"
   Bathsheba's momentary impulse at hearing this was
to ask why he thought that, till she remembered that,
far from being a conceited assumption on Boldwood's
part, it was but the natural conclusion of serious reflec+
tion based on deceptive premises of her own offering.
"I wish I could say courteous flatteries to you,' the
farmer continued in an easier tone, " and put my rugged
feeling into a graceful shape: but I have neither power
nor patience to learn such things. I want you for my
wife -- so wildly that no other feeling can abide in me;
but I should not have spoken out had I not been led
to hope.'
"The valentine again! O that valentine!' she
said to herself, but not a word to him.
  "If you can love me say so, Miss Everdene. If not
 -- don't say no!'
  "Mr. Boldwood, it is painful to have to say I am
surprised, so that I don't know how to answer you with
propriety and respect -- but am only just able to speak
out my feeling -- I mean my meaning; that I am afraid
I can't marry you, much as I respect you. You are too
dignified for me to suit you, sir.'
  "But, Miss Everdene!'
"I -- I didn't -- I know I ought never to have dreamt
of sending
<P 179>
that valentine -- forgive me, sir -- it was a
wanton thing which no woman with any self-respect
should have done. If you will only pardon my thought+
lessness, I promise never to --  -- '
" No, no, no. Don't say thoughtlessness! Make me
think it was something more -- that it was a sort of
prophetic instinct -- the beginning of a feeling that you
would like me. You torture me to say it was done in
thoughtlessness -- I never thought of it in that light, and
I can't endure it. Ah ! I wish I knew how to win you!
but that I can't do -- I can only ask if I have already got
you. If I have not, and it is not true that you have
come unwittingly to me as I have to you, I can say no
more.'
  "I have not fallen in love with you, Mr. Boldwood --
certainly I must say that.' She allowed a very small
smile to creep for the first time over her serious face in
saying this, and the white row of upper teeth, and keenly+
cut lips already noticed, suggested an idea of heartless+
ness, which was immediately contradicted by the pleasant
eyes.
"But you will just think -- in kindness and conde+
scension think -- if you cannot bear with me as a husband!
I fear I am too old for you, but believe me I will take
more care of you than would many a man of your own
age. I will protect and cherish you with all my strength
 -- I will indeed! You shall have no cares -- be worried
by no household affairs, and live quite at ease, Miss
Everdene. The dairy superintendence shall be done by
a man -- I can afford it will -- you shall never have so
much as to look out of doors at haymaking time, or to
think of weather in the harvest. I rather cling; to the
chaise, because it is he same my poor father and mother
drove, but if you don't like it I will sell it, and you shall
have a pony-carriage of your own. I cannot say how
far above every other idea and object on earth you seem
to me -- nobody knows -- God only knows -- how much
you are to me!'
Bathsheba's heart was young, and it swelled with
sympathy for the deep-natured man who spoke so
simply.
  "Don't say it! don't! I cannot bear you to feel so
much, and me to feel nothing. And I am afraid they
will notice us, Mr. Boldwood. Will you let the matter
rest now? I cannot think
<P 180>
collectedly. I did not know
you were going to say this to me. 0, I am wicked to
have made you suffer so!' She was frightened as well
as agitated at his vehemence.
  "Say then, that you don't absolutely refuse. Do not
quite refuse?'
"I can do nothing. I cannot answer.'
"I may speak to you again on the subject?'
"Yes.'
"I may think of you?'
"Yes, I suppose you may think of me.'
"And hope to obtain you?'
"No -- do not hope! Let us go on.'
"I will call upon you again to-morrow.'
"No -- please not. Give me time.'
"Yes -- I will give you any time,' he said earnestly and
gratefully. "I am happier now.'
"No -- I beg you! Don't be happier if happiness
only comes from my agreeing. Be neutral, Mr. Bold+
wood! I must think.'
"I will wait,' he said.
And then she turned away. Boldwood dropped his
gaze to the ground, and stood long like a man who did not
know where he was. Realities then returned upon him
like the pain of a wound received in an excitement
which eclipses it, and he, too, then went on.
<C xx>
<P 181>
PERPLEXITy -- GRINDING THE SHEARS -- A QUARREL
"HE is so disinterested and kind to offer me all that I
can desire,' Bathsheba mused.
Yet Farmer Boldwood, whether by nature kind or
the reverse to kind, did not exercise kindness, here.
The rarest offerings of the purest loves are but a self+
indulgence, and no generosity at all.
Bathsheba, not being the least in love with him, was
eventually able to look calmly at his offer. It was one
which many women of her own station in the neighbour+
hood, and not a few of higher rank, would have been
wild to accept and proud to publish. In every point of
view, ranging from politic to passionate, it was desirable
that she, a lonely girl, should marry, and marry this
earnest, well-to-do, and respected man. He was close
to her doors: his standing was sufficient: his qualities
were even supererogatory. Had she felt, which she did
not, any wish whatever for the married state in the
abstract, she could not reasonably have rejected him,
being a woman who frequently appealed to her under,
standing for deliverance from her whims. Boldwood as
a means to marriage was unexceptionable: she esteemed
and liked him, yet she did not want him. It appears
that ordinary men take wives because possession is not
possible without marriage, and that ordinary women
accept husbands because marriage is not possible with,
out possession; with totally differing aims the method is
the same on both sides. But the understood incentive
on the woman's part was wanting here. Besides, Bath+
sheba's position as absolute mistress of a farm and house
was a novel one, and the novelty had not yet begun to
wear off.
But a disquiet filled her which was somewhat to her
credit, for it would have affected few. Beyond the men+
tioned reasons with which she combated her objections,
she had a strong
<P 182>
feeling that, having been the one who
began the game, she ought in honesty to accept the conse,
quences. Still the reluctance remained. She said in the
same breath that it would be ungenerous not to marry
Boldwood, and that she couldn't do it to save her life.
Bathsheba's was an impulsive nature under a delibera,
tive aspect.  An Elizabeth in brain and a Mary Stuart
in spirit, she often performed actions of the greatest
temerity with a manner of extreme discretion. Many of
her thoughts were perfect syllogisms; unluckily they
always remained thoughts. Only a few were irrational
assumptions; but, unfortunately, they were the ones
which most frequently grew into deeds.
  The next day to that of the declaration she found
Gabriel Oak at the bottom of her garden, grinding his
shears for the sheep-shearing. All the surrounding
cottages were more or less scenes of the same operation;
the scurr of whetting spread into the sky from all parts
of the village as from an armury previous to a campaign.
Peace and war kiss each other at their hours of prepara+
tion -- sickles, scythes, shears, and pruning-hooks, ranking
with swords, bayonets, and lances, in their common
necessity for point and edge.
Cainy Ball turned the handle of Gabriel's grinstone,
his head performing a melancoly see-saw up and down
with each turn of the wheel. Oak stood somewhat as
Eros is represented when in the act of sharpening his
arrows: his figure slightly bent, the weight of his body
thrown over on the shears, and his head balanced side+
ways, with a critical compression of the lips and contrac+
tion of the eyelids to crown the attitude.
His mistress came up and looked upon them in
silence for a minute or two; then she said --
"Cain, go to the lower mead and catch the bay mare.
I'll turn the winch of the grindstone. I want to speak
to you, Gabriel.
Cain departed, and Bathsheba took the handle.
Gabriel had glanced up in intense surprise, quelled its
expression, and looked down again. Bathsheba turned
the winch, and Gabriel applied the shears.
The peculiar motion involved in turning a wheel
has a wonderful tendency to benumb the mind. It
is a sort of
<P 183>
attenuated variety of Ixion's punishment,
and contributes a dismal chapter to the history of
heavy, and the body's centre of gravity seems to
settle by degrees in a leaden lump somewhere be+
tween the eyebrows and the crown. Bathsheba felt
the unpleasant symptoms after two or three dozen
turns.
  "Will you turn, Gabriel, and let me hold the shears?"
she said. "My head is in a'whirl, and I can't talk.
Gabriel turned. Bathsheba then began, with some
awkwardness, allowing her thoughts to stray occasion+
ally from her story to attend to the shears, which
required a little nicety in sharpening.
  "I wanted to ask you if the men made any observa+
tions on my going behind the sedge with Mr. Boldwood
yesterday?'
  "Yes, they did,' said Gabriel. "You don't hold
the shears right, miss -- I knew you wouldn't know the
way -- hold like this.'
He relinquished the winch, and inclosing her two
hands completely i his own (taking each as we some+
times slasp a child's hand in teaching him to write),
grasped the shears with her. "Incline the edge so,'
he said.
  Hands and shears were inclined to suit the words,
and held thus for a peculiarly long time by the in+
structor as he spoke.
  "That will do,' exclaimed Bathsheba. "Loose my
hands. I won't have them held! Turn the winch.'
Gabriel freed her hands quietly, retired to his
handle, and the grinding went on.
  "Did the men think it odd?' she said again.
"Odd was not the idea, miss.'
"What did they say?'
"That Farmer Boldwood's name and your own
were likely to be flung over pulpit together before the
year was out.'
"I thought so by the look of them! Why, there's
nothing in it. A more foolish remark was never made,
and I want you to contradict it! that's what I came for.'
  Gabriel looked incredulous and sad, but between
his moments of incredulity, relieved.
"They must have heard our conversation,' she
continued.
<P 184>
"Well, then, Bathsheba!' said Oak, stopping the
handle, and gazing into her face with astonishment.
  "Miss Everdene, you mean," she said, with dignity.
  "I mean this, that if Mr. Boldwood really spoke of
marriage, I bain't going to tell a story and say he
didn't to please you. I have already tried to please
you too much for my own good!'
Hathsheba regarded him with round-eyed perplexity.
She did not know whether to pity him for disappointed
love of her, or to be angry with him for having got
over it -- his tone being ambiguous.
  "I said I wanted you just to mention that it was
not true I was going to be married to him,' she mur+
mured, with a slight decline in her assurance.
"I can say that to them if you wish, Miss Everdene.
And I could likewise give an opinion to 'ee on what
you have done.'
"I daresay. But I don't want your opinion.'
"I suppose not,' said Gabriel bitterly, and going on
with his turning, his words rising and falling in a
regular swell and cadence as he stooped or rose with
the winch, which directed them, according to his
position, perpendiculary into the earth, or horizontally
along the garden, his eyes being fixed on a leaf upon
the ground.
  With Bathsheba a hastened act was a rash act;
but, as does not always happen, time gained was
prudence insured. It must be added, however, that
time was very seldom gained. At this period the
single opinion in the parish on herself and her doings
that she valued as sounder than her own was Gabriel
Oak's. And the outspoken honesty of his character
was such- that on any subject even that of her love
for, or marriage with, another man, the same disinter+
estedness of opinion might be calculated on, and be
had for the asking. Thoroughly convinced of the
impossibility of his own suit, a high resolve constrained
him not to injure that of another. This is a lover's
most stoical virtue, as the lack of it is a lover's most
venial sin. Hnowing he would reply truly, she asked
the question, painful as she must have known the sub+
ject would be. Such is the selfishness of some charm+
ing women. Perhaps it was some excuse for her thus
torturing honesty to her own advantage, that she had
<P 185>
absolutely no other sound judgment within easy reach.
"Well, what is your opinion of my conduct,' she
said, quietly.
"That it is unworthy of any thoughtful, and meek,
and comely woman.'
In an instant Bathsheba's face coloured with the
angry crimson of a danby sunset. But she forbore
to utter this feeling, and the reticence of her tongue
only made the loquacity of her face the more notice+
able.
The next thing Gabriel did was to make a mistake.
"Perhaps you don't like the rudeness of my repri+
manding you, for I know it is rudeness; but I thought
it would do good.'
She instantly replied sarcastically --
"On the contrary, my opinion of you is so low, that
I see in your abuse the praise of discerning people!'
"I am glad you don't mind it, for I said it honestly
and with every serious meaning.'
  "I see. But, unfortunately, when you try not to
speak in jest you are amusing -- just as when you wish
to avoid seriousness you sometimes say a sensible word
It was a hard hit, but Bathsheba had unmistakably
lost her temper, and on that account Gabriel had
never in his life kept his own better. He said nothing.
She then broke out --
  "I may ask, I suppose, where in particular my
unworthiness lies? In my not marrying you, perhaps!
"Not by any means,' said Gabriel quietly. "I have
long given up thinking of that matter.'
"Or wishing it, I suppose,' she said; and it was
apparent that she expected an unhesitating denial of
this supposition.
Whatever Gabriel felt, he coolly echoed her words --
"Or wishing it either.'
  A woman may be treated with a bitterness which
is sweet to her, and with a rudeness which is not
offensive. Bathsheba would have submitted to an
indignant chastisement for her levity had Gabriel pro+
tested that he was loving her at the same time; the
impetuosity of passion unrequited is bearable, even if
it stings and anathematizes there is a triumph in the
humiliation, and a tenderness in the strife. This was
what she had been expecting, and what she had not
got. To be lectured
<P 186>
because the lecturer saw her in
the cold morning light of open-shuttered disillusion
was exasperating. He had not finished, either. He
continued in a more agitated voice: --
"My opinion is (since you ask it) that you are
greatly to blame for playing pranks upon a man like
Mr. Boldwood, merely as a pastime. Leading on a
man you don't care for is not a praiseworthy action.
And even, Miss Everdene, if you seriously inclined
towards him, you might have let him find it out in
some way of true loving-kindness, and not by sending
him a valentine's letter.'
Bathsheba laid down the shears.
 "I cannot allow any man to -- to criticise my private
Conduct!' she exclaimed. "Nor will I for a minute.
So you'll please leave the farm at the end of the week!'
It may have been a peculiarity -- at any rate it was
a fact -- that when Bathsheba was swayed by an emotion
of an earthly sort her lower lip trembled: when by a
refined emotion, her upper or heavenward one. Her
nether lip quivered now.
"Very well, so I will,' said Gabriel calmly. He had
been held to her by a beautiful thread which it pained
him to spoil by breaking, rather than by a chain he
could not break. "I should be even better pleased to
go at once,' he added.
"Go at once then, in Heaven's name!' said she,her
eyes flashing at his, though never meeting them.
"Don't let me see your face any more.'
"Very well, Miss Everdene -- so it shall be.'
And he took his shears and went away from her in
placid dignity, as Moses left the presence of Pharaoh.
<C xxi>
<P 187>
TROUBLES IN THE FOLD -- A MESSAGE
GABRIEL OAK had ceased to feed the Weatherbury
flock for about four-and-twenty hours, when on Sunday
afternoon the elderly gentlemen Joseph Poorgrass,
Matthew Moon, Fray, and half-a-dozen others, came
running up to the house of the mistress of the Upper
Farm.
 "Whatever is the matter, men?' she said, meeting
them at the door just as she was coming out on her
way to church, and ceasing in a moment from the close
compression of her two red lips, with which she had
accompanied the exertion of pelling on a tight glove.
"Sixty!' said Joseph Poorgrass.
"Seventy!' said Moon.
"Fifty-nine!' said Susan Tall's husband.
" -- Sheep have broke fence,' said Fray.
" -- And got into a field of young clover,' said Tall.
" -- Young clover!' said Moon.
" -- Clover!' said Joseph Poorgrass.
"And they be getting blasted,' said Henery Fray.
"That they be,' said Joseph.
"And will all die as dead as nits, if they bain't got
out and cured!'said Tall.
Joseph's countenance was drawn into lines and
puckers by his concern. Fray's forehead was wrinkled
both perpendicularly and crosswise, after the pattern of
a portcullis, expressive of a double despair. Laban
Tall's lips were thin, and his face were rigid. Matthew's
jaws sank, and his eyes turned whichever way the
strongest muscle happened to pull them.
  "Yes,' said Joseph, "and I was sitting at home,
looking for Ephesians, and says I to myself, "'Tis
nothing but Corinthians and Thessalonians in this
danged Testament,'' when
<P 188>
who should come in but
Henery there: ""Joseph,'' he said, ""the sheep have
With Bathsheba it was a moment when thought was
blasted theirselves -- -'''
  With Bathsheba it was a moment when thought was
speech and speech exclamation. Moreover, she had
hardly recovered her equanimity since the disturbance
which she had suffered from Oak's remarks.
'Thats enought -- that's enough! -- oh, you fools!'
she cried, throwing the parasol and Prayer-book into
the passage, and running out of doors in the direction
signified. "To come to me, and not go and get them
out directly! Oh, the stupid numskulls!'
Her eyes were at their darkest and brightest now.
Bathsheba's beauty belonged rather to the demonian
than to the angelic school, she never looked so well as
when she was angry -- and particularly when the effect
was heightened by a rather dashing velvet dress, care+
fully put on before a glass.
All the ancient men ran in a jumbled throng after
her to the clover-field, Joseph sinking down in the
midst when about half-way, like an individual withering
in a world which was more and more insupportable.
Having once received the stimulus that her presence
always gave them they went round among the sheep
with a will. The majority of the afflicted animals were
lying down, and could not be stirred. These were
bodily lifted out, and the others driven into the adjoining
field. Here, after the lapse of a few minutes, several
more fell down, and lay helpless and livid as the rest.
Bathsheba, with a sad, bursting heart, looked at these
primest specimens of her prime flock as they rolled
there --
Swoln with wind and the rank mist they drew.
Many of them foamed at the mouth, their breathing
being quick and short, whilst the bodies of all were
fearfully distended.
"O, what can I do, what can I do!' said Bathsheba,
helplessly. "Sheep are such unfortunate animals! --
there's always something happening to them! I never
knew a flock pass a year without getting into some scrape
or other.'
"There's only one way of saving them,' said Tall.
<P 189>
"What way? Tell me quick!'
"They must be pierced in the side with a thing made
on purpose.'
"Can you do it? Can I?'
"No, ma'am. We can't, nor you neither. It must
be done in a particular spot. If ye go to the right or
left but an inch you stab the ewe and kill her. Not
even a shepherd can do it, as a rule.'
"Then they must die,' she said, in a resigned tone.
"Only one man in the neighbourhood knows the way,'
said Joseph, now just come up. "He could cure 'em
all if he were here.'
"Who is he? Let's get him!'
"Shepherd Oak," said Matthew. "Ah, he's a clever
man in talents!'
"Ah, that he is so!' said Joseph Poorgrass.
"True -- he's the man,' said Laban Tall.
"How dare you name that man in my presence!' she
said excitedly. "I told you never to allude to him, nor
shall you if you stay with me. Ah!' she added, brighten+
ing, "Farmer Boldwood knows!'
  "0 no, ma'am' said Matthew. "Two of his store
ewes got into some vetches t'other day, and were just
like these. He sent a man on horseback here post-haste
for Gable, and Gable went and saved 'em, Farmer
Boldwood hev got the thing they do it with. 'Tis a
holler pipe, with a sharp pricker inside. Isn't it,
Joseph?'
  "Ay -- a holler pipe,' echoed Joseph. "That's what
'tis.'
"Ay, sure -- that's the machine,' chimed in Henery
Fray, reflectively, with an Oriental indifference to the
flight of time.
"Well," burst out Bathsheba, "don't stand there with
your ""ayes'' and your ""sures,'' talking at me! Get
somebody to cure the sheep instantly!'
  All then stalked or in eonsternation, to get some+
body as directed, without any idea of who it was to be.
In a minute they had vanished through the gate,.and
she stood alone with the dying flock.
"Never will I send for him never!' she said firmly.
<P 190>
One of the ewes here contracted its muscles horribly,
extended itself, and jumped high into the air. The
leap was an astonishing one. The ewe fell heavily, and
lay still.
Bathsheba went up to it. The sheep was dead.
"O, what shall I do -- what shall I do!' she again
exclaimed, wringing her hands. "I won't send for him.
No, I won't!'
The most vigorous expression of a resolution does
not always coinicide with the greatest vigour of the
resolution itself. It is often flung out as a sort of prop
to support a decaying conviction which, whilst strong,
required no enunciation to prove it so. The "No, I
won't' of Bathsheba meant virtually, "I think I must.'
She followed her assistants through the gate, and
lifted her hand to one of them. Laban answered to her
signal.
"Where is Oak staying?'
"Across the valley at Nest Cottage!'
"Jump on the bay mare, and ride across, and say he
must return instantly -- that I say so.'
Tall scrambled off to the field, and in two minutes
was on Poll, the bay, bare-backed, and with only a
halter by way of rein. He diminished down the
hill.
Bathsheba watched. So did all the rest. Tall
cantered along the bridle-path through Sixteen Acres,
Sheeplands, Middle Field The Flats, Cappel's Piece,
shrank almost to a point, crossed the bridge, and
ascended from the valley through Springmead and
Whitepits on the other side. The cottage to which
Gabriel had retired before taking his final departure
from the locality was visible as a white spot on the
opposite hill, backed by blue firs. Bathsheba walked
up and down. The men entered the field and
endeavoured to ease the anguish of the dumb creatures
by rubbing them. Nothing availed.
Bathsheba continued walking. The horse was seen
descending the hill, and the wearisome series had to be
repeated in reverse order: Whitepits, Springmead,
Cappel's Piece, The Flats, Middle Field, Sheeplands,
Sixteen Acres. She hoped Tall had had presence of
mind enough to give the mare up to Gabriel, and return
himself on foot. The rider neared them. It was Tall.
<P 191>
"O, what folly!' said Bathsheba.
Gabriel was not visible anywhere.
"Perhaps he is already gone!' she said.
Tall came into the inclosure, and leapt off, his face
tragic as Morton's after the battle of Shrewsbury.
"Well?' said Bathsheba, unwilling to believe that
her verbal lettre-de-cachet could possibly have miscarried.
"He says beggars mustn't be choosers,' replied Laban.
"What!' said the young farmer, opening her eyes
and drawing in her breath for an outburst. Joseph
Poorgrass retired a few steps behind a hurdle.
"He says he shall not come onless you request en
to come civilly and in a proper manner, as becomes any
'ooman begging a favour.'
"Oh, oh, that's his answer! Where does he get his
airs? Who am I, then, to be treated like that? Shall
I beg to a man who has begged to me?'
Another of the flock sprang into the air, and fell
dead.
The men looked grave, as if they suppressed opinion.
Bathsheba turned aside, her eyes full of tears. The
strait she was in through pride and shrewishness could
not be disguised longer: she burst out crying bitterly;
they all saw it; and she attempted no further concealment.
"I wouldn't cry about it, miss,' said William Small+
bury, compassionately. "Why not ask him softer like?
I'm sure he'd come then. Gable is a true man in that
way.'
Bathsheba checked her grief and wiped her eyes.
"O, it is a wicked cruelty to me -- it is -- it is!' she
murmured. "And he drives me to do what I wouldn't;
yes, he does ! -- Tall, come indoors.'
After this collapse, not very dignified for the head
of an establishment, she went into the house, Tall at
her heels. Here she sat down and hastily scribbled a
note between the small convulsive sobs of convalescence
which follow a fit of crying as a ground-swell follows a
storm. The note was none the less polite for being
written in a hurry. She held it at a distance, was
about to fold it, then added these words at the
bottom: --
"Do not desert me, Gabriel!'
<P 193>
She looked a little redder in refolding it, and closed
her lips, as if thereby to suspend till too late the action
of conscience in examining whether such strategy were
justifiable. The note was despatched as the message
had been, and Bathsheba waited indoors for the result.
It was an anxious quarter of an hour that intervened
between the messenger's departure and the sound of the
horse's tramp again outside. She- could not watch this
time, but, leaning over the old bureau at which she had
written the letter, closed her eyes, as if to keep out both
hope and fear.
  The case, however, was a promising one. Gabriel
was not angry: he was simply neutral, although her first
command had been so haughty. Such imperiousness
would have damned a little less beauty; and on the
other hand, such beauty would have redeemed a little
less imperiousness.
She went out when the horse was heard, and looked
up. A mounted figure passed between her and the
sky, and drew on towards the fleld of sheep, the rider
turning his face in receding. Gabriel looked at her.
It was a moment when a woman's eyes and tongue tell
distinctly opposite tales. Bathsheba looked full of
gratitude, and she said: --
  "O, Gabriel, how could you serve me so unkindly!'
Such a tenderly-shaped reproach for his previous
delay was the one speech in the language that he could
pardon for not being commendation of his readiness
now.
Gabriel murmured a confused reply, and hastened
on. She knew from the look which sentence in her
note had brought him. Bathsheba followed to the
field.
Gabriel was already among the turgid, prostrate forms.
He had flung off his coat, rolled up his shirt-sleeves,
and taken from his pocket the instrument of salvation.
It was a small tube or trochar, with a lance passing
down the inside; and Gabriel began to use it with a
dexterity that would have graced a hospital surgeon.
Passing his hand over the sheep's left flank, and
selecting the proper point, he punctured the skin and
rumen with the lance as it stood in the tube; then he
suddenly withdrew the lance, retaining the tube in its
place. A current of air rushed up the tube, forcible
enough to have extinguished a candle held at the
orifice.
It has been said that mere ease after torment is de+
light for a time; and the countenances of these poor
creatures expressed it now. Forty-nine operations were
successfully performed. Owing to the great hurry
necessitated by the far-gone state of some of the flock,
Gabriel missed his aim in one case, and in one only --
striking wide of the mark, and inflicting a mortal blow
at once upon the suffering ewe. Four had died; three
recovered without an operation. The total number of
sheep which had thus strayed and injured themselves
so dangerously was fifty-seven.
When the love-led man had ceased from his labours,
Bathsheba came and looked him in the face.
"Gabriel, will you stay on with me?' she, said,
smiling winningly, and not troubling to bring her lips
quite together again at the end, because there was going
to be another smile soon.
"I will,' said Gabriel.
And she smiled on him again.
<C xxii>
<P 194>
THE GREAT BARN AnD THE SHEEP-SHEARERS
MEN thin away to insignificance and oblivion quite as
often by not making the most of good spirits when they
have them as by lacking good spirits when they are
indispensable. Gabriel lately, for the first time since
his prostration by misfortune, had been independent in
thought and vigorous in action to a marked extent --
conditions which, powerless without an opportunity as
an opportunity without them is barren, would have
given him a sure lift upwards when the favourable-con+
junction should have occurred. But this incurable
loitering beside Bathsheba Everdene stole his time
ruinously. The spring tides were going by without
floating him off, and the neap might soon come which
could not.
It was the first day of June, and the sheep-shearing
season culminated, the landscape, even to the leanest
pasture, being all health and colour. Every green was
young, every pore was open, and every stalk was swollen
with racing currents of juice. God was palpably present
in the country, and the devil had gone with the world
to town. Flossy catkins of the later kinds, fern-sprouts
like bishops' croziers, the square-headed moschatel, the
odd cuckoo-pint, -- like an apoplectic saint in a niche
of malachite, -- snow-white ladies'-smocks, the toothwort,
approximating to human flesh, the enchanter's night+
shade, and the black-petaled doleful-bells, were among
the quainter objects of the vegetable world in and about
Weatherbury at this teeming time; and of the animal,
the metamorphosed figures of Mr. Jan Coggan, the
master-shearer; the second and third shearers, who
travelled in the exercise of their calling, and do not re+
quire definition by name; Henery Fray the fourth
shearer, Susan Tall's husband the fifth, Joseph Poorgrass
the sixth, young Cain Ball as assistant-shearer, and
Gabriel Oak as general supervisor. None of these were
clothed
<P 195>
to any extent worth mentioning, each appearing
to have hit in the matter of raiment the decent mean
between a high and low caste Hindoo. An angularity
of lineament, and a fixity of facial machinery in general,
proclaimed that serious work was the order of the day.
They sheared in the great barn, called for the nonce
the Shearing-barn, which on ground-plan resembled a
church with transepts. It not only emulated the form
of the neighbouring church of the parish, but vied with
it in antiquity. Whether the barn had ever formed one
of a group of conventual buildings nobody seemed to be
aware; no trace of such surroundings remained. The
vast porches at the sides, lofty enough to admit a waggon
laden to its highest with corn in the sheaf, were spanned
by heavy-pointed arches of stone, broadly and boldly cut,
whose very simplicity was the origin of a grandeur not
apparent in erections where more ornament has been
attempted. The dusky, filmed, chestnut roof, braced
and tied in by huge collars, curves, and diagonals, was
far nobler in design, because more wealthy in material,
than nine-tenths of those in our modern churches.
Along each side wall was a range of striding buttresses,
throwing deep shadows on the spaces between them,
which were perforated by lancet openings, combining
in their proportions the precise requirements both of
beauty and ventilation.
One could say about this barn, what could hardly
be said of either the church or the castle, akin to it in
age and style, that the purpose which had dictated its
original erection was the same with that to which it
was still applied. Unlike and superior to either of
those two typical remnants of mediaevalism, the old
barn embodied practices which had suffered no mutila+
tion at the hands of time. Here at least the spirit of
the ancient builders was at one with the spirit of the
modern beholder. Standing before this abraded pile,
the eye regarded its present usage, the mind-dwelt upon
its past history, with a satisfied sense of functional
continuity throughout -- a feeling almost of gratitude,
and quite of pride, at the permanence of the idea
which had heaped it up. The fact that four centuries
had neither proved it to be founded on a mistake,
<P 196>
inspired any hatred of its purpose, nor given rise to
any reaction that had battered it down, invested this
simple grey effort of old minds with a repose, if not a
grandeur, which a too curious reflection was apt to
disturb in its ecclesiastical and military compeers. For
once medievalism and modernism had a common stand+
point. The lanccolate windows, the time-eaten arch+
stones and chamfers, the orientation of the axis, the
misty chestnut work of the rafters, referred to no exploded
fortifying art or worn-out religious creed. The defence
and salvation of the body by daily bread is still a study,
a religion, and a desire.
To-day the large side doors were thrown open
towards the sun to admit a bountiful light to the
immediate spot of the shearers' operations, which was
the wood threshing-floor in the centre, formed of thick
oak, black with age and polished by the beating of flails
for many generations, till it had grown as slippery and
as rich in hue as the state-room floors of an Elizabethan
mansion. Here the shearers knelt, the sun slanting in
upon their bleached shirts, tanned arms, and the polished
shears they flourished, causing these to bristle with a
thousand rays strong enough to blind a weak-eyed man.
Beneath them a captive sheep lay panting, quickening
its pants as misgiving merged in terror, till it quivered
like the hot landscape outside.
This picture of to-day in its frame of four hundred
years ago did not produce that marked contrast between
ancient and modern which is implied by the contrast
of date. In comparison with cities, Weatherbury was
immutable. The citizen's Then is the rustic's Now.
In London, twenty or thirty-years ago are old times;
in Paris ten years, or five; in Weatherbury three or
four score years were included in the mere present,
and nothing less than a century set a mark on its
face or tone. Five decades hardly modified the cut of
a gaiter, the embroidery of a smock-frock, by the breadth
of a hair. Ten generations failed to alter the turn of
a single phrase. In these Wessex nooks the busy out+
sider's ancient times are only old; his old times are still
new; his present is futurity.
So the barn was natural to the shearers, and the
shearers were in harmony with the barn.
The spacious ends of the building, answering ecclesi+
astically
<P 197>
to nave and chancel extremities, were fenced
off with hurdles, the sheep being all collected in a crowd
within these two enclosures; and in one angle a catching+
pen was formed, in which three or four sheep were
continuously kept ready for the shearers to seize without
loss of time. In the background, mellowed by tawny
shade, were the three women, Maryann Money, and
Temperance and Soberness Miller, gathering up the
fleeces and twisting ropes of wool with a wimble for
tying them round. They were indifferently well assisted
by the old maltster, who, when the malting season from
October to April had passed, made himself useful upon
any of the bordering farmsteads.
"Behind all was Bathsheba, carefully watching the
men to see that there was no cutting or wounding
through carelessness, and that the animals were shorn
close. Gabriel, who flitted and hovered under her
bright eyes like a moth, did not shear continuously,
half his time being spent in attending to the others
and selecting the sheep for them. At the present
moment he was engaged in handing round a mug of
mild liquor, supplied from a barrel in the corner,
and cut pieces of bread and cheese.
Bathsheba, after throwing a glance here, a caution
there, and lecturing one of the younger operators who
had allowed his last finished sheep to go off among
the flock without re-stamping it with her initials, came
again to Gabriel, as he put down the luncheon to drag
a frightened ewe to his shear-station, flinging it over
upon its back with a dexterous twist of the arm
He lopped off the tresses about its head, and opened
up the neck and collar, his mistress quietly looking
on:
"She blushes at the insult,' murmured Bathsheba,
watching the pink flush which arose and overspread
the neck and shoulders of the ewe where they were
left bare by the clicking shears -- a flush which was
enviable, for its delicacy, by many queens of coteries,
and would have been creditable, for its promptness, to
any woman in the world.
Poor Gabriel's soul was fed with a luxury of content
by having her over him, her eyes critically regarding
his skilful shears, which apparently were going to gather
up a piece of the flesh at every close, and yet never did
so. Like Guildenstern,
<P 198>
Oak was happy in that he was
not over happy. He had no wish to converse with her:
that his bright lady and himself formed one group,
exclusively their own, and containing no others in the
world, was enough.
So the chatter was all on her side. There is a
loquacity that tells nothing, which was Bathsheba's;
and there is a silence which says much: that was
Gabriel's. Full of this dim and temperate bliss, he
went on to fling the ewe over upon her other side,
covering her head with his knee, gradually running
the shears line after line round her dewlap; thence
about her flank and back, and finishing over the tail.
"Well done, and done quickly!' said Bathsheba,
looking at her watch as the last snip resounded.
"How long, miss?' said Gabriel, wiping his brow.
"Three-and-twenty minutes and a half since you took
the first lock from its forehead. It is the first time that
I have ever seen one done in less than half an hour.'
The clean, sleek creature arose from its fleece -- how
perfectly like Aphrodite rising from the foam should
have been seen to be realized -- looking startled and
shy at the loss of its garment, which lay on the floor
in one soft cloud, united throughout, the portion visible
being the inner surface only, which, never before exposed,
was white as snow, and without flaw or blemish of the
minutest kind.
"Cain Ball!'
"Yes, Mister Oak; here I be!'
Cainy now runs forward with the tar-pot. "B. E.' is
newly stamped upon the shorn skin, and away the simplc
dam lcaps, panting, over the board into the shirtless
flock outside. Then up comes Maryann; throws the
loose locks into the middle of the fleece, rolls it up,
and carries it into the background as three-and-a-half
pounds of unadulterated warmth for the winter enjoy+
ment of persons unknown and far away, who will,
however, never experience the superlative comfort
derivable from the wool as it here exists, new and pure
 -- before the unctuousness of its nature whilst in a
living state has dried, stiffened, and been washed out
 -- rendering it just now as superior to anything woollen
as cream is superior to milk-and-water.
<P 199>
But heartless circumstance could not leave entire
Gabriel's happiness of this morning. The rams, old
ewes, and two-shear ewes had duly undergone their
stripping, and the men were proceeding with the shear+
lings and hogs, when Oak's belief that she was going to
stand pleasantly by and time him through another
performance was painfully interrupted by Farmer Bold+
wood's appearance in the extremest corner of the barn.
Nobody seemed to have perceived his entry, but there
he certainly was. Boldwood always carried with him a
social atmosphere of his own, which everybody felt who
came near him; and the talk, which Bathsheba's
presence had somewhat suppressed, was now totally
suspended.
  He crossed over rowards Bathsheba, who turned to
greet him with a carriage of perfect ease. He spoke to
her in low tones, and she instinctively modulated her
own to the same pitch, and her voice ultimately even
caught the inflection of his. She was far from having
a wish to appear mysteriously connected with him; but
woman at the impressionable age gravitates to the larger
body not only in her choice of words, which is apparent
every day, but even in her shades of tone and humour,
when the influence is great.
  What they conversed about was not audible to
Gabriel, who was too independent to get near, though
too concerned to disregard. The issue of their dialogue
was the taking of her hand by the courteous farmer to
help her over the spreading-board into the bright June
sunlight outside. Standing beside the sheep already
shorn, they went on talking again. Concerning the
flock? Apparently not. Gabriel theorized, not without
truth, that in quiet discussion of any matter within reach
of the speakers' eyes, these are usually fixed upon it.
Bathsheba demurely regarded a contemptible straw lying
upon the ground, in a way which suggested less ovine
criticism than womanly embarrassment. She became
more or less red in the cheek, the blood wavering in
uncertain flux and reflux over the sensitive space between
ebb and flood. Gabriel sheared on, constrained and
sad.
She left Boldwood's side, and he walked up and
down alone for nearly a quarter of an hour. Then she
reappeared in her
<P 200>
new riding-habit of myrtle-green, which
fitted her to the waist as a rind fits its fruit; and young
Bob Coggan led -on -her mare, Boldwood fetching his
own horse from the tree under which it had been tied.
  Oak's eyes could not forsake them; and in en+
deavouring to continue his shearing at the same time
that he watched Boldwood's manner, he snipped the
sheep in the groin. The animal plunged; Bathsheba
instantly gazed towards it, and saw the blood.
"O, Gabriel!' she exclaimed, with severe remon+
strance you who are so strict with the other men -- see
what you are doing yourself!'
To an outsider there was not much to complain of
in this remark ; but to Oak, who "knew Bathsheba to be
well aware that she herself was the cause of the poor
ewe's wound, because she had wounded the ewe's shearer
in a -- still more vital part, it had a sting which the abiding
sense of his inferiority to both herself and Boldwood was
not calculated to heal. But a manly resolve to recognize
boldly that he had no longer a lover's interest in her,
helped him oceasionally to conceal a feeling.
" Bottle .! ' he shouted, in an unmoved voice of routine.
Cainy Ball ran up, the wound was anointed, and the
shearing continued.
Boldwood gently tossed Bathsheba into the saddle,
and before they turned away she again spoke out to Oak
with the same dominative and tantalizing graciousness.
"I am going now to see Mr. Boldwood's Leicesters.
Take my place in the barn, Gabriel, and keep the men
carefully to their work.'
The horses' heads were put about, and they trotted
away.
Boldwood's deep attachment was a matter of great
interest among all around him ; but, after having been
pointed out for so many years as the perfect exemplar
of thriving bachelorship, his lapse was an anticlimax
somewhat resembling that of St. John Long's death by
consumption in the midst of his proofs that it was not
a fatal disease.
<P 201>
" That means matrimony,' said Temperance Miller,
following them out of sight with her eyes.
"I reckon that's the size o't,' said Coggan, working
along without looking up.
" Well, better wed over the mixen than over the moor,'
said Laban Tall, turning his sheep.
Henery Fray spoke, exhibiting miserable eyes at the
same time: "I don't see why a maid should take a
husband when she's bold enough to fight her own
battles, and don't want a home ; for 'tis keeping another
woman out. But let it be, for 'tis a pity he and she
should trouble two houses.'
As usual with decided characters, Bathsheba invari+
ably provoked the criticism of individuals like Henery
Fray. Her emblazoned fault was to be too pronounced
in her objections, and not sufficiently overt in her
likings. We learn that it is not the rays which bodies
absorb, but those which they reject, that give them the
colours they are known by ; and win the same way people
are specialized by their dislikes and antagonisms, whilst
their goodwill is looked upon as no attribute at all.
Henery continued in a more complaisant mood : "I
once hinted my mind to her on a few things, as nearly
as a battered frame dared to do 'so to such a froward
piece. You all know, neighbours, what a man I be,
and how I come down with my powerful words when
my pride is boiling wi' scarn ?'
" We do, we do, Henery.'
" So I said, "" Mistress Everdene, there's places empty,
and there's gifted men willing ; but the spite '' -- no. not
the spite -- I didn't say spite -- ""but the villainy of the
contrarikind,'' I said (meaning womankind), "" keeps 'em
out.'' That wasn't too strong for her, say ? '
" Passably well put.'
"Yes; and I would have said it, had death and
salvation overtook me for it. Such is my spirit when I
have a mind.'
"A true man, and proud as a lucifer.'
"You see the artfulness ? Why, 'twas about being
baily really; but I didn't put it so plain that she could
understand my meaning, so I could lay it on all the
<P 202>
stronger. That was my depth .! ... However, let her
marry an she will. Perhaps 'tis high time. I believe
Farmer Boldwood kissed her behind the spear-bed at the
sheep-washing t'other day -- that I do.'
" What a lie !.' said Gabriel.
" Ah, neighbour Oak -- how'st know ? ' said, Henery,
mildly.
" Because she told me all that passed,' said Oak, with
a pharisaical sense that he was not as other shearers in
this matter.
"Ye have a right to believe it,' said Henery, with
dudgeon; "a very true right. But I mid see a little
distance into things !. To be long-headed enough for a
baily's place is a poor mere trifle -- yet a trifle more than
nothing. However, I look round upon life quite cool.
Do you heed me, neighbours ? My words, though made
as simple as I can, mid be rather deep for some heads.'
" O yes, Henery, we quite heed ye.'
" A strange old piece, goodmen -- whirled about from
here to yonder, as if I were nothing ! A little warped,
too. But I have my depths; ha, and even my great
depths ! I might gird at a certain shepherd, brain to
brain. But no -- O no !.'
" A strange old piece, ye say .! ' interposed the maltster,
in a querulous voice. "At the same time ye be no old
man worth naming -- no old man at all. Yer teeth
bain't  half  gone  yet ; and what's a old  man's standing
if se be his teeth bain't gone? Weren't I stale in
wedlock afore ye were out  of arms ? 'Tis a poor thing
to be sixty, when there's people far past four-score -- a
boast'weak as water.'
It was the unvaying custom in Weatherbury to
sink minor differences when the maltster had to be
pacified.
" Weak as-water .! yes,' said Jan Coggan.- "Malter,
we feel ye to be a wonderful veteran man, and nobody
can gainsay it.'
" Nobody,' said Joseph Poorgrass. "Ye be a very
rare old  spectacle, malter, and we all admire ye for that
gift. '
"Ay, and as a young man, when my senses were in
prosperity, I was likewise liked by a good-few who
knowed me,' said the maltster.
" 'Ithout doubt you was -- 'ithout doubt.'
The bent and hoary 'man was satisfied, and so
apparently was Henery Frag. That matters should
continue pleasant Maryann
<P 203>
spoke, who, what with her
brown complexion, and the working wrapper of rusty
linsey, had at present the mellow hue of an old sketch
in oils -- notably some of Nicholas Poussin's: --
" Do anybody know of a crooked man, or a lame, or
any second-hand fellow at all that would do for poor
me ?' said Maryann. "A perfect one I don't expect to
 at my time of life. If I could hear of such a thing
twould do me more good thantoast and ale.'
 Coggan furnished a suitable reply. Oak went on
with his shearing, and said not another word. Pestilent
moods had come, and teased away his quiet. Bathsheba
had shown indications of anointing him above his
fellows by installing him as the bailiff that the farm
imperatively required. He did not covet the post
relatively to the farm : in relation to herself, as beloved
by him and unmarried to another, he had coveted it.
His readings of her seemed now to be vapoury and
indistinct. His lecture to her was, he thought, one of
the absurdest mistakes. Far from coquetting with
Boldwood, she had trifled with himself in thus feigning
that she had trifled with another. He was inwardly
convinced that, in accordance with the anticipations of
his easy-going and worse-educated comrades, that day
would see Boldwood the accepted husband of Miss
Everdene. Gabriel at this time of his life had out+
grown the instinctive dislike which every Christian
boy has for reading the Bible, perusing it now quite
frequently, and he inwardly said, " ''I find more bitter
than death the woman whose heart is snares and
nets .! '' ' This was mere exclamation -- the froth of the
storm. He adored Bathsheba just the same.
" We workfolk shall have some lordly- junketing
to-night,' said Cainy Ball, casting forth his thoughts in
a new direction. "This morning I see'em making the
great puddens in the milking-pails -- lumps of fat as big
as yer thumb, Mister Oak ! I've never seed such
splendid large knobs of fat before in the days of my
life -- they never used to be bigger then a horse-bean.
And there was a great black crock upon the brandise
with his legs a-sticking out, but I dont know what was
in within."
'And there's two bushels of biffins for apple-pies,'
said Maryann.
<P 204>
"Well, I hope to do my duty by it all,' said Joseph
Poorgrass, in a pleasant, masticating manner of anticipa+
tion. " Yes ; victuals and drink is a cheerful thing,
and gives nerves to the nerveless, if the form of words
may be used. 'Tis the gospel of the body, without
which we perish, so to speak it.'
<C xxiii>
<P 205>
EVENTIDE -- A SECOND DECLARATION
FOR the shearing-supper a long table was placed on the
grass-plot beside the house, the end of the table being
thrust over the sill of the wide parlour window and a
foot or two into the room. Miss Everdene sat inside
the window, facing down the table. She was thus at
the head without mingling with the men.
This evening Bathsheba was unusually excited, her
red cheeks and lips contrasting lustrously with the mazy
skeins of her shadowy hair. She seemed to expect
assistance, and the seat at the bottom of the table was
at her request left vacant until after they had begun
and the duties appertaining to that end, which he did
with great readiness.
At this moment Mr. Boldwood came in at the gate,
and crossed the green to Bathsheba at the window.
He apologized for his lateness : his arrival was evidently
by arrangement.
" Gabriel,' said she, " will you move again, please,
and let Mr. Boldwood come there ?'
Oak moved in silence back to his original seat.
The gentleman-farmer was dressed in cheerful style,
in a new coat and white waistcoat, quite contrasting
with his usual sober suits of grey. Inwardy, too, he
was blithe, and consequently chatty to an exceptional
degree. So also was Bathsheba now that he had come,
though the uninvited presence of Pennyways, the bailiff
who had been dismissed for theft, disturbed her equan+
imity for a while.
Supper being ended, Coggan began on his own
private account, without reference to listeners : --
l've lost my love and l care not,
I've lost my love, and l care not;
I shall soon have another
<P 206>
That's better than t'other!
I've lost my love, and I care not.
This lyric, when concluded, was received with a
silently appreciative gaze at the table, implying that the
performance, like a work by those established authors
who are independent of notices in the papers, was a
well-known delight which required no applause.
"Now, Master Poorgass, your song!' said Coggan.
"I be all but in liquor, and the gift is wanting in
me,' said Joseph, diminishing himself.
"Nonsense; wou'st never be so ungrateful, Joseph --
never!' said Coggan, expressing hurt feelings by an
inflection of voice. "And mistress is looking hard at
ye, as much as to say, ""Sing at once, Joseph Poor+
grass.'' '
"Faith, so she is; well, I must suffer it! ... Just
eye my features, and see if the tell-tale blood overheats
me much, neighbours?'
"No, yer blushes be quite reasonable,' said Coggan.
"I always tries to keep my colours from rising when
a beauty's eyes get fixed on me,' said Joseph, differently;
"but if so be 'tis willed they do, they must.'
"Now, Joseph, your song, please,' said Bathsheba,
from the window.
"Well, really, ma'am,' he replied, in a yielding tone,
"I don't know what to say. It would be a poor plain
ballet of my own composure.'
'Hear, hear! ' said the supper-party.
Poorgrass, thus assured, trilled forth a flickering yet
commendable piece of sentiment, the tune of which
consisted of the key-note and another, the latter being
the sound chiefly dwelt upon. This was so successful
that he rashly plunged into a second in the same
breath, after a few false starts : --
I sow'-ed th'-e
I sow'-ed
I sow'-ed the'-e seeds' of love',
I-it was' all' i'-in the'-e spring',
I-in A'-pril', Ma'-ay, a'-nd sun'-ny' June',
When sma'-all bi'-irds they' do' sing.
<P 207>
" Well put out of hand,' said Coggan, at the end of the
verse. ' "" They do sing '' was a very taking paragraph.'
"Ay; and there was a pretty place at "seeds of
love,'' and 'twas well heaved out. Though "love '' is
a nasty high corner when a man's voice is getting
crazed. Next verse, Master Poorgrass.'
But during this rendering young Bob Coggan ex+
hibited one of those anomalies which will afflict little
people when other persons are particularly serious : in
trying to check his laughter, he pushed down his throat
as much of the tablecloth as he could get hold of, when,
after continuing hermetically sealed for a short time, his
mirth burst out through his nose. Joseph perceived it,
and with hectic cheeks of indignation instantly ceased
singing. Coggan boxed Bob's ears immediately.
"Go on, Joseph -- go on, and never mind the young
scamp,' said Coggan. "'Tis a very catching ballet.
Now then again -- the next bar; I'll help ye to flourish
up the shrill notes where yer wind is rather wheezy : --
O the wi'-il-lo'-ow tree' will' twist',
And the wil'-low' tre'-ee wi'ill twine'.
But the singer could not be set going again. Bob
Coggan was sent home for his ill manners, and tran+
quility was restored by Jacob Smallbury, who volunteered
a ballad as inclusive and interminable as that with which
the worthy toper old Silenus amused on a similar occasion
the swains Chromis and Mnasylus, and other jolly dogs
of his day.
It' was still the beaming time .of evening, though
night was stealthily making itself visible low down upon
the ground, the western lines of light taking the earth
without alighting upon it to any extent, or illuminating
the dead levels at all. The sun had crept round the
tree as a last effort before death, and then began to
sink, the shearers' lower parts becoming steeped in
embrowning twilight, whilst their heads and shoulders
were still enjoying day, touched with a yellow of self+
sustained brilliancy that seemed inherent rather than
acquired.
The sun went down in an ochreous mist; but they
sat, and
<P 208>
talked on, and grew as merry as the gods in
Homer's heaven. Bathsheba still remained enthroned
inside the window, and occupied herself in knitting,
from which she sometimes looked up to view the fading
scene outside. The slow twilight expanded and enveloped
them completely before the signs of moving were shown.
Gabriel suddenly missed Farmer Boldwood from his
place at the bottom of the table. How long he had
been gone Oak did not know; but he had apparently
withdrawn into the eneircling dusk. Whilst he was
thinking of this, Liddy brought candles into the back
part of the room overlooking the shearers, and their
lively new flames shone down the table and over the
men, and dispersed among the green shadows behind.
Bathsheba's form, still in its original position, was now
again distinct between their eyes and the light, which
revealed that Boldwood had gone inside the room, and
was sitting near her.
Next came the question of the evening. Would Miss
Everdene sing to them the song she always sang so
charmingly -- " The Banks of Allan Water ' -- before they
went home ?
After a moment's consideration Bathsheba assented,
beckoning to Gabriel, who hastened up into the coveted
atmosphere.
" Have you brought your flute ? " she whispered.
" Yes, miss.'
" Play to my singing, then.'
She stood up in the window-opening, facing the
men, the candles behind her, Gabriel on her right hand,
immediately outside the sash-frame. Boldwood had
drawn up on her left, within the room. Her singing
was soft and rather tremulous at first, but it soon swelled
to a steady clearness. Subsequent events caused one
of the verses to be remembered for many months, and
even years, by more than one of those who were gathered
there : --
For his bride a soldier sought her,
And a winning tongue had he :
On the banks of Allan Water
None was gay as she !.
<P 209>
In addition to the dulcet piping of Gabriel's flute,
Boldwood supplied a bass in his customary profound
voice, uttering his notes so softly, however, as to abstain
entirely from making anything like an ordinary duet of
the song ; they rather formed a rich unexplored shadow,
which threw her tones into relief. The shearers reclined
against each other as at suppers in the early ages of the
world, and so silent and absorbed were they that her
breathing could almost be heard between the bars ; and
at the end of the ballad, when the last tone loitered on
to an inexpressible close, there arose that buzz of
pleasure which is the attar of applause.
It is scarcely necessary to state that Gabriel could
not avoid noting the farmer's bearing to-night towards
their entertainer. Yet there was nothing exceptional in
his actions beyond what appertained to his time of
performing them. It was when the rest were all looking
away that Boldwood observed her ; when they regarded
her he turned aside; when they thanked or praised he
was silent; when they were inattentive he murmured
his thanks. The meaning lay in the difference between
actions, none of which had any meaning of itself;
and the necessity of being jealous, which lovers are
troubled with, did not lead Oak to underestimate these
signs.
Bathsheba then wished them good-night, withdrew
from the window, and retired to the back part of the
room, Boldwood thereupon closing the sash and the
shutters, and remaining inside with her. Oak wandered
away under the quiet and scented trees. Recovering
from the softer impressions produced by Bathsheba's
voice, the shearers rose to leave, Coggan turning to
Pennyways as he pushed back the bench to pass out : --
"I like to give praise where praise is due, and the
man deserves it -- that 'a do so,' he remarked, looking at
the worthy thief, as if he were the masterpiece of some
world-renowned artist.
<P 210>
"I'm sure I should never have believed it if we hadn t
proved it, so to allude,' hiccupped Joseph Poorgrass, " that
every cup, every one of the best knives and forks, and
every empty bottle be in their place as perfect now as
at the beginning, and not one stole at all.
"I'm sure I don't deserve half the praise you give
me,' said the virtuous thief, grimly.
" Well, I'll say this for Pennyways,' added Coggan,
"that whenever he do really make up his mind to do a
noble thing in the shape of a good action, as I could
see by his face he. did to-night afore sitting down, he's
generally able to carry it out. Yes, I'm proud to say.
neighbours, that he's stole nothing at all.
"Well,' -- 'tis an honest deed, and we thank ye for it,
Pennyways,' said Joseph; to which opinion the remainder
of the company subscribed unanimously.
  At this time of departure, when nothing more was
visible of the inside of the parlour than a thin and still
chink of light between the shutters, a passionate scene
was in eourse of enactment there.'
Miss Everdene and Boldwood were alone. Her
cheeks had lost a great deal of their healthful fire from
the very seriousness of her position ; but her eye was
bright with the excitement of a triumph -- though it was
a triumph which had rather been contemplated than
desired.
She was standing behind a low arm-chair, from which
she had just risen, and he was kneeling in it -- inclining
himself over its back towards her, and holding her hand
in both his own. His body moved restlessly, and it was
with what Keats daintily calls a too happy happiness.
This unwonted abstraction by love of all dignity from
a man of whom it had ever seemed the chief component,
was, in its distressing incongruity, a pain to her which
quenched much of the pleasure she derived from the
proof that she was idolized.
" I will try to love you,' she was saying, in a trembling
voice quite unlike her usual self-confidence. " And if I
can believe in any way that I shall make you a good
wife I shall indeed be willing to marry you. But, Mr.
Boldwood, hesitation on so high a matter is honourable
in any woman, and I don't want to give a solemn
promise to-night. I would rather ask you to wait a few
weeks till I can see my situation better.'
"But you have every reason to believe that then --  -- '
'I have every reason to hope that at the end of the
five or
<P 211>
six weeks, between this time and harvest, that
you say you are going to be away from home, I shall be
able to promise to be your wife,' she said, firmly. "But
remember this distinctly, I don't promise yet.'
"It is enough I don't ask more. I can wait on
those dear words. And now, Miss Everdene, good+
night!'
" Good-night,' she said, graciously -- almost tenderly;
and Boldwood withdrew with a serene smile.
Bathsheba knew more of him now ; he had entirely
bared his heart before her, even until he had almost
worn in her eyes the sorry look of a grand bird without
the feathers that make it grand. She had been awe+
struck at her past temerity, and was struggling to make
amends without thinking whether the sin quite deserved
the penalty she was schooling herself to pay. To have
brought all this about her ears was terrible; but after a
while the situation was not without a fearful joy. The
facility with which even the most timid woman some+
times acquire a relish for the dreadful when that is
amalgamated with a little triumph, is marvellous.
<C xxiv>
<P 212>
THE SAME NIGHT -- THE FIR PLANTATION
AMONG the multifarious duties which Bathsheba had
voluntarily imposed upon herself by dispensing with the
services of a bailiff, was the particular one of looking
round the homestead before going to bed, to see that
all was right and safe for the night. Gabriel had almost
constantly preceded her in this tour every evening,
watching her affairs as carefully as any specially appointed
officer of surveillance could have done; but this tender
devotion was to a great extent unknown to his mistress,
and as much as was known was somewhat thanklessly
received. Women are never tired of bewailing man's
fickleness in love, but they only seem to snub his con+
stancy.
As watching is best done invisibly, she usually carried
a dark lantern in her hand, and every now and then
turned on the light to examine nooks and corners with
the coolness of a metropolitan policeman. This cool+
ness may have owed its existence not so much to her
fearlessness of expected danger as to her freedom from
the suspicion of any; her worst anticipated discovery
being that a horse might not be well bedded, the fowls
not all in, or a door not closed.
This night the buildings were inspected as usual,
and she went round to the farm paddock. Here the
only sounds disturbing the stillness were steady munch+
ings of many mouths, and stentorian breathings from all
but invisible noses, ending in snores and puffs like the
blowing of bellows slowly. Then the munching would
recommence, when the lively imagination might assist
the eye to discern a group of pink-white nostrils, shaped
as caverns, and very clammy and humid on their sur+
faces, not exactly pleasant to the touch until one got
used to them; the mouths beneath having a great
partiality for closing upon any loose end of Bathsheba's
apparel which came within
<P 213>
reach of their tongues.
Above each of these a still keener vision suggested a
brown forehead and two staring though not unfriendly
eyes, and above all a pair of whitish crescent-shaped
horns like two particularly new moons, an occasional
stolid " moo!' proclaiming beyond the shade of a doubt
that these phenomena were the features and persons of
Daisy, Whitefoot, Bonny-lass, Jolly-O, Spot, Twinkle-eye,
etc., etc. -- the respectable dairy of Devon cows belonging
to Bathsheba aforesaid.
Her way back to the house was by a path through a
young plantation of tapering firs, which had been planted
some years earlier to shelter the premises from the north
wind. By reason of the density of the interwoven foliage
overhead, it was gloomy there at cloudless noontide,
twilight in the evening, dark as midnight at dusk, and
black as the ninth plague of Egypt at midnight. To
describe the spot is to call it a vast, low, naturally formed
hall, the plumy ceiling of which was supported by slender
pillars of living wood, the floor being covered with a soft
dun carpet of dead spikelets and mildewed cones, with
a tuft of grass-blades here and there.
This bit of the path was always the crux of the
night's ramble, though, before starting, her apprehen+
sions of danger were not vivid enough to lead her to
take a companion. Slipping along here covertly as
Time, Bathsheba fancied she could hear footsteps enter+
ing the track at the opposite end. It was certainly a
rustle of footsteps. Her own instantly fell as gently as
snowflakes. She reassured herself by a remembrance
that the path was public, and that the traveller was
probably some villager returning home ; regetting, at
the same time, that the meeting should be about to
occur in' the darkest point of her route, even though
only just outside her own door.
The noise approached, came close, and a figure was
apparently on the point of gliding past her when some+
thing tugged at her skirt and pinned it forcibly to the
ground. The instantaneous check nearly threw Bath+
sheba off her balance. In recovering she struck against
warm clothes and buttons.
'A rum start, upon my soul!' said a masculine voice,
a foot or so above her head. 'Have I hurt you, mate?'
"No,' said Bathsheba, attempting to shrink a way.
<P 214>
" We have got hitched together somehow, I think.'
" Yes.'
"Are you a woman ?'
'Yes.'
"A lady, I should have said.'
"It doesn't matter.'
"I am a man.'
"Oh!'
Bathsheba softly tugged again, but to no purpose.
"Is that a dark lantern you have ? I fancy so,' said
the man.
'Yes.'
"If you'll allow me I'll open it, and set you free.'
A hand seized the lantern, the door was opened, the
rays burst out from their prison, and Bathsheba beheld
her position with astonishment.
The man to whom she was hooked was brilliant in
brass and scarlet. He was a soldier. His sudden
appearance was to darkness what the sound of a trumpet
is to silense. Gloom, the genius loci at all times hitherto,
was now totally overthrown, less by the lantern-light
than by what the lantern lighted. The contrast of this
revelation with her anticipations of some sinister figure
in sombre garb was so great that it had upon her the
effect of a fairy transformation.
It was immediately apparent that the military man's
spur had become entangled in the gimp which decorated
the skirt of her dress. He caught a view of her face.
"I'll unfasten you in one moment, miss,' he said,
with new-born gallantry.
" O no -- I can do it, thank you,' she hastily replied,
and stooped for the performance.
The unfastening was not such a trifling affair. The
rowel of the spur had so wound itself among the gimp
cords in those few moments, that separation was likely
to be a matter of time.
He too stooped, and the lantern standing on the
ground betwixt them threw the gleam from its open side
among the fir-tree needles and the blades of long damp
grass with the effect of a large glowworm. It radiated
upwards into their
<P 215>
faces, and sent over half the planta+
tion gigantic shadows of both man and woman, each
dusky shape becoming distorted and mangled upon the
tree-trunks till it wasted to nothing.
He looked hard into her eyes when she raised them
for a moment; Bathsheba looked down again, for his
gaze was too strong to be received point-blank with her
own. But she had obliquely noticed that he was young
and slim, and that he wore three chevrons upon his
sleeve.
Bathsheba pulled again.
" You are a prisoner, miss; it is no use blinking the
matter,' said the soldier, drily. " I must cut your dress
if you are in such a hurry.'
" Yes -- please do!' she exclaimed, helplessly. '
"It wouldn't be necessary if you could wait a
moment;' and he unwound a cord from the little
wheel. She withdrew her own hand, but, whether by
accident or design, he touched it. Bathsheba was
vexed; she hardly knew why.
His unravelling went on, but it nevertheless seemed
coming to no end. She looked at him again.
'Thank you for the sight of such a beautiful face!'
said the young sergeant, without ceremony.
She coloured with embarrassment. "'Twas un+
willingly shown,' she replied, stiffly, and with as much
dignity -- which was very little -- as she could infuse into
a position of captivity
"I like you the better for that incivility, miss,' he
said.
" I should have liked -- I wish -- you had never shown
yourself to me by intruding here!' She pulled again,
and the gathers of her dress began to give way like
liliputian musketry.
" I deserve the chastisement your words give me.
But why should such a fair and dutiful girl have such
an aversion to her father's sex ? '
"Go on your way, please.'
' What, Beauty, and drag you after me ? Do but
look; I never saw such a tangle!'
'O, 'tis shameful of you ; you have been making
it worse on purpose to keep me here -- you have ! '
"Indeed, I don't think so,' said the sergeant, with a
merry twinkle.
<P 216>
"I tell you you have!' she exclaimed, in high
temper. I insist upon undoing it. Now, allow me!'
"Certainly, miss; I am not of steel.' He added a
sigh which had as much archness in it as a sigh could
possess without losing its nature altogether. 'I am
thankful for beauty, even when 'tis thrown to me like
a bone to a dog. These moments will be over too
soon!'
She closed her lips in a determined silence.
Bathsheba was revolving in her mind whether by a
bold and desperate rush she could free herself at the
risk of leaving her skirt bodily behind her. The
thought was too dreadful. The dress -- which she had
put on to appear stately at the supper -- was the head
and front of her wardrobe ; not another in her stock
became her so well. What woman in Bathsheba's
position, not naturally timid, and within call of her
retainers, would have bought escape from a dashing
soldier at so dear a price ?
"All in good time ; it will soon be done, I perceive,'
said her cool friend.
" This trifling provokes, and -- and --  -- '
" Not too cruel!'
" --  Insults me.!'
"It is done in order that I may have the pleasure
of apologizing to so charming a woman, which I
straightway do most humbly, madam,' he said, bowing
low.
Bathsheba really knew not what to say.
"I've seen a good many women in my time,
continued the young man in a murmur, and more
thoughtfully than hitherto, critically regarding her bent
head at the same time; "but I've never seen a woman
so beautiful as you. Take it or leave it -- be offended
or like it -- I don't care.'
" Who are you, then, who can so well afford to
despise opinion ? '
" No stranger. Sergeant Troy. I am staying in
this place. -- There ! it is undone at last, you see.
Your light fingers were more eager than mine. I wish it
had been the knot of knots, which there's no untying !. '
This was worse and worse. She started up, and so
did he.
<P 217>
How to decently get away from him -- that
was her difficulty now. She sidled off inch by inch,
the lantern in her hand, till she could see the redness
of his coat no longer.
" Ah, Beauty ; good-bye !. ' he said.
She made no reply, and, reaching a distance of
twenty or thirty yards, turned about, and ran indoors.
Liddy had just retired to rest. In ascending to her
own chamber, Bathsheba opened the girl's door an
inch or two, and, panting, said --
" Liddy, is any soldier staying in the village --
sergeant somebody -- rather gentlemanly for a sergeant,
and good looking -- a red coat with blue facings ?'
'No, miss ... No, I say; but really it might be
Sergeant Troy home on furlough, though I have not
seen him. He was here once in that way when the
regiment was at Casterbridge.'
" Yes; that's the name. Had he a moustache -- no
whiskers or beard ?'
" He had.'
" What kind of a person is he ?'
"O ! miss -- I blush to name it -- a gay man! But
I know him to be very quick and trim, who might have
made his thousands, like a squire. Such a clever
young dand as he is! He's a doctor's son by name,
which is a great deal; and he's an earl's son by
nature!'
" Which is a great deal more. Fancy! Is it true ? '
" Yes. And, he was brought up so well, and sent to
Casterbridge Grammar School for years and years.
Learnt all languages while he was there ; and it was
said he got on so far that he could take down Chinese
in shorthand ; but that I don't answer for, as it was
only reported. However, he wasted his gifted lot,
and listed a soldier; but even then he rose to be a
sergeant without trying at all. Ah! such a blessing it
is to be high-born ; nobility of blood will shine out even
in the ranks and files. And is he really come home,
miss ?"
' I believe so. Good-night, Liddy.'
After all, how could a cheerful wearer of skirts
be permanently offended with the man ? There are
occasions when girls like Bathsheba will put up with
a great deal of
<P 218>
unconventional behaviour. When they
want to be praised, which is often, when they want to
be mastered, which is sometimes ; and when they want
no nonsense, which is seldom. Just now the first
feeling was in the ascendant with Bathsheba, with a dash
of the second. Moreover, by chance or by devilry, the
ministrant was antecedently made interesting by being
a handsome stranger who had evidently seen better
days.
So she could not clearly decide whether it was her
opinion that he had insulted her or not. '
"Was ever anything so odd! ' she at last exclaimed
to herself, in her own room. "And was ever anything
so meanly done as what I did to to sulk away like that
from a man who was only civil and kind!' Clearly she
did not think his barefaced praise of her person an
insult now.
It was a fatal omission of Boldwood's that he had
never once told her she was beautiful.
<C xxv>
<P 219>
THE NEW ACQUAINTANCE DESCRIBED
IDIOSYNCRASY and vicissitude had combined to
stamp Sergeant Troy as an exceptional being.
He was a man to whom memories were an in+
cumbrance, and anticipations a superfluity. Simply
feeling, considering, and caring for what was before his
eyes, he was vulnerable only in the present. His out+
look upon time was as a transient flash of the eye now
and then : that projection of consciousness into days
gone by and to come, which makes the past a synonym
for the pathetic and the future a word for circum+
spection, was foreign to Troy. With him the past
was yesterday ; the future, to-morrow ; never, the day
after.
On this account he might, in certain lights, have
been regarded as one of the most fortunate of his
order. For it may be argued with great plausibility
that reminiscence is less an endowment than a disease,
and that expectation in its only comfortable form -- that
of absolute faith -- is practically an impossibility; whilst
in the form of hope and the secondary compounds,
patience, impatience, resolve, curiosity, it is a constant
fluctuation between pleasure and pain.
Sergeant Troy, being entirely innocent of the
practice of expectation, was never disappointed. To
set against this negative gain there may have been
some positive losses from a certain narrowing of the
higher tastes and sensations which it entailed. But
limitation of the capacity is never recognized as a loss
by the loser therefrom : in this attribute moral or
aesthetic poverty contrasts plausibly with material, since
those who suffer do not mind it, whilst those who mind
it soon cease to suffer. It is not a denial of anything
to have been always without it, and what Troy had
never enjoyed he did not miss; but, being fully
conscious that what sober
<P 220>
people missed he enjoyed,
his capacity, though really less, seemed greater than
theirs.
He was moderately truthful towards men, but to
women lied like a Cretan -- a system of ethics above all
others calculated to win popularity at the first flush of
admission into lively society ; and the possibility of the
favour gained being transitory had reference only to
the future.
He never passed the line which divides the spruce
vices from the ugly ; and hence, though his morals had
hardly been applauded, disapproval of them" had fre+
quently been tempered with a smile. This treatment
had led to his becoming a sort of regrater of other
men's gallantries, to his own aggrandizement as a
Corinthian, rather than to the moral profit of his
hearers.
His reason and his propensities had seldom any
reciprocating influence, having separated by mutual
consent long ago : thence it sometimes happened that,
while his intentions were as honourable as could be
wished, any particular deed formed a dark background
which threw them into fine relief. The sergeant's
vicious phases being the offspring of impulse, and
his virtuous phases of cool meditation, the latter
had a modest tendency to be oftener heard of than
seen.
Troy was full of activity, but his activities were less of
a locomotive than a vegetative nature ; and, never being
based upon any original choice of foundation or direc+
tion, they were exercised on whatever object chance
might place in their way. Hence, whilst he sometimes
reached the brilliant in speech because that -was
spontaneous, he fell below the commonplace in action,
from inability to guide incipient effort. He had a
quick comprehension and considerable force of char+
acter ; but, being without the power to combine them,
the comprehension became engaged with trivialities
whilst waiting for the will to direct it, and the force
wasted itself in useless grooves through unheeding the
comprehension.
He was a fairly well-educated man for one of middle
class -- exceptionally well educated for a common soldier.
He spoke fluently and unceasingly. He could in this
way be one thing and seem another : for instance, he
could speak of love and
<P 221>
think of dinner; call on the
intend to owe.
The wondrous power of flattery in passados at woman
is a perception so universal as to be remarked upon by
many people almost as automatically as they repeat a
proverb, or say that they are Christians and the like,
without thinking much of the enormous corollaries
which spring from the proposition. Still less is it acted
upon for the good of the complemental being alluded
to. With the majority such an opinion is shelved with
all those trite aphorisms which require some catastrophe
to bring their tremendous meanings thoroughly home.
When expressed with some amount of reflectiveness it
seems co-ordinate with a belief that this flattery must
be reasonable to be effective. It is to the credit of
men that few attempt to settle the question by experi+
ment, and it is for their happiness, perhaps, that accident
has never settled it for them. Nevertheless, that a
male dissembler who by deluging her with untenable
fictions charms the female wisely, may acquire powers
reaching to the extremity of perdition, is a truth taught
to many by unsought and wringing occurrences. And
some profess to have attained to the same knowledge
by experiment as aforesaid, and jauntily continue their
indulgence in such experiments with terrible effect.
Sergeant Troy was one.
He had been known to observe casually that in
dealing with womankind the only alternative to flattery
was cursing and swearing. There was no third method.
" Treat them fairly, and you are a lost man,' he would
say.
This philosopher's public appearance in Weatherbury
promptly followed his arrival there. A week or two
after the shearing, Bathsheba, feeling a nameless relief
of spirits on account of Boldwood's absence, approached
her hayfields and looked over the hedge towards the
haymakers. They consisted in about equal proportions
of gnarled and flexuous forms, the former being the
men, the latter the women, who wore tilt bonnets
covered with nankeen, which hung in a curtain upon
their shoulders. Coggan and Mark Clark were mowing
in a less forward meadow, Clark humming a tune to
the strokes of his
<P 222>
scythe, to which Jan made no attempt
to keep time with his. In the first mead they were
already loading hay, the women raking it into cocks
and windrows, and the men tossing it upon the
waggon.
From behind the waggon a bright scarlet spot
emerged, and went on loading unconcernedly with the
rest. It was the gallant sergeant, who had come hay+
making for pleasure ; and nobody could deny that he
was doing the mistress of the farm real knight-service
by this voluntary contribution of his labour at a busy
time.
As soon as she had entered the field Troy saw her,
and sticking his pitchfork into the ground and picking
up his crop or cane, he came forward. Bathsheba
blushed with half-angry embarrassment, and adjusted
her eyes as well as her feet to the direct line of her
path.
<C xxvi>
<P 223>
SCENE ON THE VERGE OF THE HAY-MEAD
'AH, Miss Everdene!' said the sergeant, touching his
diminutive cap. "Little did I think it was you I was
speaking to the other night. And yet, if I had reflected,
the "Queen of the Corn-market" (truth is truth at any
hour of the day or night, and I heard you so named in
Casterbridge yesterday), the "Queen of the Corn-market,''
I say, could be no other woman. I step across now to
beg your forgiveness a thousand times for having been
led by my feelings to express myself too strongly for a
stranger. To be sure I am no stranger to the place --
I am Sergeant Troy, as I told you, and I have assisted
your uncle in these fields no end of times when I was a
lad. I have been doing the same for you today.'
"I suppose I must thank you for that, Sergeant
Troy,' said the Queen of the Corn-market, in an in+
differently grateful tone.
The sergeant looked hurt and sad. "Indeed you
must not, Miss Everdene,' he said. " Why could you
think such a thing necessary ? '
"I am glad it is not.'
" Why ? if I may ask without offence.'
" Because I don't much want to thank you for any"
thing.'
"I am afraid I have made a hole with my tongue
that my heart will never mend. O these intolerable
times: that ill-luck should follow a man for honestly
telling a woman she is beautiful.! 'Twas the most I
said -- you must own that; and the least I could say --
that I own myself.'
'There is some talk I could do without more easily
than money.'
"Indeed. That remark is a sort of digression.'
" No. It means that I would rather have your room
than your company.'
<P 224>
"And I would rather have curses from you than
kisses from any other woman ; so I'll stay here.'
Bathsheba was absolutely speechless. And yet she
could not help feeling that the assistance he was render+
ing forbade a harsh repulse.
" Well,' continued Troy, "I suppose there is a praise
which is rudeness, and that may be mine. At the
same time there is a treatment which is injustice, and
that may be yours. Because a plain blunt man, who
has never been taught concealment, speaks out his
mind without exactly intending it, he's to be snapped
off like the son of a sinner.'
"Indeed there's no such case between us,' she said,
turning away. "I don't allow strangers to be bold and
impudent -- even in praise of me.'
" Ah -- it is not the fact but the method which offends
you,' he said, carelessly. "But I have the sad satis+
faction of knowing that my words, whether pleasing or
offensive, are unmistakably true. Would you have had
me look at you, and tell my acquaintance that you are
quite a common-place woman, to save you the embar+
rassment of being stared at if they come near you ?
Not I. I couldn't tell any such ridiculous lie about
a beauty to encourage a single woman in England in
too excessive a modesty.'
"It is all pretence -- what you are saying!' exclaimed
Bathsheba, laughing in spite of herself at the sergeant's
sly method. " You have a rare invention, Sergeant
Troy. Why couldn't you have passed by me that
night, and said nothing ? -- that was all I meant to
reproach you for.'
"Because I wasn't going to. Half the pleasure of
a feeling lies in being able to express it on the spur of
the moment, and I let out mine. It would have been
just the same if you had been the reverse person -- ugly
and old -- I should have exclaimed about it in the same
way. '
" How long is it since you have been so afflicted with
strong feeling, then ? '
" Oh, ever since I was big enough to know loveliness
from deformity.'
<P 225>
"'Tis to be hoped your sense of the difference you
speak of doesn't stop at faces, but extends to morals as
well. '
'I won't speak of morals or religion -- my own or
anybody else's. Though perhaps I should have been a
very good Christian if you pretty women hadn't made
me an idolater.'
Bathsheba moved on to hide the irrepressible dimp+
lings of merriment. Troy followed, whirling his crop.
'But -- Miss Everdene -- you do forgive me ? '
" Hardly. '
"Why ?'
" You say such things.'
"I said you were beautiful, and I'll say so still; for,
by --  so you are !. The most beautiful ever I saw, or
may I fall dead this instant! Why, upon my --  -- '
" Don't -- don't! I won't listen to you -- you are so
profane!' she said, in a restless state between distress
at hearing him and a penchant to hear more.
"I again say you are a most fascinating woman.
There's nothing remarkable in my saying so, is there?
I'm sure the fact is evident enough. Miss Everdene,
my opinion may be too forcibly let out to please you,
and, for the matter of that, too insignificant to convince
you, but surely it is honest, and why can't it be ex+
cused? '
"Because it -- it isn't a correct one,' she femininely
murmured.
" 0, fie -- fie-! Am I any worse for breaking the
third of that Terrible Ten than you for breaking the
ninth ?"
"Well, it doesn't seem quite true to me that I am
fascinating,' she replied evasively.
' Not so to you : then I say with all respect that, if
so, it is owing to your modesty, Miss Everdene. But
surely you must have been told by everybody of what
everybody notices ? and you should take their words
for it.'
" They don't say so exactly.'
" O yes, they must!'
"Well, I mean to my face, as you do,' she went on,
allowing
<P 226>
herself to be further lured into a conversation
that intention had rigorously forbidden.
"But you know they think so ?'
"No -- that is -- I certainly have heard Liddy say
they do, but --  -- ' She paused.
Capitulation -- that was the purport of the simple
reply, guarded as it was -- capitulation, unknown to her+
self. Never did a fragile tailless sentence convey a
more perfect meaning. The careless sergeant smiled
within himself, and probably too the devil smiled from
a loop-hole in Tophet, for the moment was the turning+
point of a career. Her tone and mien signified beyond
mistake that the seed which was to lift the foundation
had taken root in the chink : the remainder was a mere
question of time and natural changes.
"There the truth comes out ! ' said the soldier, in
reply. "Never tell me that a young lady can live in a
buzz of admiration without knowing something about it.
Ah,' well, Miss Everdene, you are -- pardon my blunt
way -- you are rather an injury to our race than other+
wise.
" How -- indeed ? ' she said, opening her eyes.
"O, it is true enough. I may as well be hung for
a sheep as a lamb (an old country saying, not of much
account, but it will do for a rough soldier), and so I
will speak my mind, regardless of your pleasure, and
without hoping or intending to get your pardon. Why,
Miss Everdene, it is in this manner that your good
looks may do more. harm than good in the world.'
The sergeant looked down the mead in critical abstrac+
ion. " Probably some one man on an average falls in'
love, with each ordinary woman. She can marry him :
he is content, and leads a useful life. Such women as
you a hundred men always covet -- your eyes will be+
witch scores on scores into an unavailing fancy for you
you can only marry one of that many. Out of these
say twenty will endeavour to. drown the bitterness of
espised love in drink ; twenty more will mope away
their lives without a wish or attempt to make a mark in
he world, because they have no ambition apart from
their attachment to you ; twenty more -- the susceptible
person
<P 227>
myself possibly among them -- will be always
draggling after you, getting where they may just see
you, doing desperate things. Men are such constant
fools! The rest may try to get over their passion with
more or less success. But all these men will be
saddened. And not only those ninety-nine men, but
the ninety-nine women they might have married are
saddened with them. There's my tale. That's why I
say that a woman so charming as yourself, Miss Ever+
dene, is hardly a blessing to her race.'
The handsome sergeant's features were during this
speech as rigid and stern as John Knox's in addressing
his gay young queen.
Seeing she made no reply, he said, "Do you read
French ? '
"No; I began, but when I got to the verbs, father
died,' she said simply.
'I do -- -when I have an opportunity, which latterly
has not been often (my mother was a Parisienne) -- -and
there's a proverb they have, Qui aime bien chatie bien
 -- "He chastens who loves well." Do you understand
me?
'Ah!' she replied, and there was even a little tremu+
lousness in the usually cool girl's voice; 'if you can
only fight half as winningly as you can talk, you are
able to make a pleasure of a bayonet wound!' And
then poor Bathsheba instanly perceived her slip in
making this admission: in hastily trying to retrieve it,
she went from bad to worse. 'Don't, however, suppose
that I derive any pleasure from what you tell me.'
'I know you do not -- -I know it perfectly,' said Troy,
with much hearty conviction on the exterior of his face:
and altering the expression to moodiness; 'when a
dozen men arfe ready to speak tenderly to you, and
give the admiration you deserve without adding the
warning you need, it stands to reason that my poor
rough-and-ready mixture of praise and blame cannot
convey much pleasure. Fool as I may be, I am not so
conceited as to suppose that!'
'I think you -- -are conceited, nevertheless,' said
Bathsheba, looking askance at a reed she was fitfully
pulling with one hand, having lately grown feverish
under the soldier's
<P 228>
system of procedure -- not because
the nature of his cajolery was entirely unperceived, but
because its vigour was overwelming.
'I would not own it to anybody esle -- nor do I
exactly to you. Still, there might have been some self+
conceit in my foolish supposition the other night. I
knew that what I said in admiration might be an
opinion too often forced upon you to give any pleasure
but I certainly did think that the kindness of your
nature might prevent you judging an uncontrolled
tongue harshly -- which you have done -- and thinking
badly of me and wounding me this morning, when I
am working hard to save your hay.'
'Well, you need not think more of that: perhaps you
did not mean to be rude to me by speaking out your
mind: indeed, I believe you did not,' said the shrewd
woman, in painfully innocent earnest. 'And I thank
you for giving help here. But -- -but mind you don't
speak to me again in that way, or in any other, unless
I speak to you.'
'O, Miss Bathsheba! That is to hard!'
'No, it isn't. Why is it?'
'You will never speak to me; for I shall not be
here long. I am soon going back again to the miser+
able monotony of drill -- and perhaps our regiment will
be ordered out soon. And yet you take away the one
little ewe-lamb of plaesure that I have in this dull life
of mine. Well, perhaps generosity is not a woman's
most marked characteristic.'
'When are you going from here?' she asked, with
some interest.
'In a month.'
'But how can it give you pleasure to speak to me?'
'Can you ask Miss Everdene -- knowing as you do
 -- what my offence is based on?'
'I you do care so much for a silly trifle of that
kind, then, I don't mind doing it,' she uncertainly and
doubtingly answered. 'But you can't really care for a
word from me? you only say so -- I think you only
say so.'
'that's unjust -- but I won't repeat the remark. I
am too
<P 229>
gratified to get such a mark of your friendship
at any price to cavil at the tone. I do Miss Everdene,
care for it. You may think a man foolish to want a
mere word --  just a good morning. Perhaps he is -- I
don't know. But you have never been a man looking
upon a woman, and that woman yourself.'
" Well.'
" Then you know nothing of what such an experience
is like -- and Heaven forbid that you ever should!'
"Nonsense, flatterer! What is it like? I am
interested in knowing."
"Put shortly, it is not being able to think, hear, or
look in any direction except one without wretchedness,
nor there without torture.'
" Ah, sergeant, it won't do -- you are pretending ! ' she
said, shaking her head. ' Your words are too dashing
to be true.'
"I am not, upon the honour of a soldier'
"But why is it so? -- Of course I ask for mere pas+
time.'
" Because you are so distracting -- and I am so
distracted. '
" You look like it.'
" I am indeed.'
" Why, you only saw me the other night!'
" That makes no difference. The lightning works in+
stantaneously. I loved you then, at once -- as I do now.'
Bathsheba surveyed him curiously, from the feet
upward, as high as she liked to venture her glance,
which was not quite so high as his eyes.
" You cannot and you don"t,' she said demurely.
"There is-no such sudden feeling in people. I won't
listen to you any longer. Hear me, I wish I knew what
o'clock it is -- I am going -- I have wasted too much time
here already!"
The sergeant looked at his watch and told her.
" What, haven't you a watch, miss?' he inquired.
"I have not just at present -- I am about to get a
new one.'
"No. You shall be given one. Yes -- you  shall.
A gift, Miss Everdene -- a gift."
And before she knew what the young -- man was
intending, a heavy gold watch was in her hand.
<P 230>
"It is an unusually good one for a man like me to
possess,' he quietly said. "That watch has a history.
Press the spring and open the back.'
She did so.
'What do you see?'
'A crest and a motto.'
" A coronet with five points, and beneath, Cedit amor
rebus -- "Love yields to circumstance." It's the motto
of the Earls of Severn. That watch belonged to the
last lord, and was given to my mother's husband, a
medical man, for his use till I came of age, when it was
to be given to me. It was all the fortune that ever I
inherited. That watch has regulated imperial interests
in its time -- the stately ceremonial, the courtly assigna+
tion, pompous travels, and lordly sleeps. Now it is
yours.
" But, Sergeant Troy, I cannot take this -- I cannot ! '
she exclaimed, with round-eyed wonder. " A gold watch !
What are you doing? Don't be such a dissembler!"
The sergeant retreated to avoid receiving back his
gift, which she held out persistently towards him.
Bathsheba followed as he retired.
"Keep it -- do, Miss Everdene -- keep it !' said the
erratic child of impulse. " The fact of your possessing
it makes it worth ten times as much to me. A more
plebeian one will answer my purpose just as well, and
the pleasure of knowing whose heart my old one beats
against -- well, I won't speak of that. It is in far
worthier hands than ever it has been in before.'
"But indeed I can't have it!' she said, in a perfect
simmer of distress. " O, how can you do such a thing ;
that is if you really mean it! Give me your dead
father's watch, and such a valuable one! You should
not be so reckless, indeed, Sergeant Troy!'
"I loved my father: good; but better, I love you
more. That's how I can do it,' said the sergeant, with
an intonation of such exquisite fidelity to nature that it.
was evidently not all acted now. Her beauty, which,
whilst it had been quiescent, he had praised in jest,
had in its animated phases moved him to
<P 231>
earnest; and
though his seriousness was less than she imagined, it
was probably more than he imagined himself.
Bathsheba was brimming with agitated bewilderment,
and she said, in half-suspicious accents of feeling, "Can
it be! 0, how can it be, that you care for me, and
so suddenly,! You have seen so little of me: I may
not be really so -- so nice-looking as I seem to you.
Please, do take it ; O, do! I cannot and will not have
it. Believe me, your generosity is too great. I have
never done you a single kindness, and why should you
be so kind to me?'
A factitious reply had been again upon his lips, but
it was again suspended, and he looked at her with an
arrested eye. The truth was, that as she now stood --
excited, wild, and honest as the day --  her alluring
beauty bore out so fully the epithets he had bestowed
upon it that he was quite startled at his temerity in
advancing them as false. He said mechanically, "Ah,
why ?' and continued to look at her.
"And my workfolk see me following you about the
field, and are wondering. O, this is dreadful!' she
went on, unconscious of the transmutation she was
effecting.
"I did not quite mean you to accept it at first, for it
as my one poor patent of nobility,' he broke out,
bluntly; "but, upon my soul, I wish you would now.
Without any shamming, come! Don't deny me the
happiness of wearing it for my sake ? But you are too
lovely even to care to be kind as others are.'
" No, no ; don"t say so !. I have reasons for reserve
which I cannot explain.'
" bet it be, then, let it be,' he said, receiving back
the watch at last; "I must be leaving you now. And
will you speak to me for these few weeks of my stay ? '
'Indeed I will. Yet, I don't know if I will! O,
why did you come and disturb me so !'
"Perhaps in setting a gin, I have caught myself.
Such things have happened. Well, will you let me
work in your fields ? ' he coaxed.
" Yes, I suppose so ; if it is any pleasure to you.'
" Miss Everdene, I thank you.
" No, no.'
<P 232>
'Good-bye!'
The sergeant brought his hand to the cap on the
slope of his head, saluted, and returned to the distant
group of haymakers.
Bathsheba could not face the haymakers now. Her
heart erratically flitting hither and thither from per+
plexed excitement, hot, and almost tearful, she retreated
homeward, murmuring, O, what have I done ! What
does it mean ! I wish I knew how much of it was
true!
<C xxvii>
<P 233>
HIVING THE BEES
THE Weatherbury bees were late in their swarming this
year. It was in the latter part of June, and the day after
the interview with Troy in the hayfield, that Bathsheba
was standing in her garden, watching a swarm in the
air and guessing their probable settling place. Not only
were they late this year, but unruly. Sometimes through+
out a whole season all the swarms would alight on the
lowest attainable bough -- such as part of a currant-bush
or espalier apple-tree ; next year they would, with just
the same unanimity, make straight off to the uppermost
member of some tall, gaunt costard, or quarrenden,
and there defy all invaders who did not come armed
with ladders and staves to take them.
This was the case at present. Bathsheba's eyes,
shaded by one hand, were following the ascending
multitude against the unexplorable stretch of blue till
they ultimately halted by one of the unwieldy trees
spoken of. A process somewhat analogous to that of
alleged formations of the universe, time and times ago,
was observable. The bustling swarm had swept the sky
in a scattered and uniform haze, which now thickened to
a nebulous centre: this glided on to a bough and grew
still denser, till it formed a solid black spot upon the
light.
The men and women being all busily engaged in
saving the hay -- even Liddy had left the house for the
purpose of lending a hand -- Bathsheba resolved to hive
the bees herself, if possible. She had dressed the hive
with herbs and honey, fetched a ladder, brush, and
crook, made herself impregnable with armour of leather
gloves, straw hat, and large gauze veil -- once green but
now faded to snuff colour -- and ascended a dozen rungs
of the ladder. At once she heard, not ten yards off,
a voice that was beginning to have a strange power in
agitating her.
<P 234>
"Miss Everdene, let me assist you ; you should not
attempt such a thing alone.'
Troy was just opening the garden gate.
Bathsheba flung down the brush, crook, and empty
hive, pulled the skirt of her dress tightly round her
ankles in a tremendous flurry, and as well as she could
slid down the ladder. By the time she reached the
bottom Troy was there also, and he stooped to pick
up the hive.
"How fortunate I am to have dropped in at this
moment!' exclaimed the sergeant.
She found her voice in a minute. "What! and will
you shake them in for me?' she asked, in what, for a
defiant girl, was a faltering way; though, for a timid
girl, it would have seemed a brave way enough.
" Will I ! ' said Troy. " Why, of course I will. How
blooming you are to-day ! ' Troy flung down his cane
and put his foot on the ladder to ascend.
"But you must have on the veil and gloves, or you'll
be stung fearfully!'
"Ah, yes. I must put on the veil and gloves. Will
you kindly show me how to fix them properly?'
'And you must have the broad-brimmed hat, too ;, for
your cap has no brim to keep the veil off, and they'd
reach your face.'
" The broad-brimmed hat, too, by all means.'
So a whimsical fate ordered that her hat should be
taken off -- veil and all attached -- and placed upon his
head, Troy tossing his own into a gooseberry bush.
Then the veil had to be tied at its lower edge round
his collar and the gloves put on him.
He looked such an extraordinary object in this guise
that, flurried as she was, she could not avoid laughing
outright. It was the removal of yet another stake from
the palisade of cold manners which had kept him off
Bathsheba looked on from the g:-ound whilst he was
busy sweeping and shaking the bees from the tree,
holding up the hive with the other hand for them to
fall into. She made use of an unobserved minute
whilst his attention was absorbed in the
<P 235>
operation to
arrange her plumes a little. He came down holding
the hive at arm's length, behind which trailed a cloud
of bees.
' Upon my life,' said Troy, through the veil, ' holding
up this hive makes one"s arm ache worse than a week
of sword-exercise.' When the manoeuvre was complete
he approached her. 'Would you be good enough to
untie me and let me out? I am nearly stifled inside
this silk cage.'
To hide her embarrassment during the unwonted
process of untying the string about his neck, she said : --
'I have never seen that you spoke of.'
'What ?'
'The sword-exercise.'
'Ah ! would you like to ?' said Troy.
Bathsheba hesitated. She had heard wondrous
reports from time to time by dwellers in Weatherbury,
who had by chance sojourned awhile in Casterbridge,
near the barracks, of this strange and glorious perform+
ance, tlie sword-exercise. Men and boys who had
peeped through chinks or over walls into the barrack+
yard returned with accounts of its being the most
flashing affair conceivable ; accoutrements and weapons
glistening like stars-here,there,around-yet all by rule
and compass. So she said mildly what she felt strongly.
'Yes ; I should like to see it very much.'
'And so you shall; you shall see me go through it.'
'No! How?'
'Let me consider.'
'Not with a walking-stick -- I don't care to see that.
lt must be a real sword.'
'Yes, I know; and I have no sword here; but I
think I could get one by the evening. Now, will you
do this?'
'O no, indeed !' said Bathsheba, blushing. ' Thank
you very much, but I couldn't on any account.
'Surely you might? Nobody would know.'
She shook her head, but with a weakened negation.
' If I were to,' she said, 'I must bring Liddy too. Might
I not?'
<P 236>
Troy looked far away. 'I don't see why you want
to bring her,' he said coldly.
An unconscious look of assent in Bathsheba's eyes
betrayed that something more than his coldness had
made her also feel that Liddy Would be superfluous in
the suggested scene. She had felt it, even whilst making
the proposal.
'Well, I won't bring Liddy -- and I'll come. But
only for a very short time,' she added; 'a very short
time.'
'It will not take five minutes,' said Troy.
<P 237>
<C xxviii>
THE HOLLOW AMID THE FERNS
THE hill opposite Bathsheba's dwelling extended, a
mile off, into an uncultivated tract of land, dotted at
this season with tall thickets of brake fern, plump and
diaphanous from recent rapid growth, and radiant in
hues of clear and untainted green.
At eight o'clock this midsummer evening, whilst the
bristling ball of gold in the west still swept the tips of
the ferns with its long, luxuriant rays, a soft brushing+
by of garments might have been heard among them,
and Bathsheba appeared in their midst, their soft,
feathery arms caressing her up to her shoulders. She
paused, turned, went back over the hill and half-way
to her own door, whence she cast a farewell glance upon
the spot she had just left, having resolved not to remain
near the place after all.
She saw a dim spot of artificial red moving round
the shoulder of the rise. It disappeared on the other
side.
She waited one minute -- two minutes -- thought of
Troy's disappointment at her non-fulfilment of a promised
engagement, till she again ran along the field, clambered
over the bank, and followed the original direction. She
was now literally trembling and panting at this her
temerity in such an errant undertaking; her breath
came and went quickly, and her eyes shone with an in+
frequent light. Yet go she must. She reached the
verge of a pit in the middle of the ferns. Troy stood
in the bottom, looking up towards her.
'I heard you rustling through the fern before I saw
you,' he said, coming up and giving her his hand to help
her down the slope.
The pit was a saucer-shaped concave, naturally
formed, with a top diameter of about thirty feet, and
shallow enough to allow the sunshine to reach their
heads. Standing in the
<P 238>
centre, the sky overhead was
met by a circular horizon of fern : this grew nearly to
the bottom of the slope and then abruptly ceased. The
middle within the belt of verdure was floored with a
thick flossy carpet of moss and grass intermingled, so
yielding that the foot was half-buried within it.
'Now,' said 'Troy, producing the sword, which, as he
raised it into the sunlight, gleamed a sort of greeting,
like a living thing, 'first, we have four right and four
left cuts; four right and four left thrusts. Infantry cuts
and guards are more interesting than ours, to my mind;
but they are not so swashing. They have seven cuts
and three thrusts. So much as a preliminary. Well,
next, our cut one is as if you were sowing your corn --
so.' Bathsheba saw a sort of rainbow, upside down in
the air, and Troy's arm was still again. 'Cut two, as if
you were hedging -- so. Three, as if you were reaping
 -- so.' Four, as if you were threshing -- in that way.
'Then the same on the left. The thrusts are these : one,
two, three, four, right ; one, two, three, four, left.' He
repeated them. 'Have 'em again ?' he said. 'One,
two --  -- '
She hurriedly interrupted : 'I'd rather not; though
I don't mind your twos and fours; but your ones and
threes are terrible !'
'Very well. I'll let you off the ones and threes.
Next, cuts, points and guards altogether.' Troy duly
exhibited them. 'Then there's pursuing practice, in
this way.' He gave the movements as before. 'There,
those are the stereotyped forms. The infantry have
two most diabolical upward cuts, which we are too
humane to use. Like this -- three, four.'
'How murderous and bloodthirsty !'
'They are rather deathy. Now I'll be more inter+
esting, and let you see some loose play -- giving all the
cuts and points, infantry and cavalry, quicker than
lightning, and as promiscuously -- with just enough rule
to regulate instinct and yet not to fetter it. You are
my antagonist, with this difference from real warfare,
that I shall miss you every time by one hair's breadth,
or perhaps two. Mind you don't flinch, whatever you
do.'
<P 239>
'I'll be sure not to!' she said invincibly.
He pointed to about a yard in front of him.
Bathsheba's adventurous spirit was beginning to find
some grains of relish in these highly novel proceedings.
She took up her position as directed, facing Troy.
'Now just to learn whether you have pluck enough
to let me do what I wish, I'll give you a preliminary
test.'
He flourished the sword by way of introduction
number two, and the next thing of which she was
conscious was that the point and blade of the sword
were darting with a gleam towards her left side, just
above her hip; then of their reappearance on her right
side, emerging as it were from between her ribs, having
apparently passed through her body. The third item
of consciousness was that of seeing the same sword,
perfectly clean and free from blood held vertically in
Troy's hand (in the position technically called 'recover
swords'). All was as quick as electricity.
'Oh!' she cried out in affright, pressing her hand to
her side. ' Have you run me through ? -- no, you have
not! Whatever have you done!'
'I have not touched you,' said Troy, quietly. 'It
was mere sleight of hand. The sword passed behind
you. Now you are not afraid, are you ? Because if
you are l can't perform. I give my word that l will
not only not hurt you, but not once touch you.'
'I don't think I am afraid. You are quite sure you
will not hurt me ?'
'Quite sure.'
"Is the sWord very sharp ?'
'O no -- only stand as still as a statue. Now !'
In an instant the atmosphere was transformed to
Bathsheba's eyes. Beams of light caught from the low
sun's rays, above, around, in front of her, well-nigh shut
out earth and heaven -- all emitted in the marvellous
evolutions of Troy's reflecting blade, which seemed
everywhere at once, and yet nowherre specially. These
circling gleams were accompanied by a keen rush that
was almost a whistling -- also springing
<P 240>
from all sides of
her at once. In short, she was enclosed in a firmament
of light, and of sharp hisses, resembling a sky-full of
meteors close at hand.
Never since the broadsword became the national
weapon had there been more dexterity shown in its
management than by the hands of Sergeant Troy, and
never had he been in such splendid temper for the
performance as now in the evening sunshine among the
ferns with Bathsheba. It may safely be asserted with
respect to the closeness of his cuts, that had it been
possible for the edge of the sword to leave in the air a
permanent substance wherever it flew past, the space
left untouched would have been almost a mould of
Bathsheba's figure.
Behind the luminous streams of this aurora militaris,
she could see the hue of Troy's sword arm, spread in a
scarlet haze over the space covered by its motions, like
a twanged harpstring, and behind all Troy himself,
mostly facing her; sometimes, to show the rear cuts,
half turned away, his eye nevertheless always keenly
measuring her breadth and outline, and his lips tightly
closed in sustained effort. Next, his movements lapsed
slower, and she could see them individually. The
hissing of the sword had ceased, and he stopped
entirely.
'That outer loose lock of hair wants tidying, he
said, before she had moved or spoken. 'Wait: I'll do
it for you.'
An arc of silver shone on her right side: the sword
had descended. The lock droped to the ground.
'Bravely borne!' said Troy. 'You didn't flinch a
shade's thickness. Wonderful in a woman!'
'It was because I didn't expect it. O, you have
spoilt my hair!'
'Only once more.'
'No -- no! I am afraid of you -- indeed I am !' she
cried.
'I won't touch you at all -- not even your hair. I
am only going to kill that caterpillar settling on you.
Now: still!'
It appeared that a caterpillar had come from the
fern and chosen the front of her bodice as his resting
place. She saw the point glisten towards her bosom,
and seemingly enter it. Bathsheba closed her eyes in
the full persuasion that she was
<P 241>
killed at last. How+
ever, feeling just as usual, she opened them again.
'There it is, look,' said the sargeant, holding his
sword before her eyes.
The caterpillar was spitted upon its point.
'Why, it is magic!' said Bathsheba, amazed.
'O no -- dexterity. I merely gave point to your
bosom where the caterpillar was, and instead of running
you through checked the extension a thousandth of an
inch short of your surface.'
'But how could you chop off a curl of my hair with
a sword that has no edge?'
THE HOLLOW AMID THE FERNS
"No edge .! This sword will shave like a razor.
Look here.'
He touched the palm of his hand with the blade,
and then, lifting it, showed her a thin shaving of scarf+
skin dangling therefrom.
" But you said before beginning that it was blunt and
couldn't cut me .!'
'That was to get you to stand still, and so make sure
of your safety. The risk of injuring you through your
moving was too great not to force me to tell you a
fib to escape it.'
She shuddered. 'I have been within an inch of my
life, and didn't know it! '
'More precisely speaking, you have been within half
an inch of being pared alive two hundred and ninety-five
tinies.'
" Cruel, cruel, 'tis of you !. '
" You have been perfectly safe, nevertheless. My
sword never errs.' And Troy returned the weapon to
the scabbard.
Bathsheba, overcome by a hundred tumultuous feel'
ings resulting from the scene, abstractedly sat down on
a tuft of heather.
'I must leave you now,' said Troy, softly. " And I'll
venture to take and keep this in remembrance of you.'
She saw him stoop to the grass, pick up the winding
lock which he had severcd from her manifold tresses,
twist it round his fingers, unfasten a button in the hreast
of his coat, and carefully put it inside. She felt power+
less to withstand or deny him. He was altogether too
much for her, and Bathsheba
<P 242>
seemed as one who, facing
a reviving wind, finds it blow so strongly that it stops
the breath.
He drew near and said, 'I must be leaving you.'
He drew nearer still. A minute later and she saw his
scarlet form disappear amid the ferny thicket, almost in
a flash, like a brand swiftly waved.
That minute's interval had brought the blood beating
into her face, set her stinging as if aflame to the very
hollows oi her feet, and enlarged emotion to a compass
which quite swamped thought. It had brought upon
her a stroke resulting, as did that of Moses in Horeh, in
a liquid stream -- here a stream of tears. She felt like
one who has sinned a great sin.
The circumstance had been the gentle dip of Troy's
mouth downwards upon her own. He had kissed her,
PARTICULARS OF A TWILIGHT WALK
<C xxix>
<P 243>
PARTICULARS OF A TWILIGHT WALK
WE now see the element of folly distinctly mingling
with the many varying particulars which made up the
character of Bathsheba Everdene. It was almost foreign
to her intrinsic nature. Introduced as lymph on the
dart of Eros, it eventually permeated and coloured
her whole constitution. Bathsheba, though she had too
much understanding to be entirely governed by her
womanliness, had too much womanliness to use her
understanding to the best advantage. Perhaps in no
minor point does woman astonish her helpmate more
than in the strange power she possesses of believing
cajoleries that she knows to be false -- except, indeed, in
that of being utterly sceptical on strictures that she
knows to be true.
Bathsheba loved Troy in the way that only self-reliant
women love when they abandon their self-reliance.
When a strong woman recklessly throws away her
strength she is worse than a weak woman who has never
had any strength to throw away. One source of her
inadequacy is the novelty of the occasion. She has
never had practice in making the best of such a
condition. Weakness is doubly weak by being new.
Bathsheba was not conscious of guile in this matter.
Though in one sense a woman of the world, it was, after
all, that world of daylight coteries and green carpets
wherein cattle form the passing crowd and winds the
busy hum ; where a quiet family of rabbits or hares lives
on the other side of your party-wall, where your neigh+
bour is everybody in the tything, and where calculation
formulated self-indulgence of bad, nothing at all. Had
her utmost thoughts in this direction been distinctly
worded (and by herself they never were), they would
<P 244>
only have amounted to such a matter as that she felt
her impulses to be pleasanter guides than her discretion .
Her love was entire as a child's, and though warm as
summer it was fresh as spring. Her culpability lay in
her making no attempt to control feeling by subtle and
careful inquiry into consuences. She could show others
the steep and thorny way, but 'reck'd not her own rede,'
And Troy's deformities lay deep down from a
woman's vision, whilst his embellishments were upon
the verysurface; thus contrasting with homely Oak,
whose defects were patent to the blindest, and whose
vertues were as metals in a mine.
The difference between love and respect was mark+
edly shown in her conduct. Bathsheba had spoken of
her interest in Boldwood with the greatest freedom to
Liddy, but she had only communed with her own heart
concerning 'Troy'.
All this infatuation Gabriel saw, and was troubled
thereby from the time of his daily journey a-field to the
time of his return, and on to the small hours of many a
night. That he was not beloved had hitherto been his
great that Bathsheba was getting into the toils
was now a sorrow greater than the first, and one which
nearly olbscured it. It was a result which paralleled
the oft-quoted observation of Hippocrates concerning
physical pains.
That is a noble though perhaps an unpromising love
PARTICULARS OF A TWILlGHT WALK
which not even the fear of breeding aversion in the
bosom of the one beloved can deter from combating his
or her errors. Oak determined to speak to his mistress.
He would base his appeal on what he considered her
unfair treatment of Farmer Boldwood, now absent from
home.
An opportunity occurred one evening when she had
gone for a short walk by a path through the neighbour+
ing cornfields. It was dusk when Oak, who had not
been far a-field that day, took the same path and met
her returning, quite pensively, as he thought.
The wheat was now tall, and the path was narrow;
thus the way was quite a sunken groove between the
embowing thicket on either side. Two persons could
not walk abreast
<P 245>
without damaging the crop, and Oak
stood aside to let her pass.
'Oh, is it Gabriel?' she said. 'You are taking a
walk too. Good-night.'
"I thought I would come to meet you, as it is rather
late," said Oak, turning and following at her heels when
she had brushed somewhat quickly by him.
"Thank you, indeed, but I am not very fearful.'
" O no ; but there are bad characters about.'
"I never meet them.'
Now Oak, with marvellous ingenuity, had been going
to introduce the gallant sergeant through the channel of
"bad characters.' But all at once the scheme broke
down, it suddenly occurring to him that this was rather a
clumsy way, and too barefaced to begin with. He tried
another preamble.
"And as the man who would naturally come to meet
you is away from home, too -- I mean Farmer Boldwood
 -- why, thinks I, I'll go,' he said.
"Ah, yes.' She walked on without turning her head,
and for many steps nothing further was heard from her
quarter than the rustle of her dress against the heavy
corn-ears. Then she resumed rather tartly --
'I don't quite understand what you meant by saying
that Mr. Boldwood would naturally come to meet me.'
I meant on account of the wedding which they say
is likely to take place between you and him, miss. For+
give my speaking plainly.'
"They say what is not true,' she returned quickly.
No marriage is likely to take place between us.'
Gabriel now put forth his unobscured opinion, for
the moment had come. " Well, Miss Everdene,' he
said, "putting aside what people say, I never in my life
saw any courting if his is not a courting of you."
Bathsheba would probably have terminated the con'
versation there and then by flatly forbidding the subject,
had not her conscious weakness of position allured her
to palter and argue in endeavours to better it.
<P 246>
"Since this subject has been mentioned,' she said
very emphatically, 'I am glad of the opportunity of
clearing up a mistake which is very common and very
provoking. I didn't definitely promise Mr. Boldwood
anything. I have never cared for him. I respect him,
and he has urged me to marry him. But I have given
him no distinct answer. As soon as he returns I shall
do so; and the answer will be that I cannot think of
marrying him.'
'People are full of mistakes, seemingly.'
' They are.'
The other day they said you were trifling with him,
and you almost proved that you were not; lately they
have said that you be not, and you straightway begin
to show --  -- '
That I am, I suppose you mean.'
' Well, I hope they speak the truth.'
They do, but wrongly applied. I don't trifle with
him ; but then, I have nothing to do with him.'
Oak was unfortunately led on to speak of Boldwood's
rival in a wrong tone to her after all. 'I wish you had
never met that young Sergeant Troy, miss,' he sighed.
PARTlCULARS OF A TWILIGHT WALK
Bathsheba's steps became faintly spasmodic. " Why?'
she asked.
' He is not good enough for 'ee.'
"Did any one tell you to speak to me like this ?'
" Nobody at all.'
"Then it appears to me that Sergeant Troy does not
concern us here,' she said, intractably. ' Yet I must say
that Sergeant 'Troy is an educated man, and quite worthy
of any woman. He is well born.'
"His being higher in learning and birth than the
ruck o' soldiers is anything but a proof of his worth. It
show's his course to be down'ard.'
"I cannot see what this has to do with our conversa+
tion. Mr. Troy's course is not by any means downward;
and his superiority <1is>1 a proof of his worth .! '
"I believe him to have no conscience at all. And I
cannot help begging you, miss, to have nothing to do
with him. Listen to me this once -- only this once !.
I don't say he's such
<P 247>
a bad man as I have fancied -- I
pray to God he is not. But since we don't exactly
know what he is, why not behave as if he <1might>1 be bad,
simply for your own safety ? Don't trust him, mistress;
I ask you not to trust him so.'
" Why, pray ? '
"I like soldiers, but this one I do not like,' he said,
sturdily. " His cleverness in his calling may have
tempted him astray, and what is mirth to the neighbours
is ruin to the woman. When he tries to talk to 'ee again,
why not turn away with a short 'Good day' ; and when
you see him coming one way, turn the other. When
he says anything laughable, fail to see the point
and don't smile, and speak of him before those who will
report your talk as "that fantastical man,' or " that
Sergeant What's-his-name." "That man of a family
that has come to the dogs.' Don't be unmannerly
towards en, but harmless-uncivil, and so get rid of the
man.'
No Christmas robin detained by a window-pane ever
pulsed as did Bathsheba now.
I say -- I say again -- that it doesn't become you to
talk about him. Why he should be mentioned passes
me quite . she exclaimed desperately. " I know this,
th-th-that he is a thoroughly conscientious man -- blunt
sometimes even to rudeness -- but always speaking his
mind about you plain to your face .! '
"Oh.'
"He is as good as anybody in this parish.! He is
very particular, too, about going to church -- yes, he
is.!'
'I am afraid nobody saw him there. I never
did certainly.'
' The reason of that is,' she said eagerly, " that he goes
in privately by the old tower door, just when the service
commences, and sits at the back of the gallery. He
told me so.'
This supreme instance of Troy's goodness fell upon
Gabriel ears like the thirteenth stroke of crazy clock.
It was not only received with utter incredulity as re+
garded itself, but threw a doubt on all the assurances
that had preceded it.
Oak was grieved to find how entirely she trusted him.
He brimmed with deep feeling as he replied in a steady
voice, the
<P 248>
steadiness of which was spoilt by the palpable+
ness of his great effort to keep it so : --
' You know, mistress, that I love you, and shall love
you always. I only mention this to bring to your mind
that at any rate I would wish to do you no harm :
beyond that I put it aside. I have lost in the race for
money and good things, and I am not such a fool as to
pretend to 'ee now I am poor, and you have got alto+
gether above me. But Bathsheba, dear mistress, this
I beg you to consider -- that, both to keep yourself well
honoured among the workfolk, and in common generosity
to an honourable man who loves you as well as I, you
PARTICULARS OF A TWILIGHT WALK
should be more discreet in your bearing towards this
soldier.'
" Don't, don't, don't !. ' she exclaimed, in a choking
voice.
"Are ye not more to me than my own affairs, and
even life .! ' he went on. "Come, listen to me.! I am
six years older than you, and Mr. Boldwood is ten years
older than I, and consider -- I do beg of 'ee to consider
before it is too late -- how safe you would be in his
hands .! '
Oak's allusion to his own love for her lessened, to
some extent, her anger at his interference ; but she
could not really forgive him for letting his wish to marry
her be eclipsed by his wish to do her good, any more
than for his slighting treatment of Troy.
"I wish you to go elsewhere,' she commanded, a
paleness of face invisible to the eye being suggested by
the trembling words. " Do not remain on this farm any
longer. I don't want you -- I beg you to go !.'
"That's nonsense,' said Oak, calmly. " This is the
second time you have pretended to dismiss me; and
what's the use o' it?'
" Pretended !. You shall go, sir -- your lecturing I
will not hear .! I am mistress here.'
" Go, indeed -- what folly will you say next ? Treating
me like Dick, Tom and Harry when you know that a
short time ago my position was as good as yours !. Upon
my life, Bathsheba, it is too barefaced. You know, too,
that I can't go without putting things in such a strait as
you wouldn't get out of
<P 249>
I can't tell when. Unless, indeed,
you'll promise to have an understanding man as bailiff,
or manager, or something. I'll go at once if you'll
promise that.'
'I shall have no bailiff; I shall continue to be my
own manager,' she said decisively.
"Very well, then ; you should be thankful to me for
biding. How would the farm go on with nobody to
mind it but a woman? But mind this, I don't wish
'ee to feel you owe me anything. Not I. What I do,
I do. Sometimes I say I should be as glad as a bird to
leave the place -- for don't suppose I'm content to be a
nobody. I was made for better things. However, I
don't like to see your concerns going to ruin, as they
must if you keep in this mind.... I hate taking my
own measure so plain, but, upon my life, your provok+
ing ways make a man say what he wouldn't dream of
at other times ! I own to being rather interfering. But
you know well enough how it is, and who she is that I
like too well, and feel too much like a fool about to be
civil to her ! '
It is more than probable that she privately and un+
consciously respected him a little for this grim fidelity,
which had been shown in his tone even more than in
his words. At any rate she murmured something to the
effect that he might stay if he wished. She said more
distinctly, " Will you leave me alone now? I don't
order it as a mistress -- I ask it as a woman, and I
expect you not to be so uncourteous as to refuse.'
" Certainly I will, Miss Everdene,' said Gabriel, gently.
He wondered that the request should have come at this
moment, for the strife was over, and they were on a
most desolate hill, far from every human habitation, and
the hour was getting late. He stood still and allowed
her to get far ahead of him till he could only see her
form upon the sky.
A distressing explanation of this anxiety to be rid of
him at that point now ensued. A figure apparently rose
from the earth beside her. The shape beyond all doubt
was Troy's. Oak would not be even a possible listener,
and at once turned back till a good two hundred yards
were between the lovers and himself.
<P 250>
Gabriel went home by way of the churchyard. In
passing the tower he thought of what she had said about
the sergeant's virtuous habit of entering the church un+
PARTICULARS OF A TWILIGHT WALK
perceived at the beginning of service. Believing that
the little gallery door alluded to was quite disused, he
ascended the external flight of steps at the top of which
it stood, and examined it. The pale lustre yet hanging
in the north-western heaven was sufficient to show that
a sprig of ivy had grown from the wall across the door
to a length of more than a foot, delicately tying the
panel to the stone jamb. It was a decisive proof that
the door had not been opened at least since Troy came
back to Weatherbury.
<C xxx>
<P 251>
HOT CHEEKS AND TEARFUL EYES
HALF an hour later Bathsheba entered her own house.
There burnt upon her face when she met the light of
the candles the flush and excitement which were little
less than chronic with her now. The farewell words of
Troy, who had accompanied her to the very door, still
lingered in her ears. He had bidden her adieu for two
days, which were so he stated, to be spent at Bath in
visiting some friends. He had also kissed her a second
time.
It is only fair to Bathsheba to explain here a little
fact which did not come to light till a long time after+
wards : that Troy's presentation of himself so aptly at
the roadside this evening was not by any distinctly pre+
concerted arrangement. He had hinted -- she had
forbidden; and it was only on the chance of his still
coming that she had dismissed Oak, fearing a meeting
between them just then.
She now sank down into a chair, wild and perturbed
by all these new and fevering sequences. Then she
jumped up with a manner of decision, and fetched her
desk from a side tahle.
In three minutes, without pause or modification, she
had written a letter to Boldwood, at his address beyond
Casterbridge, saying mildly but firmly that she had well
HOT CHEEKS AND TEARFUL EYES
considered the whole subject he had brought before her
and kindly given her time to decide upon; that her
final decision was that she could not marry him. She
had expressed to Oak an intention to wait till Boldwood
came home before communicating to him her conclusive
reply. But Bathsheba found that she could not wait.
It was impossible to send this letter till the next day;
yet to quell her uneasiness by getting it out of her hands,
and so, as it were, setting the act in motion at once, she
arose to take it to any one of the women who might be
in the kitchen.
<P 252>
She paused in the passage. A dialogue was going
on in the kitchen, and Bathsheba and Troy were the
subject of it.
"If he marry her, she'll gie up farming.'
"Twill be a gallant life, but may bring some trouble
between the mirth -- so say I.'
"Well, I wish I had half such a husband.'
Bathsheba had too much sense to mind seriously
what her servitors said about her ; but too much womanly
redundance of speech to leave alone what was said till
it died the natural death of unminded things. She
burst in upon them.
"Who are you speaking of? ' she asked.
There was a pause before anybody replied. At last
Liddy said frankly, ' What was passing was a bit of a
word about yourself, miss.'
"I thought so .! Maryann and Liddy and Temper+
ance -- now I forbid you to suppose such things. You
know I don't care the least for Mr. Troy -- not I. Every+
body knows how much I hate him. -- Yes,' repeated the
froward young person, "<1hate>1 him .! '
" We know you do, miss,' said Liddy; "and so do we
all.'
" I hate him too,' said Maryann.
" Maryann -- O you perjured woman !. How can you
speak that wicked story ! ' said Bathsheba, excitedly.
"You admired him from your heart only this morning
in the very world, you did. Yes, Maryann, you know it ! '
'Yes, miss, but so did you. He is a wild scamp
now, and you are right to hate him."
"He's <1not>1 a wild scamp.! How dare you to my face !.
I have no right to hate him, nor you, nor anybody.
But I am a silly woman.! What is it to me what he is ?
You know it is nothing. I don't care for him ; I don"t
mean to defend his good name, not I. Mind this, if
any of you say a word against him you'll be dismissed
instantly !. '
She flung down the letter and surged back into the
parlour, with a big heart and tearful eyes, Liddy following
her.
'O miss.!' said mild Liddy, looking pitifully into
Bathsheba's face. "I am sorry we mistook you so .!
did think you cared for him; but I see you don't now.'
" Shut the door, Liddy.'
<P 253>
Liddy closed the door, and went on : ' People always
say such foolery, miss. I'll make answer hencefor'ard,
"Of course a lady like Miss Everdene can't love him;'
I'll say it out in plain black and white.'
Bathsheba burst out : 'O Liddy, are you such a
simpleton ? Can't you read riddles ? Can't you see?
Are you a woman yourself ? '
Liddy's clear eyes rounded with wonderment.
' Yes; you must be a blind thing, Liddy .! ' she said,
in reckless abandonment and grief. "O, I love him
to very distraction and misery and agony .! Don't be
frightened at me, though perhaps I am enough to frighten
any innocent woman. Come closer -- closer.' She put
her arms round Liddy's neck. "I must let it out to
somebody; it is wearing me away !. Don't you yet know
enough of me to see through that miserable denial of
mine? O God, what a lie it was !. Heaven and my
Love forgive me. And don't you know that a woman
who loves at all thinks nothing of perjury when it is
HOT CHEEKS AND TEARFUL EYES
balanced against her love ? There, go out of the room ;
I want to be quite alone.'
Liddy went towards the door.
' Liddy, come here. Solemnly swear to me that he's
not a fast man; that it is all lies they say about him !.'
'Put, miss, how can I say he is not if --  -- '
"You graceless girl.! How can you have the cruel
heart to repeat what they say? Unfeeling thing that
you are.... But <1I'll>1 see if you or anybody else in the
village, or town either, dare do such a thing .! ' She
started off, pacing from fireplace to door, and back
again.
"No, miss. I don't -- I know it is not true !. ' said
Liddy, frightened at Bathsheba's unwonted vehemence.
I suppose you only agree with me like that to please
me. But, Liddy, he <1cannot be>1 had, as is said. Do you
hear? "
' Yes, miss, yes.'
"And you don't believe he is?"
'I don't know what to say, miss,' said Liddy, be+
ginning to cry. "If I say No, you don"t believe me;
and if I say Yes, you rage at me ! '
" Say you don't believe it -- say you don't ! '
<P 254>
'I don't believe him to be so had as they make out.'
"He is not had at all.... My poor life and heart,
how weak I am .! ' she moaned, in a relaxed, desultory
way, heedless of Liddy's presence. "O, how I wish I
had never seen him.! Loving is misery for women
always. I shall never forgive God for making me a
woman, and dearly am I beginning to pay for the honour
of owning a pretty face.' She freshened and turned to
Liddy suddenly. " Mind this, Lydia Smallbury, if you
repeat anywhere a single word of what l have said to
you inside this closed door, I'll never trust you, or love
you, or have you with me a moment longer -- not a
moment ! '
" I don't want to repeat anything,' said Liddy, with
womanly dignity of a diminutive order; "but I don't
wish to stay with you. And, if you please, I'll go at the
end of the harvest, or this week, or to-day.... I don't
see that I deserve to be put upon and stormed at for
nothing ! ' concluded the small woman, bigly.
" No, no, Liddy ; you must stay ! ' said Bathsheba,
dropping from haughtiness to entreaty with capricious
inconsequence. "You must not notice my being in a
taking just now. You are not as a servant -- -you are a
companion to me. Dear, dear -- I don't know what I
am doing since this miserable ache o'! my heart has
weighted and worn upon me so .! What shall I come
to ! I suppose I shall get further and further into
troubles. I wonder sometimes if I am doomed to die
in the Union. I am friendless enough, God knows .! '
'I won't notice anything, nor will I leave you ! " sobbed
Liddy, impulsively putting up her lips to Bathsheba's,
and kissing her.
Then Bathsheba kissed Liddy, and all was smooth
again.
"I don't often cry, do I, Lidd ? but you have made
tears come into my eyes,' she said, a smile shining
through the moisture. "Try to think him a good man,
won't you, dear Liddy ? '
"I will, miss, indeed.'
"He is a sort of steady man in a wild way, you know.
way. I am afraid that's how I am. And promise me
to keep my secret -- do, Liddy.! And do not let them
know that I have been crying
<P 255>
about him, because it will
be dreadful for me, and no good to him, poor thing .!'
"Death's head himself shan't wring it from me, mistress,
if I've a mind to keep anything; and I'll always be your
friend,' replied Liddy, emphatically, at the same time
bringing a few more tears into her own eyes, not from
any particular necessity, but from an artistic sense of
making herself in keeping with the remainder of the
HOT CHEEKS AND TEARFUL EYES
picture, which seems to influence women at such times.
"I think God likes us to be good friends, don't you ?'
"Indeed I do.'
"And, dear miss, you won"t harry me and storm at
me, will you ? because you seem to swell so tall as a
lion then, and it frightens me !. Do you know, I fancy
you would be a match for any man when you are in one
0' your takings.'
"Never.! do you ? ' said Bathsheba, slightly laughing,
though somewhat seriously alarmed by this Amazonian
picture of herself. "I hope I am not a bold sort of
maid -- mannish ? ' she continued with some anxiety.
"O no, not mannish; but so almighty womanish
that 'tis getting on that way sometimes. Ah ! miss,' she
said, after having drawn her breath very sadly in and
sent it very sadly out, "I wish I had half your failing
that way. 'Tis a great protection to a poor maid in
these illegit'mate days !. '
<C xxxi>
<P 256>
BLAME -- FURY
THE next evening Bathsheba, with the idea of getting
out of the way of Mr. Boldwood in the event of his
returning to answer her note in person, proceeded to
fulfil an engagement made with Liddy some few hours
earlier. Bathsheba's companion, as a gage of their
reconciliation, had heen granted a week's holiday to
visit her sister, who was married to a thriving hurdler
and cattle-crib-maker living in a delightful labyrinth of
hazel copse not far beyond Yalbury. The arrangement
was that Miss Everdene should honour them by coming
there for a day or two to inspect some ingenious con+
tnvances which this man of the woods had introduced
into his wares.
Leaving her instructions with Gabriel and Maryann,
that they were to see everything carefully locked up for
the night, she went out of the house just at the close of
a timely thunder-shower, which had refined the air, and
daintily bathed the coat of the land, though all beneath
was dry as ever. Freshness was exhaled in an essence
from the varied contours of bank and hollow, as if the
earth breathed maiden breath; and the pleased birds
were hymning to the scene. Before her, among the
clouds, there was a contrast in the shape of lairs of
fierce light which showed themselves in the neighbour+
hood of a hidden sun, lingering on to the farthest north+
west corner of the heavens that this midsummer season
allowed.
She had walked nearly two miles of her journey,
watching how the day was retreating, and thinking how
the time of deeds was quietly melting into the time of
thought, to give place in its turn to the time of prayer
and sleep, when she beheld advancing over Yalbury hill
the very man she sought so anxiously to elude. Boldwood
was stepping on, not with that quiet tread of reserved
strength which was his customary
<P 257>
gait, in which he
always seemed to be balancing two thoughts. His
manner was stunned and sluggish now.
Boldwood had for the first time been awakened to
woman's privileges in tergiversation even when it involves
another person's possible blight. That Bathsheba was
a firm and positive girl, far less inconsequent than her
fellows, had been the very lung of his hope ; for he had
held that these qualities would lead her to adhere to a
straight course for consistency's sake, and accept him,
though her fancy might not flood him with the iridescent
hues of uncritical love. But the argument now came
back as sorry gleams from a broken mirror. The dis+
covery was no less a scourge than a surprise.
He came on looking upon the ground, and did not
see Bathsheba till they were less than a stone's throw
apart. He looked up at the sound of her pit-pat, and
his changed appearance sufficiently denoted to her the
depth and strength of the feelings paralyzed by her
letter.
" Oh ; is it you, Mr. Boldwood ? ' she faltered, a guilty
warmth pulsing in her face.
Those who have the power of reproaching in silence
may find it a means more effective than words. There
are accents in the eye which are not on the tongue, and
more tales come from pale lips than can enter an ear.
It is both the grandeur and the pain of the remoter
moods that they avoid the pathway of sound. Bold+
wood's look was unanswerable.
Seeing she turned a little aside, he said, 'What, are
you afraid of me?'
" Why should you say that ? ' said Bathsheba.
"I fancied you looked so,' said he. 'And it is most
strange, because of its contrast with my feeling for you.
She regained self-possession, fixed her eyes calmly,
and waited.
" You know what that feeling is,' continued Boldwood,
deliberately. "A thing strong as death. No dismissal
by a hasty letter affects that.'
'I wish you did not feel so strongly about me,' she
murmured. "It is generous of you, and more than I
deserve, but I must not hear it now.'
<P 258>
"Hear it? What do you think I have to say, then ?
I am not to marry you, and thats enough. Your letter
was excellently plain. I want you to hear nothing --
not I.'
Bathsheba was unable to direct her will into any
definite groove for freeing herself from this fearfully
and was moving on. Boldwood walked up to her heavily
and dully.
"Bathsheba -- -darling -- -is it final indeed?'
"Indeed it is.'
"O, Bathsheba -- -have pity upon me!' Boldwood
burst out. "God's sake, yes -- I am come to that low,
lowest stage -- -to ask a woman for pity! Still, she is
you -- -she is you.'
Bathsheba commanded herself well. But she could
hardly get a clear voice for what came instinctively to
her lips: "There is little honour to the woman in that
speech.' It was only whispered, for something unutter+
ably mournful no less than distressing in this spectacle
of a man showing himself to be so entirely the vane of a
passion enervated the feminine instinct for punctilios.
BLAME
"I am beyond myself about this, and am mad,' he
said. "I am no stoic at all to he supplicating here ; but
I do supplicate to you. I wish you knew what is in
me of devotion to you ; but it is impossible, that. In
bare human mercy to a lonely man, don't throw me off
now !'
'I don't throw you off -- indeed, how can I ? I never
had you.' In her noon-clear sense that she had never
loved him she forgot for a moment her thoughtless angle
on that day in February.
'But there was a time when you turned to me,
before I thought of you ! I don't reproach you, for
even now I feel that the ignorant and cold darkness
that I should have lived in if you had not attracted me
by that letter -- valentine you call it -- would have becn
worse than my knowledge of you, though it has brought
this misery. But, I say, there was a time when I knew
nothing of you, and cared nothing for you, and yet you
drew me on. And if you say you gave me no en+
couragement, I cannot but contradict you.'
<P 259>
"What you call encouragement was the childish
game of an idle minute. I have bitterly repented of it
 -- ay, bitterly, and in tears. Can you still go on re+
minding me ?'
'I don't accuse you of it -- I deplore it. I took for
earnest what you insist was jest, and now this that I
pray to be jest you say is awful, wretched earnest. Our
moods meet at wrong places. I wish your feeling was
more like mine, or my feeling more like yours.! O,
could I but have foreseen the torture that trifling trick
was going to lead me into, how I should have cursed
you ; but only having been able to see it since, I cannot
do that, for I love you too well.! But it is weak, idle
drivelling to go on like this.... Bathsheba, you are
the first woman of any shade or nature that I have ever
looked at to love, and it is the having been so near
claiming you for my own that makes this denial so hard
to bear. How nearly you promised me ! But I don't
speak now to move your heart, and make you grieve
because of my pain ; it is no use, that. I must bear it;
my pain would get no less by paining you.'
"But I do pity you -- deeply -- O so deeply .!' she
earnestly said.
"Do no such thing -- do no such thing. Your dear
love, Bathsheba, is such a vast thing beside your pity,
that the loss of your pity as well as your love is no great
addition to my sorrow, nor does the gain of your pity
make it sensibly less. O sweet -- how dearly you
spoke to me behind the spear-bed at the washing-pool,
and in the barn at the shearing, and that dearest last
time in the evening at your home.! Where are your
pleasant words all gone -- your earnest hope to be able
to love me? Where is your firm conviction that you
would get to care for me very much ? Really forgotten ?
 -- really ? '
She checked emotion, looked him quietly and clearly
in the face, and said in her low, firm voice, " Mr. Bold+
wood, I promised you nothing. Would you have had
me a woman of clay when you paid me that furthest,
highest compliment a man can pay a woman -- telling
her he loves her? I was bound to show some feeling,
if l would not be a graceless shrew. Yet each of those
pleasures was just for the day -- the day just for the
<P 260>
pleasure. How was I to know that what is a pastime
to all other men was death to you ? Have reason, do,
and think more kindly of me !'
'Well, never mind arguing -- never mind. One
thing is sure: you were all but mine, and now you are
not nearly mine. Everything is changed, and that by
you alone, remember. You were nothing to me once,
and I was contented; you are now nothing to me again,
and how different the second nothing is from the first .!
Would to God you had never taken me up, since it was
only to throw me down .! '
FURY
Bathsheba, in spite of her mettle, began to feel un+
mistakable signs that she was inherently the weaker
vessel. She strove miserably against this feminity
which would insist upon supplying unbidden emotions
in stronger and stronger current. She had tried to
elude agitation by fixing her mind on the trees, sky, any
trivial object before her eyes, whilst his reproaches fell,
but ingenuity could not save her now.
"I did not take you up -- -surely I did not!' she
answered as heroically as she could. " But don't be in
this mood with me. I can endure being told I am in
the wrong, if you will only tell it me gently! O sir,
will you not kindly forgive me, and look at it
cheerfully ? '
"Cheerfully! Can a man fooled to utter heart+
burning find a reason for being merry> If I have lost,
how can I be as if I had won? Heavens you must be
heartless quite ! Had I known what a fearfully bitter
sweet this was to be, how would I have avoided you,
and never seen you, and been deaf of you. I tell you
all this, but what do you care! You don't care.'
She returned silent and weak denials to his charges,
and swayed her head desperately, as if to thrust away
the words as they came showering ahout her ears from
the lips of the trembling man in the climax of life, with
his bronzed Roman face and fine frame.
"Dearest, dearest, I am wavering even now between
the two opposites of recklessly renouncing you, and
labouring humbly for you again. Forget that you have
said No, and let it be as it was !. Say, Bathsheba, that
you only wrote that refusal to me in fun -- -come, say it
to me!'
<P 261>
" It would be untrue, and painful to both of us. You
overrate my capacity for love. I don't possess half
the warmth of nature you believe me to have. An un+
protected childhood in a cold world has beaten gentle+
ness out of me.'
He immediately said with more resentment: "That
may be true, somewhat ; but ah, Miss Everdene, it won't
do as a reason! You are not the cold woman you
would have me believe. No, no .! It isn't because you
have no feeling in you that you don't love me. You
naturally would have me think so -- -you would hide from
that you have a burning heart like mine. You have
love enough, but it is turned into a new channel. I
know where.'
The swift music of her heart became hubbub now,
and she throbbed to extremity. He was coming to
Troy. He did then know what had occurred .! And
the name fell from his lips the next moment.
"Why did Troy not leave my treasure alone?' he
asked, fiercely. "When I had no thought of injuring
him, why did he force himself upon your notice.!
Before he worried you your inclination was to have me;
when next I should have come to you your answer
would have been Yes. Can you deny it -- -I ask, can
you deny it?'
She delayed the reply, but was to honest to with
hold it. ' I cannot,' she whispered.
"I know you cannot. But he stole in in my absence
and robbed me. Why did't he win you away before,
when nobody would have been grieved? -- -when nobody
would have been set tale-bearing. Now the people
sneer at me -- -the very hills and sky seem to laugh at
me till I blush shamefuly for my folly. I have lost my
respect, my good name, my standing -- -lost it, never to
get it again. Go and marry your man -- go on .! '
"O sir -- -Mr. Boldwood!'
" You may as well. I have no further claim upon you.
As for me, I had better go somewhere alone, and hide --
and pray. I loved a woman once. I am now ashamed.
When I am dead they'll say, Miserable love-sick man
that he was. Heaven -- -heaven -- -if I had got jilted
secretly, and the dishonour not known, and my position
FURY
kept.! But no matter, it is
<P 262>
gone, and the woman not
gained. Shame upon him -- shame .! '
His unreasonable anger terrified her, and she glided
from him, without obviously moving, as she said, "I am
only a girl -- do not speak to me so.!'
"All the time you knew -- how very well you knew --
that your new freak was my misery. Dazzled by brass
and scarlet -- O, Bathsheba -- this is woman's folly
indeed .! '
She fired up at once. "You are taking too much
upon yourself .! ' she said, veheniently. " Everybody is
upon me  -- everybody. It is unmanly to attack a
woman so ! I have nobody in the world to fight my
battles for me; but no mercy is shown. Yet if a
thousand of you sneer and say things against me, I <1will>1
<1not>1 be put down !."
" You'll chatter with him doubtless about me. Say to
him, "Boldwood would have died for me.' Yes, and
you have given way to him, knowing him to be not the
man for you. He has kissed you -- claimed you as his.
Do you hear -- he has kissed you. Deny it .! '
The most tragic woman is cowed by a tragic man,
and although Boldwood was, in vehemence and glow,
nearly her own self rendered into another sex,
Bathsheba's cheek quivered. She gasped, ' Leave me,
sir -- leave me !. I am nothing to you. Let me go on !.'
"Deny that he has kissed you.'
"I shall not.'
" Ha -- then he has ! ' came hoarsely from the farmer.
"He has," she said, slowly, and, in spite of her fear,
defiantly. 'I am not ashamed to speak the truth.'
"Then curse him; and curse him !. ' said Boldwood,
breaking into a whispered fury. ' Whilst I would have
given worlds to touch your hand, you have let a rake come
in without right or ceremony and -- kiss you .! Heaven's
mercy -- kiss you ! ... Ah, a time of his life shall come
when he will have to repent, and think wretchedly of
the pain he has caused another man ; and then may he
ache, and wish, and curse, and yearn -- as I do now .! "
'Don't, don't, O, don't pray down evil upon him.! '
she
<P 263>
implored in a miserable cry. "Anything but that --
anything. O, be kind to him, sir, for I love him true .'
Boldwood's ideas had reached that point of fusion at
which outline and consistency entirely disappear. The
impending night appeared to concentrate in his eye.
He did not hear her at all now.
"I'll punish him -- -by my soul, that will I.! I'll meet
him, soldier or no, and I'll horsewhip the untimely
stripling for this reckless theft of my one delight. If he
were a hundred men I'd horsewhip him --  -- ' He
dropped his voice suddenly and unnaturally. "Bath+
sheba, sweet, lost coquette, pardon me .! I've been
blaming you, threatening you, behaving like a churl to
you, when he's the greatest sinner. He stole your dear
heart away with his unfathomable lies.! ... lt is a
fortunate thing for him that he's gone back to his
regiment -- -that he's away up the country, and not here!
I hope he may not return here just yet. I pray God
he may not come into my sight, for I may be tempted
beyond myself. O, Bathsheba, keep him away -- yes,
keep him away from me.!"
For a moment Boldwood stood so inertly after this
that his soul seemed to have been entirely exhaled with
the breath of his passionate words. He turned his face
away, and withdrew, and his form was soon covered over
by the twilight as his footsteps mixed in with the low
hiss of the leafy trees.
Bathsheba, who had been standing motionless as a
model all this latter time, flung her hands to her face,
and wildly attempted to ponder on the exhibition which
had just passed away. Such astounding wells of fevered
feeling in a still man like Mr. Boldwood were incompre+
hensible, dreadful. Instead of being a man trained to
repression he was -- what she had seen him.
The force of the farmer's threats lay in their relation to a
circumstance known at present only to herself: her lover was
coming back to Weatherby in the course of the very next
day or two. Troy had not returned to his distant barracks as
Boldwood and others supposed, but had merely gone to visit
<P 264>
some acquaintance in Bath, and had yet a wek or more
remaining to his furlough.
 She felt wretchedly certain that if he revisited her just at
this nick of time, and came into contact with Boldwood,a
fierce quarrel would be the consequence. She panted with
solicitude when she thought of possible injury to Troy. The
least spark would kindle the farmer's swift feelings of rage
and jealousy; he would lose his self-mastery as he had this
evening; Troy's blitheness might become aggressive; it might
take the direction of derision, and Boldwood's anger might
then take the direction of revenge.
 With almost a morbid dread of being thought a gushing
girl, this guideless woman too well concealed from the world
under a manner of carelessness the warm depths of her strong
emotions. But now there was no reserve. In fer
 
her distraction,instead of advancing further she
walked up and down,beating
the air with her fingers,pressing on her brow, and sobbing
brokenly to herself. Then she sat down on a heap of stones by
the wayside to think. There she remained long. Above the
dark margin of the earth appeared foreshores and promontor+
ies of coppery cloud,bounding a green and pellucid expanse
in the western sky. Amaranthine glosses came over them then,
and the unresting world wheeled her round to a contrasting
prospect eastward, in the shape of indecisive and palpitating
stars. She gazed upon their silent throes amid the shades of
space, but realised none at all. Her troubled spirit was far
away with Troy.
<C xxxii>
<P 265>
NIGHT -- HORSES TRAMPING
THE village of Weatherbury was quiet as the graveyard
in its midst, and the living were lying welinigh as still
as the dead. The church clock struck eleven. The
air was so empty of other sounds that the whirr of the
clock-work immediately before the strokes was distinct,
and so was also the click of the same at their close.
The notes flew forth with the usual blind obtuseness
of inanimate things -- flapping and rebounding among
walls, undulating against the scattered clouds, spreading
through their interstices into unexplored miles of space.
Bathsheba's crannied and mouldy halls were to-night
occupied only by Maryann, Liddy being, as was stated,
with her sister, whom Bathsheba had set out to visit.
A few minutes after eleven had struck, Maryann turned
in her bed with a sense of being disturbed. She was
totally unconscious of the nature of the interruption to
her sleep. It led to a dream, and the dream to an
awakening, with an uneasy sensation that something
had happened. She left her bed and looked out of
the window. The paddock abutted on this end of the
building, and in the paddock she could just discern by
the uncertain gray a moving figure approaching the
horse that was feeding there. The figure seized the
horse by the forelock, and led it to the corner of the
field. Here she could see some object which circum+
stances proved to be a vehicle for after a few minutes
the horse down the road, mingled with the sound of
light wheels.
Two varieties only of humanity could have entered
the paddock with the ghostiike glide of that mysterious
figure. They were a woman and a gipsy man. A woman
was out of the question in such an occupation at this
hour, and the comer could be no less than a thief, who
might probably have known the weakness of the house+
hold on this particular night, and have
<P 266>
chosen it on
that account for his daring attempt. Moreover, to
raise suspicion to conviction itself, there were gipsies in !
Weatherbury Bottom.
Maryann, who had been afraid to shout in the robber's
presence, having seen him depart had no fear. She
hastily slipped on her clothes, stumped down the dis+
jointed staircase with its hundred creaks, ran to Coggan's,
the nearest house, and raised an alarm. Coggan called
Gabriel, who now again lodged in his house as at first,
and together they went to the paddock. Beyond all
doubt the horse was gone.
" Hark .! ' said Gabriel.
They listened. Distinct upon the stagnant air came
the sounds of a trotting horse passing up Longpuddle
Lane -- just beyond the gipsies' encampment in Weather+
bury Bottom.
" That's our Dainty-i'll swear to her step,' said Jan.
" Mighty me ! Won't mis'ess storm and call us stupids
wen she comes back ! ' moaned Maryann. "How I
wish it had happened when she was at home, and none
of us had been answerable .! '
" We must ride after,' said Gabriel, decisively.
be responsible to Miss Everdene for what we do. Yes,
we'll follow. '
" Faith, I don't see how,' said Coggan. " All our
horses are too heavy for that trick except little Poppet,
and what's she between two of us?-if we only had that
" pair over the hedge we might do something.'
'Which pair ? '
'Mr Boldwood's Tidy and Moll.'
" Then wait here till I come hither again,' said Gabriel.
He ran down the hill towards Farmer Boldwood's.
" Farmer Boldwood is not at home,' said Maryann.
",All the better,' said Coggan. "I know what he's
gone for.'
Less than five minutes brought up Oak again, running
at the same pace, with two halters dangling from his hand,
"Where did you find 'em ?" said Coggan, turning
round and leaping upon the hedge without waiting for
an answer.
"Under the eaves. I knew where they were kept,'
said Gabriel, following him. "Coggan, you can ride
bare-backed ? there's no time to look for saddles.'
<P 267>
" Like a hero .! ' said Jan.
'Maryann, you go to hed,' Gabriel shouted to her
from the top of the hedge.
Springing down into Boldwood's pastures, each
pocketed his halter to hide it from the horses, who,
seeing the men empty-handed, docilely allowed them+
selves to he seized by the mane, when the halters
were dexterously slipped on. Having neither bit nor
bridle, Oak and Coggan extemporized the former by
passing the rope in each case through the animal's
mouth and looping it on the other side. Oak vaulted
astride, and Coggan clambered up by aid of the hank,
when they ascended to the gate and galloped off in the
direction taken by Bathsheha's horse and the robber.
Whose vehicle the horse had been harnessed to was a
matter of some uncertainty.
Weatherbury Bottom was reached in three or four
minutes. They scanned the shady green patch by the
roadside. The gipsies were gone.
"The villains .! ' said Gabriel. 'Which way have they
gone, I wonder ? '
'Straight on, as sure as God made little apples,'
said Jan.
" Very well; we are better mounted, and must over+
discovered. The road-metal grew softer and more
rain had wetted its surface to a somewhat plastic, but
not muddy state. They came to cross-roads. Coggan
suddenly pulled up Moll and slipped off.
" What"s the matter ? ' said Gabriel.
"We must try to track 'em, since we can't hear 'em,'
said Jan, fumbling in his pockets. He struck a light,
and held the match to the ground. The rain had been
heavier here, and all foot and horse tracks made previous
to the storm had been abraded and blurred by the drops,
and they were now so many little scoops of water, which
reflected the flame of the match like eyes. One set of
tracks was fresh and had no water in them; one pair of
ruts was also empty, and not small canals, like the cthers.
The footprints forming this recent impression were full
<P 268>
of information as to pace ; they were in equidistant pairs,
three or four feet apart, the right and left foot of each
pair being exactly opposite one another.
"Straight on !. ' Jan exclaimed. "Tracks like that
mean a stiff gallop. No wonder we don't hear him.
And the horse is harnessed-iook at the ruts. Ay,
'How do you know ?'
"Old Jimmy Harris only shoed her last week, and
I'd swear to his make among ten thousand.'
"The rest of the gipsies must ha" gone on earlier,
or some other way,' said Oak. " 'You saw there were
no other tracks ? '
"True.' They rode along silently for a long weary
time. Coggan carried an old pinchbeck repeater which
he had inherited from some genius in his family; and
it now struck one. He lighted another match, and ex+
amined the ground again.
"'Tis a canter now,' he said, throwing away the light.
'A twisty', rickety pace for a gig. The fact is, they over+
drove her at starting ; we shall catch "em yet.'
Again they hastened on, and entered Blackmore
Vale. Coggan's watch struck one. When they looked
again the hoof-marks were so spaced as to form a sort
of zigzag if united, like the lamps along a street.
" That's a trot, I know,' said Gabriel.
"Only a trot now,' said Coggan, cheerfully. "We
shall overtake him in time.'
They pushed rapidly on for yet two or three miles.
"Ah .! a moment,' said Jan. 'Let's see how she was
driven up this hill. "Twill help us,' A light was
promptly struck upon his gaiters as before, and the ex+
amination made,
" Hurrah .! ' said Coggan. "She walked up here --
and well she might. We shall get them in two miles,
for a crown.'
They rode three, and listened. No sound was to be
heard save a milipond trickling hoarsely through a
hatch, and suggesting gloomy possibilities of drowning
by juraping in. Gabriel dismounted when they came
to a turning. The tracks were ahsolutely the only guide
as to the direction that they now had, and great caution
was necessary to avoid confusing them
<P 269>
with some others
which had made their appearance lately.
"What does this mean ? -- though I guess,' said
Gabriel, looking up at Coggan as he moved the match
over the ground about the turning. Coggan, who, no
less than the panting horses, had latterly shown signs
of weariness, again scrutinized the mystic characters.
This time only three were of the regular horseshoe
shape. Every fourth was a dot.
HORSES TRAMPING
He screwed up his face and emitted a long
" whew-w-w !. '
" Lame,' said Oak.
" Yes Dainty is lamed ; the near-foot-afore,' said
Coggan slowly staring still at the footprints.
" We'll push on,' said Gabriel, remounting his humid
steed.
Although the road along its greater part had been as
good as any turnpike-road in the country, it was nomin+
ally only a byway. The last turning had brought them
into the high road leading to Bath. Coggan recollected
himself.
"We shall have him now ! ' he exclaimed.
" Where ? "
' Sherton Turnpike. The keeper of that gate is the
sleepiest man between here and London -- Dan Randall.
that's his name -- knowed en for years, when he was at
Casterbridge gate. Between the lameness and the gate
'tis a done job.'
was said until, against a shady background of foliage,
five white bars were visible, crossing their route a little
way ahead.
" Hush -- we are almost close !. ' said Gabriel.
"Amble on upon the grass,' said Coggan.
The white bars were blotted out in the midst by a
dark shape in front of them. The silence of this lonely
time was pierced by an exclamation from that quarter.
" Hoy-a-hoy ! Gate .! '
It appeared that there had been a previous call which
they had not noticed, for on their close approach the
door of the turnpike-house opened, and the keeper
came out half-dressed, with a candle in his hand. The
rays illumined the whole group.
" Keep the gate close .! ' shouted Gabriel. " He has
stolen the horse !. '
<P 270>
" Who ? ' said the turnpike-man.
Gabriel looked at the driver of the gig, and saw a
woman -- Bathsheba, his mistress.
On hearing his voice she had turned her face away
from the light. Coggan had, however, caught sight of
her in the meanwhile.
"Why, 'tis mistress-i'll take my oath .! ' he said,
amazed.
Bathsheba it certainly was, and she had by this time
done the trick she could do so well in crises not of love,
namely, mask a surprise by coolness of manner.
' Well, Gabriel,' she inquired quietly, ' where are you
going ? '
' We thought --  -- ' began Gabriel.
Bath,' she said, taking for her own
use the assurance that Gahriel lacked. 'An important
matter made it necessary for me to give up my visit to
liddy, and go off at once. What, then, were you
following me ?'
' We thought the horse was stole.'
" Weli-what a thing .! How very foolish of you not
to know that I had taken the trap and horse. I could
neither wake Maryann nor get into the house, though
I hammered for ten minutes against her window-sill.
Fortunately, I could get the key of the coach-house, so
I troubled no one further. Didn't you think it might
be me?"
' Why should we, miss ? '
" Perhaps not Why, those are never Farmer Bold+
wood's horses .! Goodness mercy .! what have you been
" doing bringing trouble upon me in this way? What.!
mustn't a lady move an inch from her door without being
dogged like a thief?'
'But how was we to know, if you left no account of
your doings ? ' expostulated Coggan, "and ladies don't
" drive at these hours, miss, as a jineral rule of society.'
"I did leave an account -- and you would have seen
it in the morning. I wrote in chalk on the coach-house
doors that I had come back for the horse and gig, and
driven off; that I could arouse nobody, and should
return soon.'
" But you'll consider, ma'am, that we couldn't see
that till it got daylight.'
'True,' she said, and though vexed at first she had
too much
<P 271>
sense to blame them long or seriously for a
devotion to her that was as valuable as it was rare.
She added with a very pretty grace, ' Well, I really thank
you heartily for taking all this trouble; but I wish you
had borrowed anybody's horses but Mr. Boldwood's.'
'Dainty is lame, miss,' said Coggan. 'Can ye go
on?'
'lt was only a stone in her shoe. I got down and
pulled it out a hundred yards back. I can manage
very well, thank you. I shall be in Bath by daylight.
Will you now return, please?'
She turned her head -- the gateman's candle
shimmering upon her quick, clear eyes as she did so --
passed through the gate, and was soon wrapped in the
embowering shades of mysterious summer boughs.
Coggan and Gabriel put about their horses, and, fanned
by the velvety air of this July night, retraced the road
by which they had come.
'A strange vagary, this of hers, isn't it, Oak?' said
Coggan, curiously.
'Yes,' said Gabriel, shortly.
'She won't be in Bath by no daylight!.'
'Coggan, suppose we keep this night's work as quiet
as we can?'
'I am of one and the same mind.'
'Very well. We shall be home by three o'clock or
so, and can creep into the parish like lambs.'
Bathsheba's perturbed meditations by the roadside
had ultimately evolved a conclusion that there were only
two remedies for the present desperate state of affairs.
The first was merely to keep Troy away from Weather+
bury till Boldwood's indignation had cooled; the second
to listen to Oak's entreaties, and Boldwood's denuncia+
tions, and give up Troy altogether.
Alas! Could she give up this new love -- induce
him to renounce her by saying she did not like him --
could no more speak to him, and beg him, for her good,
to end his furlough in Bath, and see her and Weather'
bury no niore?
It was a picture full of misery, but for a while she
contemplated it firmly, allowing herself, nevertheless,
as girls will, to
<P 272>
dwell upon the happy life she would
have enjoyed had Troy been Boldwood, and the path
of love the path of duty -- inflicting upon herself gratuit+
ous tortures by imagining him the lover of another
woman after forgetting her; for she had penetrated
Troy's nature so far as to estimate his tendencies pretty
accurately, hut unfortunately loved him no less in
thinking that he might soon cease to love her -- indeed,
considerably more.
She jumped to her feet. She would see him at once.
Yes, she would implore him by word of mouth to assist
her in this dilemma. A letter to keep him away could
not reach him in time, even if he should be disposed to
listen to it.
Was Bathsheba altogether blind to the obvious fact
that the support of a lover's arms is not of a kind best
calculated to assist a resolve to renounce him? Or was
she sophistically sensible, with a thrill of pleasure, that
by adopting this course for getting rid of him she was
ensuring a meeting with him, at any rate, once more?
It was now dark, and the hour must have been nearly
ten. The only way to accomplish her purpose was to
give up her idea of visiting Liddy at Yalbury, return to
Weatherbury Farm, put the horse into the gig, and drive
at once to Bath. The scheme seemed at first impossible :
the journey was a fearfully heavy one, even for a strong
horse, at her own estimate; and she much underrated
the distance. It was most venturesome for a woman,
at night, and alone.
But could she go on to Liddy's and leave things to
take their course? No, no; anything but that. Bath+
sheba was full of a stimulating turbulence, beside which
caution vainly' prayed for a hearing. she turned back
towards the village.
Her walk was slow, for she wished not to enter
Weatherbury till the cottagers were in bed, and, par+
ticularly, till Boldwood was secure. Her plan was now
to drive to Bath during the night, see Sergeant 'Troy in
the morning before he set out to come to her, bid him
farewell, and dismiss him: then to rest the horse
thoroughly (herself to weep the while, she thought),
starting early the next morning on her return journey.
By this arrangement she could trot Dainty gently all
the day, reach
<P 273>
Liddy at Yalbury in the evening, and
come home to Weatherbury with her whenever they
chose -- so nobody would know she had been to Bath
at all.
Such was Bathsheba's scheme. But in her topo+
graphical ignorance as a late comer to the place, slie
misreckoned the distance of her journey as not much
more than half what it really was. Her idea, however,
she proceeded to carry out, with what initial success we
have already seen.
<C xxxiii>
<P 274>
IN THE SUN -- A HARBINGER
A WEEK passed, and there were no tidings of Bath+
sheba; nor was there any explanation of her Gilpin's
rig.
Then a note came for Maryann, stating that the
business which had called her mistress to Bath still
detained her there; but that she hoped to return
in the course of another week.
Another week passed. The oat-harvest began, and
all the men were a-field under a monochromatic Lammas
sky, amid the trembling air and short shadows of noon.
Indoors nothing was to be heard save the droning of
blue-bottle flies; out-of-doors the whetting of scythes
and the hiss of tressy oat-ears rubbing together as their
perpendicular stalks of amber-yellow fell heavily to each
swath. Every drop of moisture not in the men's bottles
and flagons in the form of cider was raining as perspira+
tion from their foreheads and cheeks. Drought was
everywhere else.
They were about to withdraw for a while into the
charitable shade of a tree in the fence, when Coggan
saw a figure in a blue coat and brass buttons running
to them across the field.
'I wonder who that is?' he said.
'I hope nothing is wrong about mistress,' said
Maryann, who with some other women was tying the
bundles (oats being always sheafed on this farm), 'but
an unlucky token came to me indoors this morning.
l went to unlock the door and dropped the key, and it
fell upon the stone floor and broke into two pieces.
Breaking a key is a dreadful bodement. I wish mis'ess
was home.'
''Tis Cain Ball,' said Gabriel, pausing from whetting
his reaphook.
Oak was not bound by his agreement to assist in the
corn-field; but the harvest month is an anxious time for
<P 275>
a farmer, and the corn was Bathsheba's, so he lent a
hand.
'He's dressed up in his best clothes,' said Matthew
Moon. 'He hev been away from home for a few days,
since he's had that felon upon his finger; for 'a said,
since I can't work I'll have a hollerday.'
  'A good time for one -- a" excellent time,' said Joseph
Poorgrass, straightening his back; for he, like some of
the others, had a way of resting a while from his labour
on such hot days for reasons preternaturally small; of
which Cain Pall's advent on a week-day in his Sunday+
clothes was one of the first magnitude. ''Twas a bad leg
allowed me to read the Pilgrim's Progress, and Mark
Clark learnt AliFours in a whitlow.'
'Ay, and my father put his arm out of joint to have
time to go courting,' said Jan Coggan, in an eclipsing
tone, wiping his face with his shirt-sleeve and thrusting
back his hat upon the nape of his neck.
By this time Cainy was nearing the group of harvesters,
and was perceived to be carrying a large slice of bread
and ham in one hand, from which he took mouthfuls
as he ran, the other being wrapped in a bandage.
When he came close, his mouth assumed the bell shape,
and he began to cough violently.
   'Now, Cainy!.' said Gabriel, sternly.  'How many
more times must I tell you to keep from running so fast
when you be eating? You'll choke yourself some day,
that's what you'll do, Cain Ball.'
 'Hok-hok-hok.!  'replied Cain. 'A crumb of my
victuals went the wrong way -- hok-hok!, That's what
'tis, Mister Oak.! And I've been visiting to Bath
because I had a felon on my thumb; yes, and l've
seen -- ahok-hok!'
Directly Cain mentioned Bath, they all threw down
their hooks and forks and drew round him. Un+
fortunately the erratic crumb did not improve his
narrative powers, and a supplementary hindrance was
that of a sneeze, jerking from his pocket his rather large
watch, which dangled in front of the young man
pendulum-wise.
<P 276>
 'Yes,' he continued, directing his thoughts to Bath
and letting his eyes follow, 'l've seed the world at last
 -- yes -- and I've seed our mis'ess -- ahok-hok-hok ! '
' Bother the boy! ' said Gabriel. ' Something is
always going the wrong way down your throat, so that
you can't tell what's necessary to be told.'
"Ahok !. there ! Please, Mister Oak, a gnat have
just fleed into my stomach and brought the cough on
again !. '
'Yes, that's just it. Your mouth is always open, you
young rascal .! '
''Tis terrible bad to have a gnat fly down yer throat,
pore boy !. ' said Matthew Moon.
' Well, at Bath you saw --  -- ' prompted Gabriel.
'I saw our mistress,' continued the junior shepherd,
'and a sojer, walking along. And bymeby they got
closer and closer, and then they went arm-in-crook, like
courting complete -- hok-hok ! like courting complete --
hok .! -- courting complete --  -- " Losing the thread of his
narrative at this point simultaneously with his loss of
breath, their informant looked up and down the field
apparently for some clue to it. 'Well, I see our mis'ess
and a soldier -- a-ha-a-wk .! '
A HARBlNGER
!Damn the boy !' said Gabriel.
!'Tis only my manner, Mister Oak, if ye'll excuse it,'
said Cain Ball, looking reproachfully at Oak, with eyes
drenched in their own dew.
!Here's some cider for him -- that'll cure his throat,'
said Jan Coggan, lifting a flagon of cider, pulling out
the cork, and applying the hole to Cainy's mouth;
Joseph Poorgrass in the meantime beginning to think
apprehensively of the serious consequences that would
follow Cainy Ball's strangulation in his cough, and the
history of his Bath adventures dying with him.
"For my poor self, I always say "please God ' afore
I do anything,' said Joseph, in an unboastful voice ; " and
so should you, Cain Ball. "Tis a great safeguard, and
might perhaps save you from being choked to death
some day.'
Mr. Coggan poured the liquor with unstinted liber+
ality at the suffering Cain's circular mouth; half of it
running down the
<P 277>
side of the flagon, and half of what
reached his mouth running down outside his throat,
and half of what ran in going the wrong way, and being
coughed and sneezed around the persons of the gathered
reapers in the form of a cider fog, which for a moment
hung in the sunny air like a small exhalation.
"There's a great clumsy sneeze ! Why can't ye have
better manners, you young dog ! ' said Coggan, with+
drawing the flagon.
"The cider went up my nose ! ' cried Cainy, as soon
as he could speak; "and now 'tis gone down my neck,
and into my poor dumb felon, and over my shiny
buttons and all my best cloze ! '
"The poor lad's cough is terrible onfortunate,' said
Matthew Moon. 'And a great history on hand, too.
Bump his back, shepherd.'
"'Tis my nater,' mourned Cain. "Mother says I
always was so excitable when my feelings were worked
up to a point!'
" True, true,' said Joseph Poorgrass. "The Balls
were always a very excitable family. I knowed the
boy's grandfather -- a truly nervous and modest man,
even to genteel refinery. 'Twas blush, blush with him,
almost as much as 'tis with me -- not but that 'tis a
fault in me !'
"Not at all, Master Poorgrass,' said Coggan. " 'Tis
a very noble quality in ye.'
"Heh-heh ! well, I wish to noise nothing abroad --
nothing at all,' murmured Poorgrass, diffidently. " But
we be born to things -- that's true. Yet I would rather
my trifle were hid ; though, perhaps, a high nater is a
little high, and at my birth all things were possible to
my Maker, and he may have begrudged no gifts....
But under your bushel, Joseph ! under your bushel with
'ee ! A strange desire, neighbours, this desire to hide,
and no praise due. Yet there is a Sermon on the
Mount with a calendar of the blessed at the head, and
certain meek men may be named therein.'
"Cainy's grandfather was a very clever man,' said
Matthew Moon. "Invented a' apple-tree out of his own
head, which is called by his name to this day -- the Early
Ball. You know 'em,
<P 278>
Jan ? A Quarrenden grafted on
a Tom Putt, and a Rathe-ripe upon top o' that again.
'Tis trew 'a used to bide about in a public-house wi' a
'ooman in a way he had no business to by rights, but
there -- 'a were a clever man in the sense of the term.'
" Now then,' said Gabriel, impatiently, " what did you
see, Cain ? '
"I seed our mis'ess go into a sort of a park place,
where there's seats, and shrubs and flowers, arm-in-crook
with a sojer,' continued Cainy, firmly, and with a dim
sense that his words were very effective as regarded
Gabriel's emotions. "And I think the sojer was
Sergeant Troy. And they sat there together for more
than half-an-hour, talking moving things, and she once
was crying a'most to death. And when they came out
her eyes were shining and she was as white as a lily;
and they looked into one another's faces, as far-gone
friendly as a man and woman can be.'
Gabriel's features seemed to get thinner. " Well,
what did you see besides ? '
" Oh, all sorts."
"White as a lily? You are sure 'twas she?
" Yes."
" Well, what besides ? '
"Great glass windows to the shops, and great clouds
in the sky, full of rain, and old wooden trees in the
country round.'
" You stun-poll! What will ye say next?' said
Coggan.
" Let en alone,' interposed Joseph Poorgrass. "The
boy's maning is that the sky and the earth in the
kingdom of Bath is not altogether different from ours
here. 'Tis for our good to gain knowledge of strange
cities, and as such the boy's words should be suffered,
so to speak it.'
" And the people of Bath,' continued Cain, "never
need to light their fires except as a luxury, for the
water springs up out of the earth ready boiled for
use.'
" 'Tis true as the light,' testified Matthew Moon. ' I've
heard other navigators say the same thing.'
" They drink nothing else there,' said Cain, ' and seem
to enjoy it, to see how they swaller it down.'
<P 279>
"Well, it seems a barbarian practice enough to us,
but I daresay the natives think nothing o' it,' said
Matthew.
"And don't victuals spring up as well as drink?'
asked Coggan, twirling his eye.
"No-i own to a blot there in Bath -- a true blot.
God didn't proride 'em with victuals as well as (+
and 'twas a drawback I couldn't get over at all.'
" Well, 'tis a curious place, to say the least,' observed
Moon; "and it must be a curious people that live
therein. '
"Miss Everdene and the soldier were walking about
together, you say ? ' said Gabriel, returning to the
group.
"Ay, and she wore a beautiful gold-colour silk
gown, trimmed with black lace, that would have stood
alone 'ithout legs inside if required. 'Twas a very
winsome sight; and her hair was brushed splendid.
And when the sun shone upon the bright gown and his
red coat -- my ! how handsome they looked. You
could see 'em all the length of the street.'
" And what then ? ' murmured Gabriel.
"And then I went into Griffin's to hae my boots
hobbed, and then I went to Riggs's batty-cake shop,
and asked 'em for a penneth of the cheapest and nicest
stales, that were all but blue-mouldy, but not quite.
And whilst I was chawing 'em down I walked on and
seed a clock with a face as big as a baking trendle --  -- '
"But that's nothing to do with mistress ! '
"I'm coming to that, if you'll leave me alone, Mister
Oak ! ' remonstrated Cainy. "If you excites me,
perhaps you'll bring on my cough, and then I shan't be
able to tell ye nothing.'
" Yes-iet him tell it his own way,' said Coggan.
Gabriel settled into a despairing attitude of patience,
and Cainy went on : --
"And there were great large houses, and more
people all the week long than at Weatherbury club+
walking on White Tuesdays. And I went to grand
churches and chapels. And how the parson would pray !
Yes; he would kneel down and put up his hands
together, and make the holy gold rings on his fingers
gleam and twinkle in yer eyes, that he'd earned
by praying so excellent well ! -- Ah yes, I wish I lived
there.'
<P 280>
"Our poor Parson Thirdly can't get no money to
buy such rings,' said  Matthew Moon, thoughtfully.
"And as good a man as ever walked. I don't believe
poor Thirdly have a single one, even of humblest tin or
copper. Such a great ornament as they'd be to him on
a dull a'ternoon, when he's up in the pulpit lighted by
the wax candles ! But 'tis impossible, poor man. Ah,
to think how unequal things be.'
"Perhaps he's made of different stuff than to wear
'em,' said Gabriel, grimly. ' Well, that's enough of this.
Go on, Cainy -- quick.'
' Oh -- and the new style of pa'sons wear moustaches
and long beards,' continued the illustrious traveller,
'and look like Moses and Aaron complete, and make
we fokes in the congregation feel all over like the
children of Israel.'
"A very right feeling -- very,' said Joseph Poorgrass.
"And there's two religions going on in the nation
now -- High Church and High Chapel. And, thinks I,
I'll play fair; so I went to High Church in the morning,
and High Chapel in the afternoon.'
' A right and proper boy,' said Joseph Poorgrass.
"Well, at High Church they pray singing, and worship
all the colours of the rainbow; and at High Chapel they
pray preaching, and worship drab and whitewash only.
And then-i didn't see no more of Miss Everdene at
all.'
'Why didn't you say so afore, then ? ' exclaimed Oak,
with much disappointment.
' Ah,' said Matthew Moon, 'she'll wish her cake
dough if so be she's over intimate with that man.'
'She's not over intimate with him,' said Gabriel,
indignantly.
'She would know better,' said Coggan. "Our
mis'ess has too much sense under they knots of black
hair to do such a mad thing.'
"You see, he's not a coarse, ignorant man, for he
was well brought up,' said Matthew, dubiously. " 'Twas
only wildness that made him a soldier, and maids rather
like your man of sin.'
"Now, Cain Ball,' said Gabriel restlessly, "can you
swear in the most
<P 281>
awful form that the woman you saw
was Miss Everdene ? '
'Cain Ball, you be no longer a babe and suckling,'
said Joseph in the sepulchral tone the circumstances
demanded, "and you know what taking an oath is.
'Tis a horrible testament mind ye, which you say and
seal with your blood-stone, and the prophet Matthew
tells us that on whomsoever it shall fall it will grind
him to powder. Now, before all the work-folk here
assembled, can you swear to your words as the shep+
herd asks ye ?'
" Please no, Mister Oak ! ' said Cainy, looking from
one to the other with great uneasiness at the spiritual
magnitude of the position. "I don't mind saying 'tis
true, but I don't like to say 'tis damn true, if that's
what you mane.'
'Cain, Cain, how can you ! ' asked Joseph sternly.
"You be asked to swear in a holy manner, and you
swear like wicked Shimei, the son of Gera, who cursed
as he came. Young man, fie ! '
"No, I don't ! 'Tis you want to squander a pore
boy's soul, Joseph Poorgrass -- that's what 'tis ! ' said
Cain, beginning to cry. "All I mane is that in common
truth 'twas Miss Everdene and Sergeant Troy, but in
the horrible so-help-me truth that ye want to make of
it perhaps 'twas somebody else ! '
'There's no getting at the rights of it,' said Gabriel,
turning to his work.
"Cain Ball, you'll come to a bit of bread ! ' groaned
Joseph Poorgrass.
Then the reapers' hooks were flourished again, and
the old sounds went on. Gabriel, without making any
pretence of being lively, did nothing to show that he
was particularly dull. However, Coggan knew pretty
nearly how the land lay, and when they were in a nook
together he said --
' Don't take on about her, Gabriel. What difference
does it make whose sweetheart she is, since she can't be
yours ? '
"That's the very thing I say to myself,' said Gabriel.
 <C xxxiv>
<P 282>
HOME AGAIN -- A TRICKSTER
THAT same evening at dusk Gabriel was leaning over
Coggan's garden-gate, taking an up-and-down survey
before retiring to rest.
A vehicle of some kind was softly creeping along
the grassy margin of the lane. From it spread the
tones of two women talking. The tones were natural
and not at all suppressed. Oak instantly knew the
voices to he those of Bathsheba and Liddy.
The carriage came opposite and passed by. It was
Miss Everdene's gig, and Liddy and her mistress were
the only occupants of the seat. Liddy was asking
questions about the city of Bath, and her companion
was answering them listlessly and unconcernedly. Both
Bathsheba and the horse seemed weary.
The exquisite relief of finding that she was here
again, safe and sound, overpowered all reflection, and
Oak could only luxuriate in the sense of it. All grave
reports were forgotten.
He lingered and lingered on, till there was no
difference between the eastern and western expanses
of sky, and the timid hares began to limp courageously
round the dim hillocks. Gabriel might have been
there an additional half-hour when a dark form walked
slowly by. " Good-night, Gabriel,' the passer said.
It was Boldwood. " Good-night, sir,' said Gabriel.
Boldwood likewise vanished up the road, and Oak
shortly afterwards turned indoors to bed.
Farmer Boldwood went on towards Miss Everdene's
house. He reached the front, and approaching the
entrance, saw a light in the parlour. The blind was
not drawn down, and inside the room was Bathsheba,
looking over some papers or letters. Her back was
towards Boldwood. He went to the door,
<P 283>
knocked,
and waited with tense muscles and an aching brow.
Boldwood had not been outside his garden since
his meeting with Bathsheba in the road to Yalbury.
Silent and alone, he had remained in moody medita+
tion on woman's ways, deeming as essentials of the
whole sex the accidents of the single one of their
number he had ever closely beheld. By degrees a
more charitable temper had pervaded him, and this
was the reason of his sally to-night. He had come to
apologize and beg forgiveness of Bathsheba with some+
thing like a sense of shame at his violence, having but
just now learnt that she had returned -- only from a
visit to Liddy, as he supposed, the Bath escapade
being quite unknown to him.
He inquired for Miss Everdene. Liddy's manner
was odd, but he did not notice it. She went in, leaving
him standing there, and in her absence the blind of the
room containing Bathsheba was pulled down. Bold+
wood augured ill from that sign. Liddy came out.
"My mistress cannot see you, sir,' she said.
The farmer instantly went out by the gate. He
as unforgiven -- that was the issue of it all. He had
seen her who was to him simultaneously a delight and
a torture, sitting in the room he had shared with her
as a peculiarly privileged guest only a little earlier in
he summer, and she had denied him an entrance
there now.
Boldwood did not hurry homeward. It was ten
o'clock at least, when, walking deliberately through the
lower part of Weatherbury, he heard the carrier's spring
van entering the village. The van ran to and from a
town in a northern direction, and it was owned and
driven by a Weatherbury man, at the door of whose
house it now pulled up. The lamp fixed to the head
of the hood illuminated a scarlet and gilded form, who
was the first to alight.
'Ah ! ' said Boldwood to himself, "come to see her
again.'
Troy entered the carrier's house, which had been
the place of his lodging on his last visit to his native
place. Boldwood was moved by a sudden determina+
tion. He hastened home. In ten minutes he was
back again, and made as if he were going to call upon
Troy at the carrier's. But as he approached, some
<P 284>
one opened the door and came out. He heard this
person say " Good-night ' to the inmates, and the voice
was Troy's. 'This was strange, coming so immediately
after his arrival. Boldwood, however, hastened up
to him. Troy had what appeared to be a carpet-bag
in his hand -- the same that he had brought with him.
It seemed as if he were going to leave again this very
night.
Troy turned up the hill and quickened his pace.
Boldwood stepped forward.
" Sergeant Troy ? '
" Yes-i'm Sergeant Troy.'
" Just arrived from up the country, I think ?'
" Just arrived from Bath.'
" I am William Boldwood.'
" Indeed.'
The tone in which this word was uttered was all
that had been wanted to bring Boldwood to the
point.
" I wish to speak a word with you,' he said.
" What about ? '
" About her who lives just ahead there -- and about
a woman you have wronged.'
" I wonder at your impertinence,' said Troy, moving
on.
" Now look here,' said Boldwood, standing in front
of him, " wonder or not, you are going to hold a conver+
sation with me.'
Troy heard the dull determination in Boldwood's
voice, looked at his stalwart frame, then at the thick
cudgel he carried in his hand. He remembered it was
past ten o'clock. It seemed worth while to be civil to
Boldwood.
" Very well, I'll listen with pleasure,' said Troy,
placing his bag on the ground, "only speak low, for
somebody or other may overhear us in the farmhouse
there.'
" Well then -- I know a good deal concerning your
Fanny Robin's attachment to you. I may say, too, that
I believe I am the only person in the village, excepting
Gabriel Oak, who does know it. You ought to marry
her.'
" I suppose I ought. Indeed, l wish to, but I
cannot.'
" Why ? '
Troy was about to utter something hastily; he then
checked
<P 285>
himself and said, "I am too poor.' His voice
was changed. Previously it had had a deviimay-care
tone. It was the voice of a trickster now.
Boldwood's present mood was not critical enough to
notice tones. He continued, "I may as well speak
plainly; and understand, I don't wish to enter into the
questions of right or wrong, woman's honour and shame,
or to express any opinion on your conduct. I intend a
business transaction with you.'
" I see,' said Troy. " Suppose we sit down here.'
An old tree trunk lay under the hedge immediately
opposite, and they sat down.
The tone in which this word was uttered was all
Troy heard the dull determination in Boldwood's
voice, looked at his stalwart frame, then at the thick
plainly ; and understand, I don't wish to enter into the
" I was engaged to be married to Miss Everdene,'
said Boldwood, "but you came and --  -- '
" Not engaged,' said Troy.
" As good as engaged.'
" If I had not turned up she might have become en+
gaged to you.'
" Hang might ! '
" Would, then.'
" If you had not come I should certainly -- yes,
certainly -- have been accepted by this time. If you had
not seen her you might have been married to Fanny.
Well, there's too much difference between Miss Ever+
dene's station and your own for this flirtation with her
ever to benefit you by ending in marriage. So all I ask
is, don't molest her any more. Marry Fanny.
make it worth your while.'
" How will you ?'
" I'll pay you well now, I'll settle a sum of money
upon her, and I'll see that you don't suffer from poverty
in the future. I'll put it clearly. Bathsheba is only
playing with you: you are too poor for her as I said;
so give up wasting your time about a great match you'll
never make for a moderate and rightful match you may
make to-morrow; take up your carpet-bag, turn about,
leave Weatherbury now, this night, and you shall take
fifty pounds with you. Fanny shall have fifty to enable
her to prepare for the wedding, when you have told me
where she is living, and she shall have five hundred
paid down on her wedding-day.'
<P 286>
In making this statement Boldwood's voice revealed
only too clearly a consciousness of the weakness of his
position, his aims, and his method. His manner had
lapsed quite from that of the firm and dignified Bold+
wood of former times; and such a scheme as he had
now engaged in he would have condemned as childishly
imbecile only a few months ago. We discern a grand
force in the lover which helacks whilst a free man; but
there is a breadth of vision in the free man which in
the lover we vainly seek. Where there is much bias
there must be some narrowness, and love, though added
emotion, is subtracted capacity. Boldwood exemplified
this to an abnormal degree: he knew nothing of Fanny
Robin's circumstances or whereabouts, he knew nothing
of Troy's possibilities, yet that was what he said.
" I like Fanny best,' said Troy; "and if, as you say,
Miss Everdene is out of my reach, why I have all to
gain by accepting your money, and marrying Fan. But
she's only a servant.'
" Never mind -- do you agree to my arrangement ?'
" I do.'
" Ah ! ' said Boldwood, in a more elastic voice. "O,
Troy, if you like her best, why then did you step in here
and injure my happiness ? '
" I love Fanny best now,' said Troy. "But
Bathsh --  -- Miss Everdene inflamed me, and displaced
Fanny for a time. It is over now.'
" Why should it be over so soon? And why then
did you come here again ? '
" There are weighty reasons. Fifty pounds at once,
you said !'
" I did,' said Boldwood, " and here they are -- fifty
sovereigns.' He handed Troy a small packet.
" You have everything ready -- it seems that you
calculated on my accepting them,' said the sergeant,
taking the packet.
" I thought you might accept them,' said Boldwood.
" You've only my word that the programme shall be
adhered to, whilst I at any rate have fifty pounds.'
" l had thought of that, and l have considered that
if I can't appeal to your honour I can trust to your --
well, shrewdness we'll call it -- not to lose five hundred
pounds in prospect, and
<P 287>
also make a bitter enemy of a
man who is willing to be an extremely useful friend.'
" Stop, listen ! ' said Troy in a whisper.
A light pit-pat was audible upon the road just above
them.
'By George -- 'tis she,' he continued. 'I must go
on and meet her.'
'She -- who ? '
'Bathsheba.'
'Bathsheba -- out alone at this time o' night .! ' said
Boldwood in amazement, and starting up. ' Why must
you meet her ?'
'She was expecting me to-night -- and I must now
speak to her, and wish her good-bye, according to your
wish. '
'I don't see the necessity of speaking.'
'It can do no harm -- and she'll be wandering about
looking for me if I don't. You shall hear all I say to her.
It will help you in your love-making when I am gone.'
'Your tone is mocking.'
'O no. And renaember this, if she does not know
what has become of me, she will think more about me
than if I tell her flatly I have come to give her up.'
'Will you confine your words to that one point ? -- +
Shall I hear every word you say ? '
'Every word. Now sit still there, and hold my'
carpet bag for me, and mark what you hear.'
The light footstep came closer, halting occasionally,
as if the walker listened for a sound. Troy whistled a
double note in a soft, fluty tone.
'Come to that, is it ! ' murmured Boldwood, uneasily.
'You promised silence,' said Troy.
'I promise again.'
Troy stepped forward.
'Frank, dearest, is that you ? ' The tones were
Bathsheba's.
'O God .! ' said Boldwood.
'Yes,' said Troy to her.
'How late you are,' she continued, tenderly. 'Did
you come by the carrier ? I listened and heard his
wheels entering the village, but it was some time ago,
and I had almost given you up, Frank.'
<P 288>
'I was sure to come,' said Frank. 'You knew I
should, did you not ? '
'Well, I thought you would,' she said, playfully ;
'and, Frank, it is so lucky .! There's not a soul in my
house but me to-night. I've packed them all off so
nobody on earth will know of your visit to your lady's
bower. Liddy wanted to go to her grandfather's to
tell him about her holiday, and I said she might stay
with them till to-morrow -- when you'll be gone again.'
'Capital,' said Troy. ' But, dear me, I. had better
go back for my bag, because my slippers and brush and
comb are in it; you run home whilst I fetch it, and I'll
promise to be in your parlour in ten minutes.'
'Yes.' She turned and tripped up the hill again.
During the progress of this dialogue there was a
nervous twitching of Boldwood's tightly closed lips, and
his face became bathed in a clammy dew. He now
started forward towards Troy. Troy turned to him and
took up the bag.
'Shall I tell her I have come to give her up and
cannot marry her ? ' said the soldier, mockingly.
'No, no; wait a minute. I want to say more to
you -- more to you !. ' said Boldwood, in a hoarse whisper.
'Now,' said Troy, ' you see my dilemma. Perhaps
I am a bad man -- the victim of my impulses -- led away
to do what I ought to leave undone. I can't, however,
marry them both. And I have two reasons for- choosing
Fanny. First, I like her best upon the whole, and
second, you make it worth my while.'
At the same instant Boldwood sprang upon him, and
held him by the neck. Troy felt Boldwood's grasp slowly
tightening. The move was absolutely unexpected.
'A moment,' he gasped. 'You are injuring her you
love .! '
'Well, what do you mean ? ' said the farmer.
Give me breath,' said Troy.
Boldwood loosened his hand, saying, 'By Heaven,
I've a mind to kill you .!'
'And ruin her.'
'Save her.'
'Oh, how can she be saved now, unless I marry her ? '
<P 289>
Boldwood groaned. He reluctantly released the
soldier, and flung him back against the hedge. 'Devil,
you torture me .! ' said he.
Troy rebounded like a ball, and was about to make
a dash at the farmer; but he checked himself, saying
lightly --
'It is not worth while to measure my strength with
you. Indeed it is a barbarous way of settling a quarrel.
I shall shortly leave the army because of the same
conviction. Now after that revelation of how the land
lies with Bathsheba, 'twould be a mistake to kill me,
would it not?'
''Twould be a mistake to kill you,' repeated Boldwood,
mechanically, with a bowed head.
'Better kill yourself.'
' Far better.'
'I'm glad you see it.'
'Troy, make her your wife, and don't act upon what
I arranged just now. The alternative is dreadful, but
take Bathsheba; I give her up .! She must love you
indeed to sell soul and body to you so utterly as she
has done. Wretched woman -- deluded woman -- you
are, Bathsheba .! '
'But about Fanny ? '
'Bathsheba is a woman well to do,' continued Bold+
wood, in nervous anxiety, 'and, Troy, she will make a
good wife ; and, indeed, she is worth your hastening
on your marriage with her .! '
'But she has a wili-not to say a temper, and I shall
be a mere slave to her. I could do anything with poor
Fanny Robin.'
'Troy,' said Boldwood, imploringly, ' I'll do anything
for you, only don't desert her; pray don't desert her,
Troy.'
'Which, poor Fanny ? '
'No ; Bathsheba Everdene. Love her best .! Love
her tenderly !. How shall I get you to see how advan+
tageous it will be to you to secure her at once ?'
'I don't wish to secure her in any new way.'
Boldwood's arm moved spasmodically towards Troy's
person again. He repressed the instinct, and his form
drooped as with pain.
Troy went on --
<P 290>
"I shall soon purchase my discharge, and then --  -- '
'But I wish you to hasten on this marriage !. It will
be better for you both. You love each other, and you
must let me help you to do it.'
'How ? '
'Why, by settling the five hundred on Bathsheba
instead of Fanny, to enable you to marry at once.
No ; she wouldn't have it of me. I'll pay it down to
you on the wedding-day.'
Troy paused in secret amazement at Boldwood's
wild infatuation. He carelessly said, 'And am I to
have anything now ? '
'Yes, if you wish to. But I have not much additional
money with me. I did not expect this; but all I have
is yours.'
Boldwood, more like a somnambulist than a wakeful
man, pulled out the large canvas bag he carried by way
of a purse, and searched it.
'I have twenty-one pounds more with me,' he said.
'Two notes and a sovereign. But before I leave you
I must have a paper signed --  -- '
'Pay me the money, and we'll go straight to her
parlour, and make any arrangement you please to secure
my compliance with your wishes. But she must know
nothing of this cash business.'
' Nothing, nothing,' said Boldwood, hastily. 'Here
is the sum, and if you'll come to my house we'll write
out the agreement for the remainder, and the terms
also.'
' First we'll call upon her.'
'But why? Come with me to-night, and go with
me to-morrow to the surrogate's.'
'But she must be consulted; at any rate informed.'
'Very well; go on.'
They went up the hill to Bathsheba's house. When
they stood at the entrance, Troy said, 'Wait here a
moment.' Opening the door, he glided inside, leaving
the door ajar.
Boldwood waited. In two minutes a light appeared
in the passage. Boldwood then saw that the chain
had been fastened across the door. Troy appeared
inside, carrying a bedroom candlestick.
<P 291>
'What, did you think I should break in ?' said
Boldwood, contemptuously.
'Oh, no; it is merely my humour to secure things.
Will you read this a moment ? I'll hold the light.'
Troy handed a folded newspaper through the slit
between door and doorpost, and put the candle close.
'That's the paragraph,' he said, placing his finger on
a line.
Boldwood looked and read --
'MARRIAGES.
'On the 17th inst., at St. Ambrose's Church, Bath,
by the Rev. G. Mincing, B.A., Francis Troy, only son
of the late Edward Troy, Esq., H.D., of Weatherbury,
and sergeant iith Dragoon Guards, to Bathsheba, only
surviving daughter of the late Mr, John Everdene, of
Casterbridge.'
'This may be called Fort meeting Feeble, hey,
Boldwood ?' said Troy. A low gurgle of derisive
laughter followed the words.
The paper fell from Boldwood's hands. Troy
continued --
'Fifty pounds to marry Fanny, Good. Twenty-+
one pounds not to marry Fanny, but Bathsheba. Good.
Finale : already Bathsheba's husband. Now, Boldwood,
yours is the ridiculous fate which always attends inter+
ference between a man and his wife. And another
word. Bad as I am, I am not such a villain as to
make the marriage or misery of any woman a matter
of huckster and sale. Fanny has long ago left me.
don't know where she is. I have searched everywhere.
Another word yet. You say you love Bathsheba ; yet
on the merest apparent evidence you instantly believe
in her dishonour. A fig for such love !. Now that I've
taught you a lesson, take your money back again.'
'I will not ; I will not !. ' said Boldwood, in a hiss.
'Anyhow I won't have it,' said Troy, contemptuously.
He wrapped the packet of gold in the notes, and threw
the whole into the road.
Boldwood shook his clenched fist at him. 'You
juggler of Satan .! You black hound .! But I'll punish
you yet ; mark me, I'll punish you yet !. '
<P 292>
Another peal of laughter. Troy then closed the
door, and locked himself in.
Throughout the whole of that night Boldwood's dark
downs of Weatherbury like an unhappy Shade in the
Mournful Fields by Acheron.
<C xxxv>
<P 293>
CHAPTER XXXV
AT AN UPPER WINDOW
IT was very early the next morning -- a time of sun and
dew. The confused beginnings of many birds' songs
spread into the healthy air, and the wan blue of the
heaven was here and there coated with thin webs of
incorporeal cloud which were of no efect in obscuring
day. All the lights in the scene were yellow as to
colour, and all the shadows were attenuated as to form.
The creeping plants about the old manor-house were
bowed with rows of heavy water drops, which had upon
objects behind them the effect of minute lenses of high
magnifying power.
Just before the clock struck five Gabriel Oak and
Coggan passed the village cross, and went on together
to the fields. They were yet barely in view of their
mistress"s house, when Oak fancied he saw the opening
of a casement in one of the upper windows. The two
men were at this moment partially screened by an elder
bush, now beginning to be enriched with black bunches
of fruit, and they paused before emerging from its
shade.
A handsome man leaned idly from the lattice. He
looked east and then west, in the manner of one who
makes a first morning survey. The man was Sergeant
Troy. His red jacket was loosely thrown on, but not
buttoned, and he had altogether the relaxed bearing of
a soldier taking his ease.
Coggan spoke first, looking quietly at the window.
'She has married him ! ' he said.
Gabriel had previously beheld the sight, and he now
stood with his back turned, making no reply.
'I fancied we should know something to-day,' con+
tinued Coggan. 'I heard wheels pass my door just
after dark -- you were out somewhere.'He glanced
round upon Gabriel. 'Good
<P 294>
heavens above us, Oak,
how white your face is; you look like a corpse !.'
'Do I?' said Oak, with a faint smile.
'Lean on the gate: I'll wait a bit.'
',All right, all right. '
They stood by the gate awhile, Gabriel listlessly
staring at the ground. His mind sped into the future,
and saw there enacted in years of leisure the scenes o
repentance that would ensue from this work of haste
That they were married he had instantly decided. Why
had it been so mysteriously managed ? It had become
known that she had had a fearful journey to Bath, owing
to her miscalculating the distance : that the horse had
broken down, and that she had been more than two
days getting there. It was not Bathsheba's way to do
things furtively. With all her faults, she was candour
itself. Could she have been entrapped ? The union
was not only an unutterable grief to him: it amazed
him, notwithstanding that he had passed the preceding
week in a suspicion that such might be the issue of
Troy's meeting her away from home. Her quiet return
with liddy had to some extent dispersed the dread.
Just as that imperceptible motion which appears like
stillness is infinitely divided in its properties from stili
ness itself, so had his hope undistinguishable from
despair differed from despair indeed.
In a few minutes they moved on again towards the
house. The sergeant still looked from the window.
'Morning, comrades .! ' he shouted, in a cheery voice,
when they came up.
Coggan replied to the greeting. ' Bain't ye going to
answer the man ?' he then said to Gabriel. 'I'd say
good morning -- you needn't spend a hapeth of meaning
upon it, and yet keep the man civil.'
Gabriel soon decided too that, since the deed was
done, to put the best face upon the matter would be the
greatest kindness to her he loved.
'Good morning, Sergeant Troy,' he returned, in a
ghastly voice.
'A rambling, gloomy house this,' said Troy, smiling.
<P 295>
' Why -- they may not be married .! ' suggested Coggan.
' Perhaps she's not there.'
Gabriel shook his head. The soldier turned a little
towards the east, and the sun kindled his scarlet coat
to an orange glow.
'But it is a nice old house,' responded Gabriel.
'Yes-i suppose so; but I feel like new wine in an
old bottle here. My notion is that sash-windows should
be put throughout, and these old wainscoted walls
brightened up a bit ; or the oak cleared quite away, and
the walls papered.'
'It would be a pity, I think.'
'Well, no. A philosopher once said in my hearing
that the old builders, who worked when art was a living
thing, had no respect for the work of builders who went
before them, but pulled down and altered as they
thought fit; and why shouldn't we ? ''Creation and
preservation don't do well together,'' says he, ''and a
million of antiquarians can't invent a style.'' My mind
exactly. I am for niaking this place more modern, that
we may be cheerful whilst we can.'
The military man turned and surveyed the interior
of the room, to assist his ideas of improvement in this
direction. Gabriel and Coggan began to move on.
' Oh, Coggan,' said Troy, as if inspired by a recollec+
tion ' do you know if insanity has ever appeared in Mr.
Boldwood's family ? '
Jan reflected for a moment.
'I once heard that an uncle of his was queer in his
head, but I don't know the rights o't,' he said.
'It is of no importance,' said Troy, lightly. 'Well,
I shall be down in the fields with you some time this
week ; but I have a few matters to attend to first. So
good-day to you. We shall, of course, keep on just as
friendly terms as usual. I'm not a proud man : nobody
is ever able to say that of Sergeant Troy. However,
what is must be, and here's half-a-crown to drink my
health, men.'
Troy threw the coin dexterously across the front plot
and over the fence towards Gabriel, who shunned it in
its fall, his face turning to an angry red. Coggan
twirled his eye, edged
<P 296>
forward, and caught the money
in its ricochet upon the road.
' very weli-you keep it, Coggan,' said Gabriel with
disdain and almost fiercely. 'As for me, I'll do with+
out gifts from him !'
'Don't show it too much,' said Coggan, musingly.
'For if he's married to her, mark my words, he'll buy
his discharge and be our master here. Therefore 'tis
well to say '' Friend '' outwardly, though you say
''Troublehouse '' within. '
' Weli-perhaps it is best to be silent; but I can't
go further than that. I can't flatter, and if my place
here is only to be kept by smoothing him down, my
place must be lost.'
A horseman, whom they had for some time seen in
the distance, now appeared close beside them.
' There's Mr. Boldwood,' said Oak. ' I wonder what
Troy meant by his question.'
Coggan and Oak nodded respectfully to the farmer,
just checked their paces to discover if they were wanted,
and finding they were not stood back to let him pass on.
The only signs of the terrible sorrow Boldwood had
been combating through the night, and was combating
now, were the want of colour in his welidefined face,
the enlarged appearance of the veins in his forehead
and temples, and the sharper lines about his mouth.
The horse bore him away, and the very step of the
animal seemed significant of dogged despair. Gabriel, for
a minute, rose above his own grief in noticing Boldwood's.
He saw the square figure sitting erect upon the horse,
the head turned to neither side, the elbows steady by
the hips, the brim of the hat level and undisturbed in
its onward glide, until the keen edges of Boldwood's
shape sank by degrees over the hill. To one who knew
the man and his story there was something more striking
in this immobility than in a collapse. The clash of
discord between mood and matter here was forced
painfully home to the heart ; and, as in laughter there are
more dreadful phases than in tears, so was there in the
steadiness of this agonized man an expression deeper
than a cry.
<C xxxvi>
<P 297>
WEALTH IN JEOPARDY -- THE RVEEL
ONE night, at the end of August, when Bathsheba's
experiences as a married woman were still new, and
when the weather was yet dry and sultry, a man stood
motionless in the stackyard of Weatherbury Upper
Farm, looking at the moon and sky.
The night had a sinister aspect. A heated breeze
from the south slowly fanned the summits of lofty
objects, and in the sky dashes of buoyant cloud were
sailing in a course at right angles to that of another
stratum, neither of them in the direction of the breeze
below. The moon, as seen through these films, had
a lurid metallic look. The fields were sallow with the
impure light, and all were tinged in monochrome, as
if beheld through stained glass. The same evening
the sheep had trailed homeward head to tail, the
behaviour of the rooks had heen confused, and the
horses had moved with timidity and caution.
Thunder was imminent, and, taking some secondary
appearances into consideration, it was likely to be
followed by one of the lengthened rains which mark
the close of dry weather for the season. Before twelve
hours had passed a harvest atmosphere would be a
bygone thing.
Oak gazed with misgiving at eight naked and un'
protected ricks, massive and heavy with the rich
produce of one-half the farm for that year. He went
on to the barn.
This was the night which had been selected by
Sergeant Troy -- ruling now in the room of his wife --
for giving the harvest supper and dance. As Oak
approached the building the sound of violins and a
tambourine, and the regular jigging of many feet, grew
more distinct. He came close to the large doors, one
of which stood slightly ajar, and looked in.
The central space, together with the recess at one
end, was
<P 298>
emptied of all incumbrances, and this area,
covering about two-thirds of the whole, was appropriated
for the gathering, the remaining end, which was piled
to the ceiling with oats, being screened off with sail'
cloth. Tufts and garlands of green foliage decomted
the walls, beams, and extemporized chandeliers, and
immediately opposite to Oak a rostrum had been
erected, bearing a table and chairs. Here sat three
fiddlers, and beside them stood a frantic man with his
hair on end, perspiration streaming down his cheeks,
and a tanabourine quivering in his hand.
The dance ended, and on the black oak floor in the
midst a new row of couples formed for another.
'Now, ma'am, and no offence I hope, I ask what
dance you would like next ?' said the first violin.
'Really, it makes no difference,' said the clear voice
of Bathsheba, who stood at the inner end of the build+
ing, observing the scene from behind a table covered
with cups and viands. Troy was lolling beside her.
'Then,' said the fiddler, 'I'll venture to name that
the right and proper thing is ''The Soldier's Joy'' --
there being a gallant soldier married into the farm --
hey, my sonnies, and gentlemen all ? '
'It shall be ''The Soldier's Joy,''' exclaimed a
chorus.
'Thanks for the compliment,' said the sergeant
THE REVEL
gaily, taking Bathsheba by the hand and leading her
to the top of the dance. 'For though I have pur+
chased my discharge from Her Most Gracious Majesty's
regiment of cavalry the 11th Dragoon Guards, to attend
to the new duties awaiting me here, I shall continue a
soldier in spirit and feeling as long as I live.'
So the dance began. As to the merits of 'The
Soldier's Joy,' there cannot be, and never were, two
opinions. It has been observed in the musical circles
of Weatherbury and its vicinity that this melody, at
the end of three-quarters of an hour of thunderous
footing, still possesses more stimulative properties for
the heel and toe than the majority of other dances at
their first opening. 'The Soldier's Joy' has, too, an
additional charm, in being so admirably adapted to
the tambourine aforesaid -- no mean instrument in the
hands of a performer
<P 299>
who understands the proper
convulsions, spasms, St. vitus's dances, and fearful
frenzies necessary when exhibiting its tones in their
highest perfection.
The immortal tune ended, a fine DD rolling forth
from the bass-viol with the sonorousness of a cannonade,
and Gabriel delayed his entry no longer. He avoided
Bathsheba, and got as near as possible to the platform,
where Sergeant Troy was now seated, drinking brandy+
and-water, though the others drank without exception
cider and ale. Gabriel could not easily thrust himself
within speaking distance of the sergeant, and he sent
a message, asking him to come down for a moment.
'The sergeant said he could not attend.
'Will you tell him, then,' said Gabriel, 'that I only
stepped ath'art to say that a heavy rain is sure to fall
soon, and that something should be done to protect
the ricks ?'
'M. Troy says it will not rain,' returned the
messenger, 'and he cannot stop to talk to you about
such fidgets.'
In Juxtaposition with Troy, Oak had a melancholy
tendency to look like a candle beside gas, and ill at
ease, he went out again, thinking he would go home ;
for, under the circumstances, he had no heart for the
scene in the barn. At the door he paused for a
moment : Troy was speaking.
'Friends, it is not only the harvest home that we
are celebrating to-night; but this is also a Wedding
Feast. A short time ago I had the happiness to lead
to the altar this lady, your mistress, and not until now
have we been able to give any public flourish to the
event in Weatherbury. That it may be thoroughly
well done, and that every man may go happy to bed,
I have ordered to be brought here some bottles of
brandy and kettles of hot water. A treble-strong
goblet will he handed round to each guest.'
Bathsheba put her hand upon his arm, and, with
upturned pale face, said imploringly, ' No -- don't give
it to them -- pray don't, Frank .! It will only do them
harm : they have had enough of everything.'
'True -- we don't wish for no more, thank ye,' said
one or two.
'Pooh .! ' said the sergeant contemptuously, and
raised his
<P 300>
voice as if lighted up by a new idea.
' Friends,' he said, ' we'll send the women-folk home .!
'Tis time they were in bed. Then we cockbirds will
have a jolly carouse to ourselves .! If any of the men
show the white feather, let them look elsewhere for a
winter's work.'
Bathsheba indignantly left the barn, followed by
all the women and children. The musicians, not
looking upon themselves as ' company,' slipped quietly
away to their spring waggon and put in the horse.
Thus Troy and the men on the farm were left sole
occupants of the place. Oak, not to appear unneces+
sarily disagreeable, stayed a little while ; then he, too,
arose and quietly took his departure, followed by a
friendly oath from the sergeant for not staying to a
second round of grog.
Gabriel proceeded towards his home. In approach+
ing the door, his toe kicked something which felt and
sounded soft, leathery, and distended, like a boxing+
glove. It was a large toad humbly travelling across
the path. Oak took it up, thinking it might be better
to kill the creature to save it from pain; but finding
it uninjured, he placed it again among the grass. He
knew what this direct message from the Great Mother
meant. And soon came another.
When he struck a light indoors there appeared upon
the table a thin glistening streak, as if a brush of varnish
had been lightly dragged across it. Oak's eyes followed
the serpentine sheen to the other side, where it led up
to a huge brown garden-slug, which had come indoors
to-night for reasons of its own. It was Nature's second
way of hinting to him that he was to prepare for foul
weather.
Oak sat down meditating for nearly an hour.
During this time two black spiders, of the kind common
in thatched houses, promenaded the ceiling, ultimately
dropping to the floor. This reminded him that if there
was one class of manifestation on this matter that he
thoroughly understood, it was the instincts of sheep.
He left the room, ran across two or three fields towards
the flock, got upon a hedge, and looked over among
them.
They were crowded close together on the other side
around some
<P 301>
furze bushes, and the first peculiarity ob+
servable was that, on the sudden appearance of Oak's
head over the fence, they did not stir or run away.
They had now a terror of something greater than their
terror of man. But this was not the most noteworthy
feature : they were all grouped in such a way that their
tails, without a single exception, were towards that half
of the horizon from which the storm threatened. There
was an inner circle closely huddled, and outside these
they radiated wider apart, the pattern formed by the
flock as a whole not being unlike a vandyked lace
collar, to which the clump of furze-bushes stood in the
position of a wearer's neck.
opinion. He knew now that he was right, and that
Troy was wrong. Every voice in nature was unanimous
in bespeaking change. But two distinct translations
attached to these dumb expressions. Apparently there
was to be a thunder-storm, and afterwards a cold con+
tinuous rain. The creeping things seemed to know all
about the later rain, hut little of the interpolated
thunder-storm ; whilst the sheep knew all about the
thunder-storm and nothing of the later rain.
This complication of weathers being uncommon,
was all the more to be feared. Oak returned to the
stack-yard. All was silent here, and the conical tips of
the ricks jutted darkly into the sky. There were five
wheat-ricks in this yard, and three stacks of barley.
The wheat when threshed would average about thirty
quarters to each stack ; the barley, at least forty. Their
value to Bathsheba, and indeed to anybody, Oak
mentally estimated by the following simple calcula+
tion : --
5 x 30 = 150 quarters= 500fl.
3 x 40=120 quarters= 250l.
Total . . 750l.
Seven hundred and fifty pounds in the divinest form
that money can wear -- that of necessary food for man
and beast : should the risk be run cf deteriorating this
bulk of corn to less than half its value, because of the
instability of a woman ? 'Never, if I can prevent it.! '
said Gabriel.
<P 302>
Such was the argument that Oak set outwardly before
him. But man, even to himself, is a palimpsest, having
an ostensible writing, and another beneath the lines.
It is possible that there was this golden legend under
the utilitarian one: 'I will help to my last effort the
woman I have loved so dearly.'
He went back to the barn to endeavour to obtain
assistance for covering the ricks that very
<P 303>
night. All
was silent within, and he would have passed on in the
belief that the party had broken up, had not a dim
light, yellow as saffron by contrast with the greenish
whiteness outside, streamed through a knot-hole in the
folding doors.
Gabriel looked in. An unusual picture met his
eye.
The candles suspended among the evergreens had
burnt down to their sockets, and in some cases the
leaves tied about them were scorched. Many of the
lights had quite gone out, others smoked and stank,
grease dropping from them upon the floor. Here,
under the table, and leaning against forms and chairs
in every conceivable attitude except the perpendicular, !'
were the wretched persons of all the work-folk, the hair
of their heads at such low levels being suggestive of
mops and brooms. In the midst of these shone red
and distinct the figure of Sergeant Troy, leaning back
in a chair. Coggan was on his back, with his mouth
open, huzzing forth snores, as were several others ; the
united breathings of the horizonal assemblage forming
a subdued roar like London from a distance. Joseph
Poorgrass was curled round in the fashion of a hedge+
hog, apparently in attempts to present the least possible
portion of his surface to the air; and behind him was
dimly visible an unimportant remnant of William Smali
bury. The glasses and cups still stood upon the table,
a water-jug being overturned, from which a small rill,
after tracing its course with marvellous precision down
the centre of the long table, fell into the neck of the
unconscious Mark Clark, in a steady, monotonous drip,
like the dripping of a stalactite in a cave.
Gabriel glanced hopelessly at the group, which, with
one or two exceptions, composed all the able-bodied
men upon the farm. He saw at once that if the ricks
were to be saved that night, or even the next morning,
he must save them with his own hands.
A faint ' ting-ting ' resounded from under Coggan's
waistcoat. It was Coggan's watch striking the hour of
two.
Oak went to the recumbent form of Matthew Moon,
who usually undertook the rough thatching of the home+
stead, and shook him. The shaking was without effect.
Gabriel shouted in his ear, ' where's your thatching+
beetle and rick-stick and spars ? '
' Under the staddles,' said Moon, mechanically, with
the unconscious promptness of a medium.
Gabriel let go his head, and it dropped upon the
floor like a bowl. He then went to Susan Tall's
husband.
' where's the key of the granary ? '
No answer. The question was repeated, with the
same result. To be shouted to at night was evidently
less of a novelty to Susan Tall's husband than to
Matthew Moon. Oak flung down Tall's head into the
corner again and turned away.
To be just, the men were not greatly to blame for
this painful and demoralizing termination to the
evening's entertainment. Sergeant Troy had so strenu+
ously insisted, glass in hand, that drinking should be
the bond of their union, that those who wished to refuse
hardly liked to be so unmannerly under the circum+
stances. Having from their youth up been entirely un+
accustomed to any liquor stronger than cider or mild
ale, it was no wonder that they had succumbed, one
and all, with extraordinary uniformity, after the lapse of
about an hour.
Gabriel was greatly depressed. This debauch boded
ill for that wilful and fascinating mistress whom the
faithful man even now felt within him as the embodi+
ment of all that was sweet and bright and hopeless.
He put out the expiring lights, that the barn might
not be endangered, closed the door upon the men in
their deep and oblivious sleep, and went again into the
lone night. A hot breeze, as if breathed from the
parted lips of some dragon about to swallow the globe,
fanned him from the south, while directly opposite in
the north rose a grim misshapen body of
<P 304>
cloud, in the
very teeth of the wind. So unnaturally did it rise that
one could fancy it to be lifted by machinery from below.
Meanwhile the faint cloudlets had flown back into the
south-east corner of the sky, as if in terror of the large
cloud, like a young brood gazed in upon by some
monster.
Going on to the village, Oak flung a small stone
against the window of Laban Tall's bedroom, expecting
Susan to open it ; but nobody stirred. He went round
to the back door, which had been left unfastened for
Laban's entry, and passed in to the foot of the stair+
case.
'Mrs. Tall, I've come for the key of the granary,
to get at the rick-cloths,' said Oak, in a stentorian
voice.
'Is that you ? ' said Mrs. Susan Tall, half awake.
' Yes,' said Gabriel.
'Come along to bed, do, you drawlatching rogue --
keeping a body awake like this .'
'It isn't Laban -- 'tis Gabriel Oak. I want the key
of the granary.'
'Gabriel. what in the name of fortune did you
pretend to be Laban for ?'
' I didn't. I thought you meant --  -- '
'yes you did !. what do you want here ?'
'The key of the granary.'
"Take it then. 'Tis on the nail. People coming
disturbing women at this time of night ought --  -- '
Gabriel took the key, without waiting to hear the
conclusion of the tirade. Ten minutes later his lonely
figure might have been seen dragging four large water+
proof coverings across the yard, and soon two of these
heaps of treasure in grain were covered snug -- two cloths
to each. Two hundred pounds were secured. Three
wheat-stacks remained open, and there were no more
cloths. Oak looked under the staddles and found a
fork. He mounted the third pile of wealth and began
operating, adopting the plan of sloping the upper
sheaves one over the other; and, in addition, filling
the interstices with the material of some untied sheaves.
So far all was well. By this hurried contrivance
Bathsheba's
<P 305>
property in wheat was safe for at any rate
a week or two, provided always that there was not
much wind.
Next came the barley. This it was only possible to
protect by systematic thatching. Time went on, and
the moon vanished not to reappear. It was the
farewell of the ambassador previous to war. The
night had a haggard look, like a sick thing; and there
came finally an utter expiration of air from the whole
heaven in the form of a slow breeze, which might have
been likened to a death. And now nothing was heard
in the yard but the dull thuds of the beetle which drove
in the spars, and the rustle of thatch in the intervals.
THE STORM
<C xxxvii>
<P 306>
THE STORM -- THE TWO TOGETHER
A LIGHT flapped over the scene, as if reflected from
phosphorescent wings crossing the sky, and a rumble
filled the air. It was the first move of the approaching
storm.
The second peal was noisy, with comparatively little
visible lightning. Gabriel saw a candle shining in Bath+
sheba's bedroom, and soon a shadow swept to and fro
upon the blind.
Then there came a third flash. Manoeuvres of a
most extraordinary kind were going on in the vast
firmamental hollows overhead. The lightning now was
the colour of silver, and gleamed in the heavens like a
mailed army. Rumbles became rattles. Gabriel from
his elevated position could see over the landscape at
least half-a-dozen miles in front. Every hedge, bush,
and tree was distinct as in a line engraving. In a
paddock in the same direction was a herd of heifers,
and the forms of these were visible at this moment in
the act of galloping about in the wildest and maddest
confusion, flinging their heels and tails high into the air,
their heads to earth. A poplar in the immediate fore+
ground was like an ink stroke on burnished tin. Then
the picture vanished, leaving the darkness so intense
that Gabriel worked entirely by feeling with his hands.
He had stuck his ricking-rod, or poniard, as it was
indifferently called -- a long iron lance, polished by
handling -- into the stack, used to support the sheaves
instead of the support called a groom used on houses,
A blue light appeared in the zenith, and in some in+
describable manner flickered down near the top of the
rod. It was the fourth of the larger flashes. A moment
later and there was a smack -- smart, clear, and short,
Gabriel felt his position to be anything but a safe one,
and he resolved to descend.
Not a drop of rain had fallen as yet. He wiped his
weary brow, and looked again at the black forms of
the unprotected
<P 307>
stacks. Was his life so valuable to
him after all? What were his prospects that he
should be so chary of running risk, when important
and urgent labour could not be carried on without
such risk ? He resolved to stick to the stack. How+
ever, he took a precaution. Under the staddles was
a long tethering chain, used to prevent the escape of
errant horses. This he carried up the ladder, and
sticking his rod through the clog at one end, allowed
the other end of the chain to trail upon the ground
The spike attached to it he drove in. Under the
shadow of this extemporized lightning-conductor he
felt himself comparatively safe.
Before Oak had laid his hands upon his tools again
out leapt the fifth flash, with the spring of a serpent
and the shout of a fiend. It was green as an
emerald, and the reverberation was stunning. What
was this the light revealed to him? In the open
ground before him, as he looked over the ridge of
the rick, was a dark and apparently female form.
Could it be that of the only venturesome woman in
the parish -- Bathsheba ? The form moved on a step :
then he could see no more.
"Is that you, ma'am ? ' said Gabriel to the darkness.
"Who is there ?' said the voice of Bathsheba,
THE TWO TOGETHER
"Gabriel. I am on the rick, thatching.'
"O, Gabriel ! -- and are you ? I have come about
them. The weather awoke me, and I thought of the
corn. I am so distressed about it -- can we save it any+
how ? I cannot find my husband. Is he with you ?'
"He is not here.'
"Do you know where he is ?'
"Asleep in the barn.'
"He promised that the stacks should be seen to,
and now they are all neglected ! Can I do anything
to help ? Liddy is afraid to come out. Fancy finding
you here at such an hour ! Surely I can do something ? '
"You can bring up some reed-sheaves to me, one by
one, ma'am; if you are not afraid to come up the ladder
in the dark,' said Gabriel. "Every moment is precious
now, and that would save a good deal of time. It is
not very dark when the lightning has been gone a bit.'
<P 308>
"I'll do anything ! ' she said, resolutely. She instantly
took a sheaf upon her shoulder, clambered up close to
his heels, placed it behind the rod, and descended for
another. At her third ascent the rick suddenly brightened
with the brazen glare of shining majolica -- every knot
in every straw was visible. On the slope in front of him
appeared two human shapes, black as jet. The rick
lost its sheen -- -the shapes vanished. Gabriel turned his
head. It had been the sixth flash which had come from
the east behind him, and the two dark forms on the
slope had been the shadows of himself and Bathsheba.
Then came the peal. It hardly was credible that
such a heavenly light could be the parent of such a
diabolical sound.
"How terrible ! ' she exclaimed, and clutched him by
the sleeve. Gabriel turned, and steadied her on her
aerial perch by holding her arm. At the same moment,
while he was still reversed in his attitude, there was
more light, and he saw, as it were, a copy of the tall
poplar tree on the hill drawn in black on the wall of
the barn. It was the shadow of that tree, thrown across
by a secondary flash in the west.
The next flare came. Bathsheba was on the ground
now, shouldering another sheaf, and she bore its dazzle
without flinching -- thunder and ali-and again ascended
with the load. There was then a silence everywhere
for four or five minutes, and the crunch of the spars,
as Gabriel hastily drove them in, could again be distinctly
heard. He thought the crisis of the storm had passed.
But there came a burst of light.
"Hold on ! ' said Gabriel, taking the sheaf from her
shoulder, and grasping her arm again.
Heaven opened then, indeed. The flash was almost
too novel for its inexpressibly dangerous nature to be
at once realized, and they could only comprehend the
magnificence of its beauty. It sprang from east, west,
north, south, and was a perfect dance of death. The
forms of skeletons appeared in the air, shaped with
blue fire for bones -- dancing, leaping, striding, racing
around, and mingling altogether in unparalleled con+
fusion. With these were intertwined undulating snakes of
green, and behind these was a broad mass of lesser light.
Simultaneously came from every part of the tumbling
<P 309>
sky what may be called a shout ; since, though no shout
ever came near it, it was more of the nature of a shout
than of anything eise earthly. In the meantime one of
the grisly forms had alighted upon the point of Gabriel's
rod, to run invisibly down it, down the chain, and into
the earth. Gabriel was almost blinded, and he could
feel Bathsheba's warm arm tremble in his hand -- a
sensation novel and thrilling enough ; but love, life,
everything human, seemed small and trifling in such
close juxtaposition with an infuriated universe.
Oak had hardly time to gather up these impressions
into a thought, and to see how strangely the red feather
of her hat shone in this light, when the tall tree on the
hill before mentioned seemed on fire to a white heat,
and a new one among these terrible voices mingled with
the last crash of those preceding. It was a stupefying
blast, harsh and pitiless, and it fell upon their ears in a
dead, flat blow, without that reverberation which lends
the tones of a drum to more distant thunder. By the
lustre reflected from every part of the earth and from the
wide domical scoop above it, he saw that the tree was
sliced down the whole length of its tall, straight stem, a
huge riband of bark being apparently flung off. The
other portion remained erect, and revealed the bared
surface as a strip of white down the front. The
lightning had struck the tree. A sulphurous smell
filled the air; then all was silent, and black as a cave
in Hinnom.
" We had a narrow escape ! ' said Gabriel, hurriedly.
" You had better go down.'
Bathsheba said nothing ; but he could distinctly hear
her rhythmical pants, and the recurrent rustle of the
sheaf beside her in response to her frightened pulsations.
She descended the ladder, and, on second thoughts, he
followed her. The darkness was now impenetrable by
the sharpest vision. They both stood still at the
bottom, side by side. Bathsheba appeared to think
only of the weather -- Oak thought only of her just then.
At last he said --
"The storm seems to have passed now, at any
rate.'
" I think so too,' said Bathsheba. " Though there
are multitudes of gleams, look ! '
<P 310>
The sky was now filled with an incessant light,
frequent repetition melting into complete continuity, as
an unbroken sound results from the successive strokes
on a gong.
" Nothing serious,' said he. " I cannot understand
no rain falling. But Heaven be praised, it is all the
better for us. I am now going up again.'
" Gabriel, you are kinder than I deserve ! I will stay
and help you yet. O, why are not some of the others
here ! '
" They would have been here if they could,' said Oak,
in a hesitating way.
'O, I know it ali-all,' she said, adding slowly :
" They are all asleep in the barn, in a drunken sleep, and
my husband among them. That's it, is it not ? Don't
think I am a timid woman and can't endure things.'
"I am not certain,' said Gabriel. 'I will go and see,'
He crossed to the barn, leaving her there alone. He
looked through the chinks of the door. All was in
total darkness, as he had left it, and there still arose, as
at the former time, the steady buzz of many snores.
He felt a zephyr curling about his cheek, and turned.
It was Bathsheba's breath -- she had followed him, and
was looking into the same chink.
He endeavoured to put off the immediate and pain+
ful subject of their thoughts by remarking gently, "lf
you'll come back again, miss -- ma'am, and hand up a
few more; it would save much time.'
Then Oak went back again, ascended to the top,
stepped off the ladder for greater expedition, and went
on thatching. She followed, but without a sheaf
" Gabriel,' she said, in a strange and impressive voice.
Oak looked up at her. She had not spoken since
he left the barn. The soft and continual shimmer of
the dying lightning showed a marble face high against
the black sky of the opposite quarter. Bathsheba was
sitting almost on the apex of the stack, her feet gathered
up beneath her, and resting on the top round of the
ladder.
" Yes, mistress,' he said.
<P 311>
"I suppose you thought that when I galloped away
to Bath that night it was on purpose to be married ?"
'I did at last -- not at first,' he answered, somewhat
surprised at the abruptness with which this new subject
was broached.
" And others thought so, too ? '
" Yes.'
"And you blamed me for it ?'
" Weli-a little.'
"I thought so. Now, I care a little for your good
opinion, and I want to explain something-i have
longed to do it ever since I returned, and you looked so
gravely at me. For if I were to die -- and I may die
soon -- it would be dreadful that you should always think
mistakenly of me. Now, listen.'
Gabriel ceased his rustling.
'I went to Bath that night in the full intention of
breaking off my engagement to Mr. Troy. It was owing
to circumstances which occurred after I got there that
 -- that we were married. Now, do you see the matter
in a new light?'
" I do -- somewhat.'
" I must, I suppose, say more, now that I have
begun. And perhaps it's no harm, for you are certainly
under no delusion that I ever loved you, or that I can
have any object in speaking, more than that object I
have mentioned. Well, I was alone in a strange city,
and the horse was lame. And at last I didn't know
what to do. I saw, when it was too late, that scandal
might seize hold of me for meeting him alone in that
way. But I was coming away, when he suddenly said
he had that day seen a woman more beautiful than I,
and that his constancy could not be counted on unless
I at once became his.... And I was grieved and
troubled --  -- ' She cleared her voice, and waited a
moment, as if to gather breath. " And then, between
jealousy and distraction, I married him ! ' she whispered
with desperate impetuosity.
Gabriel made no reply.
"He was not to blame, for it was perfectly true about
 -- about his seeing somebody else,' she quickly added.
"And now I don't wish for a single remark from you
upon the subject --
<P 312>
indeed, I forbid it. I only wanted
you to know that misunderstood bit of my history before
a time comes when you could never know it. -- You want
some more sheaves ? '
She went down the ladder, and the work proceeded.
Gabriel soon perceived a languor in the movements of
his mistress up and down, and he said to her, gently as
a mother --
"I think you had better go indoors now, you are
tired. I can finish the rest alone. If the wind does
not change the rain is likely to keep off.'
"If I am useless I will go,' said Bathsheba, in a
flagging cadence. 'But O, if your life should be lost !'
" You are not useless; but I would rather not tire
you longer. You have done well.'
"And you better ! ' she said, gratefully. ! Thank you
for your devotion, a thousand times, Gabriel ! Good+
night-i know you are doing your very best for me.'
She diminished in the gloom, and vanished, and he
heard the latch of the gate fall as she passed through.
He worked in a reverie now, musing upon her story, and
upon the contradictoriness of that feminine heart which
had caused her to speak more warmly to him to-night
than she ever had done whilst unmarried and free to
speak as warmly as she chose.
He was disturbed in his meditation by a grating
noise from the coach-house. It was the vane on the
roof turning round, and this change in the wind was the
signal for a disastrous rain.
RAIN
<C xxxviii>
<P 313>
RAIN -- ONE SOLITARY MEETS ANOTHER
IT was now five o'clock, and the dawn was promising
to break in hues of drab and ash.
The air changed its temperature and stirred itself
more vigorously. Cool breezes coursed in transparent
eddies round Oak's face. The wind shifted yet a point
or two and blew stronger. In ten minutes every wind
of heaven seemed to be roaming at large. Some of the
thatching on the wheat-stacks was now whirled fantas+
tically aloft, and had to be replaced and weighted with
some rails that lay near at hand. This done, Oak slaved
away again at the barley. A huge drop of rain smote
his face, the wind snarled round every corner, the trees
rocked to the bases of their trunks, and the twigs clashed
in strife. Driving in spars at any point and on any
system, inch by inch he covered more and more safely
from ruin this distracting impersonation of seven hundred
pounds. 'The rain came on in earnest, and Oak soon felt
the water to be tracking cold and clammy routes down
his back. Ultimately he was reduced welinigh to a
homogeneous sop, and the dyes of his clothes trickled
down and stood in a pool at the foot of the ladder.
The rain stretched obliquely through the dull atmo+
sphere in liquid spines, unbroken in continuity between
their beginnings in the clouds and their points in him.
Oak suddenly remembered that eight months before
this time he had been fighting against fire in the same
spot as desperately as he was fighting against water
now -- and for a futile love of the same woman. As for
her --  --  But Oak was generous and true, and dis+
missed his reflections.
It was about seven o'clock in the dark leaden
morning when Gabriel came down from the last stack,
and thankfully exclaimed, "It is done .! ' He was
<P 314>
drenched, weary, and sad, and yet not so sad as drenched
and weary, for he was cheered by a sense of success in
a good cause.
Faint sounds came from the barn, and he looked
that way. Figures stepped singly and in pairs through
the doors -- all walking awkwardly, and abashed, save
the foremost, who wore a red jacket, and advanced
with his hands in his pockets, whistling. The others
shambled after with a conscience-stricken air : the whole
procession was not unlike Flaxman's group of the suitors
tottering on towards the infernal regions under the
conduct of Mercury. The gnarled shapes passed into
the village, Troy, their leader, entering the farmhouse.
Not a single one of them had turned his face to the
ricks, or apparently bestowed one thought upon their
condition.
Soon Oak too went homeward, by a different route
from theirs. In front of him against the wet glazed
surface of the lane he saw a person walking yet more
slowly than himself under an umbrella. The man
turned and plainly started; he was Boldwood.
" How are you this morning, sir ?' said Oak.
"Yes, it is a wet day. -- Oh, I am well, very well, I
thank you ; quite well.'
"I am glad to hear it, sir.'
Boldwood seemed to awake to the present by degrees.
" You look tired and ill, Oak,' he said then, desultorily
regarding his companion.
" I am tired. You look strangely altered, sir.'
"I? Not a bit of it : I am well enough. What put
that into your head ?'
"I thought you didn't look quite so topping as you
used to, that was all.'
" Indeed, then you are mistaken,' said Boldwood,
shortly. "Nothing hurts me. My constitution is an
iron one.'
"I've been working hard to get our ricks covered,
and was barely in time. Never had such a struggle in
my life.... Yours of course are safe, sir.'
" O yes.' Boldwood added, after an interval of
silence : " What did you ask, Oak ? '
" Your ricks are all covered before this time ? '
<P 315>
"No.'
" At any rate, the large ones upon the stone staddles ?'
" They are not.'
"Them under the hedge ?'
" No. I forgot to tell the thatcher to set about it.'
" Nor the little one by the stile ?'
"Nor the little one by the stile. I overlooked the
ricks this year.'
'Then not a tenth of your corn will come to measure,
sir.'
" Possibly not.
" Overlooked them,' repeated Gabriel slowly to him+
self. It is difficult to describe the intensely dramatic
effect that announcement had upon Oak at such a
moment. All the night he had been feeling that the
neglect he was labouring to repair was abnormal and
isolated -- the only instance of the kind within the circuit
of the county. Yet at this very time, within the same
parish, a greater waste had been going on, uncomplained
of and disregarded. A few months earlier Boldwood's
forgetting his husbandry would have been as preposter+
ous an idea as a sailor forgetting he was in a ship. Oak
was just thinking that whatever he himself might have
suffered from Bathsheba's marriage, here was a man
who had suffered more, when Boldwood spoke in a
changed voice -- that of one who yearned to make a
confidence and relieve his heart by an outpouring.
"Oak, you know as well as I that things have gone
wrong with me lately. I may as well own it. I was
going to get a little settled in life; but in some way my
plan has come to nothing.'
"I thought my mistress would have married you,'
said Gabriel, not knowing enough of the full depths of
Boldwood's love to keep silence on the farmer's account,
and determined not to evade discipline by doing so on
his own. 'However, it is so sometimes, and nothing
happens that we expect,' he added, with the repose of
a man whom misfortune had inured rather than sub+
dued.
'I daresay I am a joke about the parish,' said Bold+
wood, as if the subject came irresistibly to his tongue,
and with a miserable lightness meant to express his
indifference.
<P 316>
" O no -- I don't think that.'
 -- But the real truth of the matter is that there was
not, as some fancy, any jilting on -- her part. No
engagement ever existed between me and Miss Ever+
dene. People say so, but it is untrue: she never
promised me .! ' Boldwood stood still now and turned
his wild face to Oak. 'O, Gabriel,' he continued, "I
am weak and foolish, and I don't know what, and I
can't fend off my miserable grief ! ... I had some faint
belief in the mercy of God till I lost that woman. Yes,
He prepared a gourd to shade me, and like the prophet
I thanked Him and was glad. But the next day He
prepared a worm to smite the gourd and wither it; and
I feel it is better to die than to live.!"
A silence followed. Boldwood aroused himself from
the momentary mood of confidence into which he had
drifted, and walked on again, resuming his usual reserve,
" No, Gabriel,' he resumed, with a carelessness which
was like the smile on the countenance of a skull: "it
was made more of by other people than ever it was by
us. I do feel a little regret occasionally, but no woman
ever had power over me for any length of time. Well,
good morning ; I can trust you not to mention to others
what has passed between us two here.'
<C xxxix>
<P 317>
COMING HOME -- A CRY
ON the turnpke road, between Casterbridge and
Weatherbury, and about three miles from the former
which pervade the highways of this undulating part of
South Wessex. I returning from market it is usual
for the farmers and other gig-gentry to alight at the
bottom and walk up.
One Saturday evening in the month of October
Bathsheba's vehicle was duly creeping up this incline.
She was sitting listlessly in the second seat of the gig,
whilst walking beside her in farmer's marketing suit
of unusually fashionable cut was an erect, welimade
young man. Though on foot, he held the reins and
whip, and occasionally aimed light cuts at the horse's
ear with the end of the lash, as a recreation. This
man was her husband, formerly Sergeant Troy, who,
having bought his discharge with Bathsheba's money,
was gradually transforming himself into a farmer of a
spirited and very modern school. People of unalter+
able ideas still insisted upon calling him 'Sergeant'
when they met him, which was in some degree owing
to his having still retained the welishaped moustache
of his military days, and the soldierly bearing insepar+
able from his form and training.
"Yes, if it hadn't been for that wretched rain I
should have cleared two hundred as easy as looking,
my love,' he was saying. "Don't you see, it altered
all the chances? To speak like a book I once read,
wet weather is the narrative, and fine days are the
episodes, of our country's history; now, isn't that
true?'
' But the time of year is come for changeable weather.'
"Well, yes. The fact is, these autumn races are the
ruin of everybody. Never did I see such a day as 'twas .!
'Tis a wild open place, just out of Budmouth, and a
drab sea rolled in
<P 318>
towards us like liquid misery. Wind
and rain -- good Lord !. Dark ? Why, 'twas as black
as my hat before the last race was run. 'Twas five
o'clock, and you couldn't see the horses till they were
almost in, leave alone colours. The ground was as
heavy as lead, and all judgment from a fellow's experi+
ence went for nothing. Horses, riders, people, were
all blown about like ships at sea. Three booths were
blown over, and the wretched folk inside crawled out
upon their hands and knees; and in the next field
were as many as a dozen hats at one time. Aye,
Pimpernel regularly stuck fast, when about sixty yards
off, and when I saw Policy stepping on, it did knock
my heart against the lining of my ribs, I assure you,
my love.!'
" And you mean, Frank,' said Bathsheba, sadly --
her voice was painfully lowered from the fulness and
vivacity of the previous summer -- "that you have lost
more than a hundred pounds in a month by this
dreadful horse-racing ? O, Frank, it is cruel; it is
foolish of you to take away my money so. We shall
have to leave the farm; that will be the end of it !.'
' Humbug about cruel. Now, there 'tis again --
turn on the waterworks ; that's just like you.'
"But you'll promise me not to go to Budmouth
second meeting, won't you ? ' she implored. Bathsheba
was at the full depth for tears, but she maintained a
dry eye.
"I don't see why I should; in fact, if it turns out to
be a fine day, I was thinking of taking you.'
"Never, never.! I'll go a hundred miles the other
way first. I hate the sound of the very word.!'
"But the question of going to see the race or staying
at home has very little to do with the matter. Bets are
all booked safely enough before the race begins, you
may depend. Whether it is a bad race for me or a
good one, will have very little to do with our going
there next Monday.'
"But you don't mean to say that you have risked
anything on this one too .! ' she exclaimed, with an
agonized look.
"There now, don't you be a little fool. Wait till you
are told. Why, Bathsheba, you have lost all the pluck
and sauciness you formerly had, and upon my life if I
had known what a
<P 319>
chicken-hearted creature you were
under all your boldness, I'd never have-i know what.'
A flash of indignation might have been seen in
Bathsheba's dark eyes as she looked resolutely ahead
after this reply. They moved on without further
speech, some early-withered leaves from the trees which
hooded the road at this spot occasionally spinning
downward across their path to the earth.
A woman appeared on the brow of the hill. The
ridge was in a cutting, so that she was very near the
husband and wife before she became visible. Troy had
turned towards the gig to remount, and whilst putting
his foot on the step-the woman passed behind him.
Though the overshadowing trees and the approach
of eventide enveloped them in gloom, Bathsheba could
see plainly enough to discern the extreme poverty of
the woman's garb, and the sadness of her face.
"Please, sir, do you know at what time Casterbridge
Union-house closes at night ? '
A CRY
The woman said these words to Troy over his
shoulder.
Troy started visibly at the sound of the voice; yet
he seemed to recover presence of mind sufficient to
prevent himself from giving way to his impulse to
suddenly turn and face her. He said, slowly --
" I don't know."
The woman, on hearing him speak, quickly looked
up, examined the side of his face, and recognized the
soldier under the yeoman's garb. Her face was drawn
into an expression which had gladness and agony both
among its elements. She uttered an hysterical cry,
and fell down.
" O, poor thing.!' exclaimed Bathsheba, instantly
preparing to alight.
"Stay where you are, and attend to the horse!'
said Troy, peremptorily throwing her the reins and
the whip. "Walk the horse to the top: I'll see to
the woman.'
" But i -- -'
" Do you hear? Clk -- Poppet.!'
<P 320>
The horse, gig, and Bathsheba moved on.
"How on earth did you come here? I thought
you were miles away, or dead.! Why didn't you
write to me?' said Troy to the woman, in a strangely
gentle, yet hurried voice, as he lifted her up.
" I feared to."
'Have you any money?'
"None."
"Good Heaven -- I wish I had more to give you!.
Here's  --  wretched  --  the merest trifle. It is every
farthing I have left. I have none but what my wife
gives me, you know, and I can't ask her now.'
The woman made no answer.
"I have only another moment,' continued Troy;
'and now listen. Where are you going to-night?
Casterbridge Union?'
"Yes; I thought to go there.'
" You shan't go there; yet, wait. Yes, perhaps for
to-night ; I can do nothing better -- worse luck.! Sleep
there to-night, and stay there to-morrow. Monday is
the first free day I have; and on Monday morning,
at ten exactly, meet me on Grey's Bridge just out of the
town. I'll bring all the money I can muster. You
shan't want-i'll see that, Fanny; then I'll get you a
lodging somewhere. Good-bye till then. I am a brute
 -- but good-bye.!'
After advancing the distance which completed the
ascent of the hill, Bathsheba turned her head. The
woman was upon her feet, and Bathsheba saw her
withdrawing from Troy, and going feebly down the
hill by the third milestone from Casterbridge. Troy
then came on towards his wife, stepped into the gig,
took the reins from her hand, and without making any
observation whipped the horse into a trot. He was
rather agitated.
"Do you know who that woman was?' said Bath+
sheba, looking searchingly into his face.
"I do,' he said, looking boldly back into hers.
"I thought you did,' said she, with angry hauteur,
and still regarding him. " Who is she?'
<P 321>
He suddenly seemed to think that frankness would
benefit neither of the women.
'Nothing to either of us,' he said. "I know her
by sight."
'What is her name?'
"How should I know her name ?'
"I think you do.'
"Think if you will, and be --  -- " The sentence was
completed by a smart cut of the whip round Poppet's
flank, which caused the animal to start forward at a
wild pace. No more was said.
ON CASTERBRIDGE HIGHWAY
<C xl>
<P 322>
FOR a considerable time the woman walked on. Her
steps became feebler, and she strained her eyes to look
afar upon the naked road, now indistinct amid the
penumbrae of night. At length her onward walk
dwindled to the merest totter, and she opened a gate
within which was a haystack. Underneath this she sat
down and presently slept.
When the woman awoke it was to find herself in the
depths of a moonless and starless night. A heavy un+
broken crust of cloud stretched across the sky, shutting
out every speck of heaven ; and a distant halo which
hung over the town of Casterbridge was visible against
the black concave, the luminosity appearing the
brighter by its great contrast with the circumscribing
darkness. Towards this weak, soft glow the woman
turned her eyes.
"If I could only get there.!' she said. "Meet him
the day after to-morrow: God help me! Perhaps I
shall be in my grave before then.'
A manor-house clock from the far depths of shadow
struck the hour, one, in a small, attenuated tone. After
midnight the voice of a clock seems to lose in breadth
as much as in length, and to diminish its sonorousness
to a thin falsetto.
Afterwards a light -- two lights -- arose frona the re+
mote shade, and grew larger. A carriage rolled along
the toad, and passed the gate. It probably contained
some late diners-out. The beams from one lamp shone
for a moment upon the crouching woman, and threw
her face into vivid relieff. The face was young in the
groundwork, old in the finish ; the general contours
were flexuous and childlike, but the finer lineaments
had begun to be sharp and thin.
The pedestrian stood up, apparently with revived
determination, and looked around. The road appeared
to be
<P 323>
familiar to her, and she carefully scanned the fence
as she slowly walked along. Presently there became
visible a dim white shape; it was another milestone.
She drew her fingers across its face to feel the marks.
"Two more!' she said.
She leant against the stone as a means of rest for a
 short interval, then bestirred herself, and again pursued
her way. For a slight distance she bore up bravely,
afterwards flagging as before. This was beside a lone
copsewood, wherein heaps of white chips strewn upon
the leafy ground showed that woodmen had been
faggoting and making hurdles during the day. Now
there was not a rustle, not a breeze, not the faintest
clash of twigs to keep her company. The woman
looked over the gat, opened it, and went in. Close
to the entrance stood a row of faggots, bound and un+
bound, together with stakes of all sizes.
For a few seconds the wayfarer stood with that tense
stillness which signifies itself to be not the end but
merely the suspension, of a previous motion. Her
attitude was that of a person who listens, either to the
external world of sound, or to the imagined discourse of
thought. A close criticism might have detected signs
proving that she was intent on the latter alternative.
Moreover, as was shown by what followed, she was
oddly exercising the faculty of invention upon the spe+
ciality of the clever Jacquet Droz, the designer of auto+
matic substitutes for human limbs.
By the aid of the Casterbridge aurora, and by feeling
with her hands, the woman selected two sticks from the
heaps. These sticks were nearly straight to the height
of three or four feet, where each branched into a fork
like the letter Y. She sat down, snapped off the small
upper twigs, and carried the remainder with her into
the road. She placed one of these forks under each
arm as a crutch, tested them, timidly threw her whole
weight upon them -- so little that it was -- and swung
herself forward. The girl had made for herself a
material aid.
The crutches answered well. The pat of her feet,
and the tap of her sticks upon the highway, were all the
sounds that
<P 324>
came from the traveller now. She had
passed the last milestone by a good long distance, and
began to look wistfully towards the bank as if calculating
upon another milestone soon. The crutches, though
so very useful, had their limits of power. Mechanism
only transfers labour, being powerless to supersede it,
and the original amount of exertion was not cleared
away; it was thrown into the body and arms. She was
exhausted, and each swing forward became fainter. At
last she swayed sideways, and fell.
Here she lay, a shapeless heap, for ten minutes and
more. The morning wind began to boom dully over
the flats, and to move afresh dead leaves which had
lain still since yesterday. The woman desperately
turned round upon her knees, and next rose to her
feet. Steadying herself by the help of one crutch, she
essayed a step, then another, then a third, using the
crutches now as walking-sticks only. Thus she pro+
gressed till descending Mellstock Hill another milestone
appeared, and soon the beginning of an iron-railed fence
came into view. She staggered across to the first post,
clung to it, and looked around.
The Casterbridge lights were now individually visible,
It was getting towards morning, and vehicles might be
hoped for, if not expected soon. She listened. There
was not a sound of life save that acme and sublimation
of all dismal sounds, the hark of a fox, its three hollow
notes being rendered at intervals of a minute with the
precision of a funeral bell.
Less than a mile.!' the woman murmured. "No;
more,' she added, after a pause. 'The mile is to the
county hall, and my resting-place is on the other side
Casterbridge. A little over a mile, and there I am! '
After an interval she again spoke. "Five or six steps to
a yard -- six perhaps. I have to go seventeen hundred
yards. A hundred times six, six hundred. Seventeen
times that. O pity me, Lord.!'
Holding to the rails, she advanced, thrusting one
hand forward upon the rail, then the other, then leaning
over it whilst she dragged her feet on beneath.
This woman was not given to soliloquy; but ex,
tremity of feeling lessens the individuality of the weak,
as it increases
<P 325>
that of the strong. She said again in the
same tone, "I'll believe that the end lies five posts for+
ward, and no further, and so get strength to pass them.'
This was a practical application of the principle that
a half-feigned and fictitious faith is better than no faith
at all.
She passed five posts and held on to the fifth.
"I'll pass five more by believing my longed-for spot
is at the next fifth. I can do it.'
she passed five more.
"It lies only five further.'
she passed five more.
"But it is five further.'
She passed them.
'That stone bridge is the end of my journey,' she
said, when the bridge over the Froom was in view.
She crawled to the bridge. During the effort each
breath of the woman went into the air as if never to
return again.
"Now for the truth of the matter,' she said, sitting
down. "The truth is, that I have less than half a mile.'
Self-beguilement with what she had known all the time
to be false had given her strength to come over half
a mile that she would have been powerless to face in
the lump. The artifice showed that the woman, by
some mysterious intuition, had grasped the paradoxical
truth that blindness may operate more vigorously than
prescience, and the short-sighted effect more than the
far-seeing ; that limitation, and not comprehensiveness,
is needed for striking a blow.
The half-mile stood now before the sick and weary
woman like a stolid Juggernaut. It was an impassive
King of her world. The road here ran across Durnover
Moor, open to the road on either side. She surveyed
the wide space, the lights, herself, sighed, and lay down
against a guard-stone of the bridge.
Never was ingenuity exercised so sorely as the
traveller here exercised hers. Every conceivable aid,
m&thod, stratagem, mechanism, by which these last
desperate eight hundred yards could be overpasscd by a
human being unperceived, was revolved in her busy
brain, and dismissed as impracticable. She thought of
<P 326>
sticks, wheels, crawling -- she even thought of rolling.
But the exertion demanded by either of these latter two
was greater than to walk erect. The faculty of con+
trivance was worn out, Hopelessness had come at
last.
" No further.!' she whispered, and closed her eyes.
From the stripe of shadow on the opposite side of
the bridge a portion of shade seemed to detach itself
and move into isolation upon the pale white of the road.
It glided noiselessly towards the recumbent woman.
She became conscious of something touching her
hand; it was softness and it was warmth. She
opened her eye's, and the substance touched her face.
A dog was licking her cheek.
He was huge, heavy, and quiet creature, standing
darkly against the low horizon, and at least two feet
higher than the present position of her eyes. Whether
Newfoundland, mastiff, bloodhound, or what not, it was
impossible to say. He seemed to be of too strange and
mysterious a nature to belong to any variety among those
of popular nomenclature. Being thus assignable to no
breed, he was the ideal embodiment of canine greatness
 -- a generalization from what was common to all. Night,
in its sad, solemn, and benevolent aspect, apart from its
stealthy and cruel side, was personified in this form
Darkness endows the small and ordinary ones among
mankind with poetical power, and even the suffering
woman threw her idea nto figure.
In her reclining position she looked up to him just
as in earlier times she had, when standing, looked up
to a man. The animal, who was as homeless as she,
respectfully withdrew a step or two when the woman
moved, and, seeing that she did not repulse him, he
licked her hand again.
A thought moved within her like lightning. "Perhaps
I can make use of him-i might do it then!'
She pointed in the direction of Casterbridge, and
the dog seemed to misunderstand : he trotted on. Then,
finding she could not follow, he came back and whined.
The ultimate and saddest singularity of woman's effort
and invention was reached when, with a quickened breath+
ing, she rose to a stooping posture, and, resting her two
little arms
<P 327>
upon the shoulders of the dog, leant firmly
thereon, and murmured stimulating words. Whilst she
sorrowed in her heart she cheered with her voice, and
what was stranger than that the strong should need
encouragement from the weak was that cheerfulness
should be so well stimulated by such utter dejection.
Her friend moved forward slowly, and she with small
mincing steps moved forward beside him, half her
weight being thrown upon the animal. Sometimes
she sank as she had sunk from walking erect, from
the crutches, from the rails. The dog, who now
thoroughly understood her desire and her incapacity,
was frantic in his distress on these occasions ; he would
tug at her dress and run forward. She always called
him back, and it was now to be observed that the
woman listened for human sounds only to avoid them.
It was evident that she had an object in keeping her
presence on the road and her forlorn state unknown.
Their progress was necessarily very slow. They
reached the bottom of the town, and the Casterbridge
lamps lay before them like fallen Pleiads as they turned
to the left into the dense shade of a deserted avenue of
chestnuts, and so skirted the borough. Thus the town
was passed, and the goal was reached.
On this much-desired spot outside the town rose a
picturesque building. Originally it had been a mere
case to hold people. The shell had been so thin, so
devoid of excrescence, and so closely drawn over the
accommodation granted, that the grim character of
what was beneath showed through it, as the shape of
a body is visible under a winding-sheet.
Then Nature, as if offended, lent a hand. Masses
of ivy grew up, completely covering the walls, till the
place looked like an abbey; and it was discovered that
the view from the front, over the Casterbridge chimneys,
was one of the most magnificent in the county. A
neighbouring earl once said that he would give up a
year's rental to have at his own door the view enjoyed
by the inmates from theirs -- and very probably the
inmates would have given up the view for his year's
rental.
This stone edifice consisted of a central mass and
<P 328>
two wings, whereon stood as sentinels a few slim
chimneys, now gurgling sorrowfully to the slow wind.
In the wall was a gate, and by the gate a belipull
formed of a hanging wire. The woman raised herself
as high as possible upon her knees, and could just
reach the handle. She moved it and fell forwards in
a bowed attitude, her face upon her bosom.
It was getting on towards six o'clock, and sounds of
movement were to be heard inside the building which
was the haven of rest to this wearied soul. A little door
by the large one was opened, and a man appeared inside.
He discerned the panting heap of clothes, went back
for a light, and came again. He entered a second
time, and returned with two women.
These lifted the prostrate figure and assisted her in
through the doorway. The man then closed the door.
How did she get here ?" said one of the women.
"The Lord knows,' said the other.
There is a dog outside," murmured the overcome
traveller. " Where is he gone ? He helped me.'
I stoned him away,' said the man.
The little procession then moved forward -- the man
in front bearing the light, the two bony women next,
supporting between them the small and supple one.
Thus they entered the house and disappeared.
SUSPICION
<C xli>
<P 329>
SUSPICION -- FANNY IS SENT FOR
BATHSHEBA said very little to her husband all that
evening of their return from market, and he was not
disposed to say much to her. He exhibited the un+
pleasant combination of a restless condition with a
silent tongue. The next day, which was Sunday, passed
nearly in the same manner as regarded their taciturnity,
Bathsheba going to church both morning and afternoon.
This was the day before the Budmouth races. In the
evening Troy said, suddenly --
" Bathsheba, could you let me have twenty pounds ?"
Her countenance instantly sank. ' Twenty pounds ?
she said.
'The fact is, I want it badly.' The anxiety upon
Troy's face was unusual and very marked. lt was a
culmination of the mood he had been in all the day.
"Ah !. for those races to-morrow.'
Troy for the moment made no reply. Her mistake
had its advantages to a man who shrank from having
his mind inspected as he did now. "Well, suppose I
do want it for races ?' he said, at last.
"O, Frank.!' Bathsheba replied, and there was such
a volume of entreaty in the words. "Only such a few
weeks ago you said that I was far sweeter than all your
other pleasures put together, and that you would give
them all up for me; and now, won't you give up this
one, which is more a worry than a pleasure? Do,
Frank. Come, let me fascinate you by all I can do
 -- by pretty words and pretty looks, and everything I
can think of -- to stay at home. Say yes to your wife --
say yes.!'
The tenderest and softest phases of Bathsheba's
nature were prominent now -- advanced impulsively for
his acceptance, without any of the disguises and defences
which the wariness of her character when she was cool
too frequently threw
<P 330>
over them. Few men could have
resisted the arch yet dignified entreaty of the beautiful
face, thrown a little back and sideways in the weli
known attitude that expresses more than the words it
accompanies, and which seems to have heen designed
for these special occasions. Had the woman not been
his wife, Troy would have succumbed instantly ; as it
was, he thought he would not deceive her longer.
"The money is not wanted for racing debts at all,'
he said.
" What is it for ?' she asked. " You worry me a great
deal by these mysterious responsibilities, Frank."
Troy hesitated. He did not now love her enough
to allow himself to be carried too far by her ways. Yet
it was necessary to be civil. "You wrong me by such
a suspicious manner, he said. " Such strait-waistcoating
as you treat me to is not becoming in you at so early a
date.'
"I think that I have a right to grumble a little if I
pay,' she said, with features between a smile and a
pout.
Exactly; and, the former being done, suppose we
proceed to the latter. Bathsheba, fun is all very well,
but don't go too far, or you may have cause to regret
something.'
She reddened. " I do that already,' she said, quickly
" What do you regret ? '
SUSPICION
"That my romance has come to an end.'
" All romances end at marriage.'
'I wish you wouldn't talk like that. You grieve me
to my soul by being smart at my expense.'
" You are dull enough at mine. I believe you hate
me.'
" Not you -- only your faults. I do hate them.'
"'Twould be much more becoming if you set your+
self to cure them. Come, let's strike a balance with
the twenty pounds, and be friends.'
She gave a sigh of resignation. 'I have about that
sum here for household expenses. If you must have it,
take it.'
"Very good. Thank you. I expect I shall have
gone away before you are in to breakfast to-morrow.'
"And must you go ? Ah !. there was a time, Frank,
when it would have taken a good many promises to
other people to drag you away from me. You used to
call me darling, then.
<P 331>
But it doesn't matter to you how
my days are passed now.'
"I must go, in spite of sentiment.' Troy, as he
spoke, looked at his watch, and, apparently actuated by
<1non lucendo>1 principles, opened the case at the back,
revealing, snugly stowed within it, a small coil of hair.
Bathsheba's eyes had been accidentally lifted at that
moment, and she saw the action and saw the hair. She
flushed in pain and surprise, and some words escaped
her before she had thought whether or not it was wise
to utter them. "A woman's curl of hair !' she said.
"O, Frank, whose is that ?'
Troy had instantly closed his watch. He carelessly
replied, as one who cloaked some feelings that the sight
had stirred. ' Why, yours, of course. Whose should it
be ? I had quite forgotten that I had it.'
' What a dreadful fib, Frank.!'
" I tell you I had forgotten it.!' he said, loudly.
'I don't mean that -- it was yellow hair.'
"Nonsense.'
"That's insulting me. I know it was yellow. Now
whose was it ? I want to know.'
"Very welii'll tell you, so make no more ado. It
is the hair of a young woman I was going to marry
before I knew you.'
" You ought to tell me her name, then.'
"I cannot do that.'
"Is she married yet?'
"No.'
"Is she alive?'
" Yes.'
"Is she pretty ?'
" Yes.'
'It is wonderful how she can be, poor thing, under
such an awful affliction!'
" Affliction -- what affliction ? ' he inquired, quickly.
" Having hair of that dreadful colour.'
" Oh -- ho-i like that.!' said Troy, recovering him+
self. "Why, her hair has been admired by everybody
who has seen her since she has worn it loose, which has
not been long. It is
<P 332>
beautiful hair. People used to
turn their heads to look at it, poor girl.!'
"Pooh! that's nothing -- that's nothing!' she ex+
claimed, in incipient accents of pique. 'If I cared for
your love as much as I used to I could say people had
turned to look at mine.'
"Bathsheba, don't be so fitful and jealous. You
knew what married life would be like, and shouldn't
have entered it if you feared these contingencies.'
Troy had by this time driven her to bitterness: her
heart was big in her throat, and the ducts to her eyes
were painfully full. Ashamed as she was to show
emotion, at last she burst out: --
"This is all I get for loving you so well! Ah! when
I married you your life was dearer to me than my own.
I would have died for you -- how truly I can say that I
would have died for you.! And now you sneer at my
foolishness in marrying you. O! is it kind to me to
throw my mistake in my face ? Whatever opinion you
may have of my wisdom, you should not tell me of it so
mercilessly, now that I am in your power.'
" I can't help how things fall out,' said Troy; "upon
my heart, women will be the death of me.!'
"Well you shouldn't keep people's hair. You'll
burn it, won't you, Frank?'
Frank went on as if he had not heard her. "There
are considerations even before my consideration for you;
reparations to be made -- ties you know nothing of If
you repent of marrying, so do I.'
Trembling now, she put her hand upon his arm,
saying, in mingled tones of wretchedness and coaxing,
"I only repent it if you don't love me better than any
woman in the world.! I don't otherwise, Frank. You
don't repent because you already love somebody better
than you love me, do you ?'
"I don't know. Why do you say that?'
"You won't burn that curl. You like the woman
who owns that pretty hair -- yes; it is pretty -- more
beautiful than my miserable black mane! Well, it is
no use; I can't help being ugly. You must like her
best, if you will!'
"Until to-day, when I took it from a drawer, I have
<P 333>
never looked upon that bit of hair for several months --
that I am ready to swear.'
"But just now you said "ties;" and then -- that
woman we met?'
"'Twas the meeting with her that reminded me of
the hair.'
"Is it hers, then ?'
"Yes. There, now that you have wormed it out of
me, I hope you are content.'
"And what are the ties ?'
"Oh! that meant nothing -- a mere jest.'
"A mere jest ! ' she said, in mournful astonishment.
"Can you jest when I am so wretchedly in earnest ?
Tell me the truth, Frank. I am not a fool, you know,
although I am a woman, and have my woman's moments.
Come! treat me fairly,' she said, looking honestly and
fearlessly into his face. "I don't want much; bare
justice -- that's all! Ah! once I felt I could be content
with nothing less than the highest homage from the
husband I should choose. Now, anything short of
cruelty will content me. Yes! the independent and
spirited Bathsheba is come to this.!'
"For Heaven's sake don't be so desperate! "Troy
said, snappishly, rising as he did so, and leaving the
room.
Directly he had gone, Bathsheba burst into great
sobs -- dry-eyed sobs, which cut as they came, without
any softening by tears. But she determined to repress
all evidences of feeling. She was conquered; but she
would never own it as long as she lived. Her pride
was indeed brought low by despairing discoveries of her
spoliation by marriage with a less pure nature than her
own. She chafed to and fro in rebelliousness, like a
caged leopard; her whole soul was in arms, and the
blood fired her face. Until she had met Troy, Bath+
sheba had heen proud of her position as a woman; it
had been a glory to her to know that her lips had been
touched hy no man's on earth -- that her waist had
never been encircled by a lover's arm. She hated
herself now. In those earlier days she had always
nourished a secret contempt for girls who were the
slaves of the first goodiooking young fellow who should
choose to salute them. She had never taken kindly to
the idea of
<P 334>
marriage in the abstract as did the majority
of women she saw about her. In the turmoil of her
anxiety for her lover she had agreed to marry him; but
the perception that had accompanied her happiest hours
on this account was rather that of self-sacrifice than of
promotion and honour. Although she scarcely knew
the divinity's name, Diana was the goddess whom
Bathsheba instinctively adored. That she had never,
by look, word, or sign, encouraged a man to approach
her -- that she had felt herself sufficient to herself, and
had in the independence of her girlish heart fancied
there was a certain degradation in renouncing the
simplicity of a maiden existence to become the humbler
half of an indifferent matrimonial whole -- were facts
now bitterly remembered. O, if she had never
stooped to folly of this kind, respectable as it was, and
could only stand again, as she had stood on the hill at
Norcombe, and dare Troy or any other man to pollute
a hair of her head by his interference!.
The next morning she rose earlier than usual, and
had the horse saddled for her ride round the farm in
the customary way. When she came in at half-past
eight -- their usual hour for breakfasting -- she was in+
formed that her husband had risen, taken his breakfast,
and driven off to Casterbridge with the gig and Poppet.
After breakfast she was cool and collected -- quite
herself in fact -- and she rambled to the gate, intending
to walk to another quarter of the farm, which she still
personally superintended as well as her duties in the
house would permit, continually, however, finding her+
self preceded in forethought by Gabriel Oak, for whom
she began to entertain the genuine friendship of a sister.
Of course, she sometimes thought of him in the light of
an old lover, and had momentary imaginings of what
life with him as a husband would have been like; also
of life with Boldwood under the same conditions. But
Bathsheba, though she could feel, was not much given
to futile dreaming, and her musings under this head
were short and entirely confined to the times when
Troy's neglect was more than ordinarily evident.
She saw coming up the road a man like Mr. Boldwood.
<P 335>
It was Mr. Boldwood. Bathsheba blushed painfully,
and watched. The farmer stopped when still a long
way off, and held up his hand to Gabriel Oak, who was
in a footpath across the field. The two men then
approached each other and seemed to engage in
earnest conversation.
Thus they continued for a long time. Joseph Poor+
grass now passed near them, wheeling a barrow of apples
up the hill to Bathsheba's residence. Boldwood and
Gabriel called to him, spoke to him for a few minutes,
and then all three parted, Joseph immediately coming
up the hill with his barrow.
Bathsheba, who had seen this pantomime with some
surprise, experienced great relief when Boldwood turned
back again. 'Well, what's the message, Joseph ? ' she
said.
He set down his barrow, and, putting upon himself
the refined aspect that a conversation with a lady re+
quired, spoke to Bathsheba over the gate.
"You'll never see Fanny Robin no more -- use nor
principai-ma'am.'
" Why ?'
"Because she's dead in the Union.'
" Fanny dead -- never.!'
" Yes, ma'am.'
" What did she die from ?"
"I don't know for certain; but I should be inclined
to think it was from general neshness of constitution.
She was such a limber maid that 'a could stand no
hardship, even when I knowed her, and 'a went like a
candle-snoff, so 'tis said. She was took bad in the
morning, and, being quite feeble and worn out, she
died in the evening. She belongs by law to our parish;
and Mr. Boldwood is going to send a waggon at three
this afternoon to fetch her home here and bury her.'
"Indeed I shall not let Mr. Boldwood do any such
thing-i shall do it! Fanny was my uncle's servant,
and, although I only knew her for a couple of days,
FANNY IS SENT FOR
she belongs to me. How very, very sad this is.! --
the idea of Fanny being in a workhouse.' Bathsheba
had begun to know what suffering was, and she spoke
with real feeling.... "Send across to Mr. Boldwood's,
and say that Mrs. Troy will take upon herself the duty
<P 336>
of fetching an old servant of the family.... We
ought not to put her in a waggon; we'll get a hearse.'
" There will hardly be time, ma'am, will there?'
" Perhaps not,' she said, musingly. " When did you
say we must be at the door -- three o'clock?'
" Three o'clock this afternoon, ma'am, so to speak it.'
"Very weli-you go with it. A pretty waggon is
better than an ugly hearse, after all. Joseph, have the
new spring waggon with the blue body and red wheels,
and wash it very clean. And, Joseph --  -- '
" Yes, ma'am.'
' Carry with you some evergreens and flowers to put
upon her coffin  -- indeed, gather a great many, and
completely bury her in them. Get some boughs of
laurustinus, and variegated box, and yew, and boy'siove;
ay, and some hunches of chrysanthemum. And let old
Pleasant draw her, because she knew him so well.'
'I will, ma'am. I ought to have said that the
Union, in the form of four labouring men, will meet me
when I gets to our churchyard gate, and take her and
bury her according to the rites of the Board of Guardians,
as by law ordained.'
" Dear me -- Casterbridge Union -- and is Fanny come
to this?' said Bathsheba, musing. "I wish I had known
of it sooner. I thought she was far away. How long
has she lived there?'
"On'y been there a day or two.'
"Oh.! -- then she has not been staying there as a
regular inmate?'
" No. She first went to live in a garrison-town t'other
side o' Wessex, and since then she's been picking up a
living at seampstering in Melchester for several months,
at the house of a very respectable widow-woman who
takes in work of that sort. She only got handy the
Union-house on Sunday morning 'a b'lieve, and 'tis sup+
posed here and there that she had traipsed every step
of the way from Melchester. Why she left her place,
I can't say, for I don't know; and as to a lie, why, I
wouldn't tell it. That's the short of the story, ma'am.'
"Ah-h .! '
<P 337>
No gem ever flashed from a rosy ray to a white one
more rapidly than changed the young wife's counten+
ance whilst this word came from her in a long-drawn
breath. "Did she walk along our turnpike-road?' she
said, in a suddenly restless and eager voice.
"I believe she did.... Ma'am, shall I call Liddy?
You bain't well, ma'am, surely ? You look like a lily --
so pale and fainty.!'
"No; don't call her; it is nothing. When did she
pass Weatherbury?'
"Last Saturday night.'
"That will do, Joseph; now you may go.'
" Certainly, ma'am.'
" Joseph, come hither a moment. What was the
colour of Fanny Robin's hair?'
"Really, mistress, now that 'tis put to me so judge+
and-jury like, I can't call to mind, if ye'll believe me.!'
"Never mind; go on and do what I told you. Stop
 -- well no, go on.'
She turned herself away from him, that he might no
longer notice the mood which had set its sign so visibly
upon her, and went indoors with a distress:ng sense of
faintness and a beating brow. About an hour after, she
heard the noise of the waggon and went out, still with a
painful consciousness of her bewildered and troubled
look. Joseph, dressed in his best suit of clothes, was
putting in the horse to start. The shrubs and flowers
were all piled in the waggon, as she had directed
Bathsheba hardly saw them now.
" Whose sweetheart did you say, Joseph?'
'I don't know, ma'am.'
"Are you quite sure?'
" Yes, ma'am, quite sure.'
"Sure of what?'
"I'm sure that all I know is that she arrived in the
morning and died in the evening without further parley.
What Oak and Mr. Boldwood told me was only these
few words. "Little Fanny Robin is dead, Joseph,'
Gabriel said, looking in my face in his steady old way.
I was very sorry, and I said, "Ah!. -- and how did she
<P 338>
come to die?' "Well, she's dead in Casterhridge
Union," he said; "and perhaps 'tisn't much matter
about how she came to die. She reached the Union
early Sunday morning, and died in the afternoon -- that's
clear enough." Then I asked what she'd been doing
lately, and Mr. Boldwood turned round to me then, and
left off spitting a thistle with the end of his stick. He
told me about her having lived by seampstering in
Melchester, as I mentioned to you, and that she walked
therefrom at the end of last week, passing near here
Saturday night in the dusk. They then said I had
better just name a hent of her death to you, and away
they went. Her death might have been brought on by
biding in the night wind, you know, ma'am; for people
used to say she'd go off in a decline: she used to cough
a good deal in winter time. However, 'tisn't much
odds to us about that now, for 'tis all over.'
"Have you heard a different story at all?' She
looked at him so intently that Joseph's eyes quailed.
"Not a word, mistress, I assure 'ee.!" he said.
"Hardly anybody in the parish knows the news yet.'
"I wonder why Gabriel didn't bring the message to
me himself. He mostly makes a point of seeing me
upon the most trifling errand.' These words were
merely murmured, and she was looking upon the ground.
"Perhaps he was busy, ma'am,' Joseph suggested.
"And sometimes he seems to suffer from things upon
his mind, connected with the time when he was better
off than 'a is now. 'A's rather a curious item, but a
very understanding shepherd, and learned in books.'
'Did anything seem upon his mind whilst he was
speaking to you about this?'
'I cannot but say that there did, ma'am. He was
terrible down, and so was Farmer Boldwood.'
'Thank you, Joseph. That will do. Go on now,
or you'll be late.'
Bathsheba, still unhappy, went indoors again. In
the course of the afternoon she said to Liddy, Who had
been informed of the occurrence, " What was the colour
<P 339>
of poor Fanny Robin's hair? Do you know? I cannot
recollect-i only saw her for a day or two.'
"It was light, ma'am; but she wore it rather short,
and packed away under her cap, so that you would
hardly notice it. But I have seen her let it down when
she was going to bed, and it looked beautiful then.
Real golden hair.'
" Her young man was a soldier, was he not?'
"Yes. In the same regiment as Mr. Troy. He says
he knew him very well.'
" What, Mr. Troy says so? How came he to say
that?'
"One day I just named it to him, and asked him if
he knew Fanny's young man. He said, "O yes, he
knew the young man as well as he knew himself, and
that there wasn't a man in the regiment he liked
better."'
"Ah! Said that, did he ?'
"Yes; and he said there was a strong likeness be+
tween himself and the other young man, so that some+
times people mistook them --  -- '
' Liddy, for Heaven's sake stop your talking.!' said
Bathsheba, with the nervous petulance that comes from
worrying perceptions.
JOSEPH AND HIS BURDEN
<P 340>
<C xlii>
JOSEPH AND HIS BURDEN -- BUCK'S HEAD
A WALL bounded the site of Casterbridge Union+
house, except along a portion of the end. Here a high
gable stood prominent, and it was covered like the front
with a mat of ivy. In this gable was no window,
chimney, ornament, or protuberance of any kind. The
single feature appertaining to it, beyond the expanse of
dark green leaves, was a small door.
The situation of the door was peculiar. The sill
was three or four feet above the ground, and for a
moment one was at a loss for an explanation of this
exceptional altitude, till ruts immediately beneath sug+
gested that the door was used solely for the passage of
articles and persons to and from the level of a vehicle
standing on the outside. Upon the whole, the door
seemed to advertise itself as a species of Traitor's Gate
translated to another sphere. That entry and exit
hereby was only at rare intervals became apparent on
noting that tufts of grass were allowed to flourish undis+
turbed in the chinks of the sill.
As the clock over the South-street Alms-house pointed
to five minutes to three, a blue spring waggon, picked
out with red, and containing boughs and flowers, passed
the end of the street, and up towards this side of the
building. Whilst the chimes were yet stammering out
a shattered form of "Malbrook,' Joseph Poorgrass rang
the bell, and received directions to back his waggon
against the high door under the gable. The door then
opened, and a plain elm coffin was slowly thrust forth,
and laid by two men in fustian along the middle of the
vehicle.
One of the men then stepped up beside it, took from
his pocket a lump of chalk, and wrote upon the cover
the name and a few other words in a large scrawling
hand. (We believe that they do these things more
tenderly now, and provide a
<P 341>
plate.) He covered the
whole with a black cloth, threadbare, but decent, the
taiiboard of the waggon was returned to its place, one
of the men handed a certificate of registry to Poorgrass,
and both entered the door, closing it hehind them.
Their connection with her, short as it had been, was
over for ever.
Joseph then placed the flowers as enjoined, and the
evergreens around the flowers, till it was difficult to
divine what the waggon contained; he smacked his
whip, and the rather pleasing funeral car crept down
the hill, and along the road to Weatherbury.
The afternoon drew on apace, and, looking to the
right towards the sea as he walked beside the horse, Poor+
grass saw strange clouds and scrolls of mist rolling over
the long ridges which girt the landscape in that quarter.
They came in yet greater volumes, and indolently crept
across the intervening valleys, and around the withered
papery flags of the moor and river brinks. Then their
dank spongy forms closed in upon the sky. It was
a sudden overgrowth of atmospheric fungi which had
their roots in the neighbouring sea, and by the time
that horse, man, and corpse entered Yalbury Great
Wood, these silent workings of an invisible hand had
reached them, and they were completely enveloped,
this being the first arrival of the autumn fogs, and the
first fog of the series.
The air was as an eye suddenly struck blind. The
waggon and its load rolled no longer on the horizontal
division between clearness and opacity, but were
imbedded in an elastic body of a monotonous pallor
throughout. There was no perceptible motion in the
air, not a visible drop of water fell upon a leaf of the
beeches, birches, and firs composing the wood on either
side. The trees stood in an attitude of intentness, as if
they waited longingly for a wind to come and rock
them. A startling quiet overhung all surrounding things
 -- so completely, that the crunching of the waggon+
wheels was as a great noise, and small rustles, which
had never ohtained a hearing except by night, were dis+
tinctly individualized.
Joseph Poorgrass looked round upon his sad burden
as it loomed faintly through the flowering laurustinus,
then at the
<P 342>
unfathomable gloom amid the high trees on
each hand, indistinct, shadowless, and spectreiike in
their monochrome of grey. He felt anything but cheer+
ful, and wished he had the company even of a child or
dog. Stopping the home, he listened. Not a footstep
or wheel was audible anywhere around, and the dead
silence was broken only by a heavy particle falling from
a tree through the evergreens and alighting with a smart
rap upon the coffin of poor Fanny. The fog had by
this time saturated the trees, and this was the first
dropping of water from the overbrimming leaves. The
hollow echo of its fall reminded the waggoner painfully
of the grim Leveller. Then hard by came down another
drop, then two or three. Presently there was a continual
tapping of these heavy drops upon the dead leaves, the
road, and the travellers. The nearer boughs were beadcd
with the mist to the greyness of aged men, and the rusty+
red leaves of the beeches were hung with similar drops,
like diamonds on auburn hair.
At the roadside hamlet called Roy-Town, just beyond
this wood, was the old inn Buck's Head. It was about
a mile and a half from Weatherbury, and in the meridian
times of stage-coach travelling had been the place
where many coaches changed and kept their relays
of horses. All the old stabling was now pulled down,
and little remained besides the habitable inn itself,
which, standing a little way back from the road, sig+
nified its existence to people far up and down the
highway by a sign hanging from the horizontal bough
of an elm on the opposite side of the way.
Travellers  -- for the variety <1tourist>1 had hardly
developed into a distinct species at this date -- some+
times said in passing, when they cast their eyes up to
the sign-bearing tree, that artists were fond of repre+
senting the signboard hanging thus, but that they
themselves had never before noticed so perfect an
instance in actual working order. It was near this tree
that the waggon was standing into which Gabriel Oak
crept on his first journey to Weatherbury; but, owing
to the darkness, the sign and the inn had been un+
observed.
The manners of the inn were of the old-established
<P 343>
type. Indeed, in the minds of its frequenters they
existed as unalterable formule : <1e.g.>1 --
Rap with the bottom of your pint for more liquor.
For tobacco, shout.
In calling for the girl in waiting, say, "Maid.!'
Ditto for the landlady, 'Old Soul.!' etc., etc.
It was a relief to Joseph's heart when the friendly
signboard came in view, and, stopping his horse
immediately beneath it, he proceeded to fulfil an
intention made a long time before. His spirits were
oozing out of him quite. He turned the horse's head
to the green bank, and entered the hostel for a mug
of ale.
Going down into the kitchen of the inn, the floor
of which was a step below the passage, which in its
BUCK'S HEAD
turn was a step below the road outside, what should
Joseph see to gladden his eyes but two copper-coloured
discs, in the form of the countenances of Mr. Jan
Coggan and Mr. Mark Clark. These owners of the
two most appreciative throats in the neighbourhood,
within the pale of respectability, were now sitting face
to face over a threeiegged circular table, having an
iron rim to keep cups and pots from being accidentally
elbowed off; they might have been said to resemble
the setting sun and the full moon shining <1vis-a*-vis>1
across the globe.
" Why, 'tis neighbour Poorgrass.!' said Mark Clark.
"I'm sure your face don't praise your mistress's table,
Joseph.'
"I've had a very pale companion for the last four
miles,' said Joseph, indulging in a shudder toned
down by resignation. 'And to speak the truth, 'twas
beginning to tell upon me. I assure ye, I ha'n't seed
the colour of victuals or drink since breakfast time
this morning, and that was no more than a dew-bit
afield.'
"Then drink, Joseph, and don't restrain yourself!.'
said Coggan, handing him a hooped mug three+
quarters full.
Joseph drank for a moderately long time, then for
a longer time, saying, as he lowered the jug, "'Tis
pretty drinking -- very
<P 344>
pretty drinking, and is more
than cheerful on my melancholy errand, so to speak it.'
"True, drink is a pleasant delight,' said Jan, as one
who repeated a truism so familiar to his brain that he
hardly noticed its passage over his tongue ; and,
lifting the cup, Coggan tilted his head gradually
backwards, with closed eyes, that his expectant soul
might not be diverted for one instant from its bliss
by irrelevant surroundings.
"Well, I must be on again,' said Poorgmss. "Not
but that I should like another nip with ye; but the
parish might lose confidence in me if I was seed
here.'
" Where be ye trading o't to to-day, then, Joseph ?'
"Back to Weatherbury. I've got poor little Fanny
Robin in my waggon outside, and I must be at the
churchyard gates at a quarter to five with her.'
'Ay-i've heard of it. And so she's nailed up in
parish boards after all, and nobody to pay the bell
shilling and the grave half-crown.'
"The parish pays the grave half-crown, but not the
bell shilling, because the bell's a luxery: but 'a can
hardly do without the grave, poor body. However, I
expect our mistress will pay all.'
"A pretty maid as ever I see.! But what's yer hurry,
Joseph ? The pore woman's dead, and you can't bring
her to life, and you may as well sit down comfortable,
and finish another with us.'
"I don't mind taking just the least thimbleful ye
can dream of more with ye, sonnies. But only a few
minutes, because 'tis as 'tis.'
"Of course, you'll have another drop. A man's
twice the man afterwards. You feel so warm and
glorious, and you whop and slap at your work without
any trouble, and everything goes on like sticks a+
breaking. Too much liquor is bad, and leads us to
that horned man in the smoky house ; but after all,
many people haven't the gift of enjoying a wet, and
since we be highly favoured with a power that way,
we should make the most o't.'
"True,' said Mark Clark. "'Tis a talent the Lord
<P 345>
has mercifully bestowed upon us, and we ought not
to neglect it. But, what with the parsons and clerks
and schooipeople and serious tea-parties, the merry
old ways of good life have gone to the dogs -- upon
my carcase, they have.!'
" Well, really, I must be onward again now,' said
Joseph.
'Now, now, Joseph; nonsense.! The poor woman
is dead, isn't she, and what's your hurry?'
"Well, I hope Providence won't be in a way with
me for my doings,' said Joseph, again sitting down.
'I've been troubled with weak moments lately, 'tis
true. I've been drinky once this month already, and
I did not go to church a-Sunday, and I dropped a
curse or two yesterday; so I don't want to go too far
for my safety. Your next world is your next world,
and not to be squandered offhand.'
'I believe ye to be a chapeimember, Joseph. That
I do.'
'Oh, no, no.! I don't go so far as that.'
" For my part,' said Coggan, "I'm staunch Church
of England.'
" Ay, and faith, so be I,' said Mark Clark.
"I won't say much for myself; I don't wish to,'
Coggan continued, with that tendency to talk on
principles which is characteristic of the barley-corn.
"But I've never changed a single doctrine : I've stuck
like a plaster to the old faith I was born in. Yes;
there's this to be said for the Church, a man can
belong to the Church and bide in his cheerful old
inn, and never trouble or worry his mind about
doctrines at all. But to be a meetinger, you must
go to chapel in all winds and weathers, and make
yerself as frantic as a skit. Not but that chapei
members be clever chaps enough in their way. They
can lift up beautiful prayers out of their own heads, all
about their families and shipwmcks in the newspaper.'
"They can -- they can,' said Mark Clark, with cor+
roborative feeling ; "but we Churchmen, you see, must
have it all printed aforehand, or, dang it all, we should
no more know what to say to a great gaffer like the
Lord than babes unborn,'
" Chapeifolk be more hand-in-glove with them above
than we,' said Joseph, thoughtfully.
" Yes,' said Coggan. " We know very well that if
anybody do go to heaven, they will. They've worked
hard for it, and they
<P 346>
deserve to have it, such as 'tis.
I bain't such a fool as to pretend that we who stick
to the Church have the same chance as they, because
we know we have not. But I hate a feller who'll
change his old ancient doctrines for the sake of getting
to heaven. I'd as soon turn king's-evidence for the
few pounds you get. Why, neighbours, when every
one of my taties were frosted, our Parson Thirdly
were the man who gave me a sack for seed, though
he hardly had one for his own use, and no money to
buy 'em. If it hadn't been for him, I shouldn't hae
had a tatie to put in my garden. D'ye think I'd
turn after that? No, I'll stick to my side; and if we
be in the wrong, so be it : I'll fall with the fallen .! '
" Well said -- very well said,' observed Joseph. --
" However, folks, I must be moving now: upon my life
I must. Pa'son Thirdly will be waiting at the church
gates, and there's the woman a-biding outside in the
waggon.'
" Joseph Poorgmss, don't be so miserable.! Pa'son
Thirdly won't mind. He's a generous man ; he's found
me in tracts for years, and I've consumed a good many
in the course of a long and shady life; but he's never
been the man to cry out at the expense. Sit down.'
The longer Joseph Poorgrass remained, the less his
spirit was troubled by the duties which devolved upon
him this afternoon. The minutes glided by uncounted,
until the evening shades began perceptibly to deepen,
and the eyes of the three were but sparkling points
on the surface of darkness. Coggan's repeater struck
six from his pocket in the usual still small tones.
At that moment hasty steps were heard in the entry,
and the door opened to admit the figure of Gabriel Oak,
followed by the maid of the inn bearing a candle. He
stared sternly at the one lengthy and two round faces
of the sitters, which confronted him with the expressions
of a fiddle and a couple of warming-pans. Joseph Poor+
grass blinked, and shrank several inches into the back+
ground.
' Upon my soul, I'm ashamed of you ; 'tis disgraceful,
Joseph, disgraceful!. " said Gabriel, indignantly. " Coggan,
you call yourself a man, and don't know better than this.'
<P 347>
Coggan looked up indefinitely at Oak, one or other
of his eyes occasionally opening and closing of its own
accord, as if it were not a member, but a dozy individual
with a distinct personality.
" Don't take on so, shepherd!' said Mark Clark,
looking reproachfully at the candle, which appeared
to possess special features of interest for his eyes.
'Nobody can hurt a dead woman,' at length said
Coggan, with the precision of a machine. "All that
could be done for her is done -- she's beyond us : and
why should a man put himself in a tearing hurry for
lifeless clay that can neither feel nor see, and don't
know what you do with her at all? If she'd been
alive, I would have been the first to help her. If she
now wanted victuals and drink, I'd pay for it, money
down. But she's dead, and no speed of ours will
bring her to life. The woman's past us -- time spent
upon her is throwed away: why should we hurry to
do what's not required ? Drink, shepherd, and be
friends, for to-morrow we may be like her.'
" We may,' added Mark Clark, emphatically, at once
drinking himself, to run no further risk of losing his
chance by the event alluded to, Jan meanwhile merging
his additional thoughts of to-morrow in a song : --
To-mor-row, to-mor-row !
And while peace and plen-ty I find at my board,
With a heart free from sick-ness and sor-row,
With my friends will I share what to-day may af-ford,
And let them spread the ta-ble to-mor-row.
To-mor -- row', to-mor -- +
"Do hold thy horning, Jan.!' said Oak; and turning
upon Poorgrass, " as for you, Joseph, who do your wicked
deeds in such confoundedly holy ways, you are as drunk
as you can stand.'
"No, Shepherd Oak, no! Listen to reason, shepherd.
All that's the matter with me is the affliction called a
multiplying eye, and that's how it is I look double to
you-i mean, you look double to me.'
A multiplying eye is a very bad thing,' said Mark
Clark.
<P 348>
It always comes on when I have been in a public --
house a little time,' said Joseph Poorgrass, meekly.
"Yes; I see two of every sort, as if I were some holy
man living in the times of King Noah and entering
into the ark.... Y-y-y-yes,' he added, becoming much
affected by the picture of himself as a person thrown
away, and shedding tears; "I feel too good for England :
I ought to have lived in Genesis by rights, like the other
men of sacrifice, and then I shouldn't have b-b-been
called a d-d-drunkard in such a way.!'
"I wish you'd show yourself a man of spirit, and not
sit whining there.!'
"Show myself a man of spirit ? ... Ah, well! let
me take the name of drunkard humbly-iet me be a
man of contrite knees-iet it be .! l know that I always
do say "Please God' afore I do anything, from my
getting up to my going down of the same, and I be
willing to take as much disgrace as there is in that
holy act. Hah, yes.! ... But not a man of spirit ?
Have I ever allowed the toe of pride to be lifted
against my hinder parts without groaning manfully that
I question the right to do so? I inquire that query
boldly?'
" We can't say that you have, Hero Poorgrass,'
admitted Jan.
"Never have I allowed such treatment to pass un+
questioned!. Yet the shepherd says in the face of that
rich testimony that I be not a man of spirit! Well,
let it pass by, and death is a kind friend !.'
Gabriel, seeing that neither of the three was in a fit
state to Cake charge of the waggon for the remainder of
the journey, made no reply, but, closing the door again
upon them, went across to where the vehicle stood, now
getting indistinct in the fog and gloom of this mildewy
time. He pulled the horse's head from the large patch
of turf it had eaten bare, readjusted the boughs over
the coffin, and drove along through the unwholesome
night.
It had gradually become rumoured in the village
that the body to be brought and buried that day was
all that was left of the unfortunate Fanny Robin who
had followed the Eleventh from Casterbridge through
Melchester and onwards. But,
<P 349>
thanks to Boldwood's
reticence and Oak's generosity, the lover she had followed
had never been individualized as Troy. Gabriel hoped
that the whole truth of the matter might not be published
till at any rate the girl had been in her grave for a few
days, when the interposing barriers of earth and time,
and a sense that the events had been somewhat shut
into oblivion, would deaden the sting that revelation and
invidious remark would have for Bathsheba just now.
By the time that Gabriel reached the old manor+
house, her residence, which lay in his way to the church,
it was quite dark. A man came from the gate and said
through the fog, which hung between them like blown
flour --
"Is that Poorgrass with the corpse?'
Gabriel recognized the voice as that of the parson.
" The corpse is here, sir,' said Gabriel.
"I have just been to inquire of Mrs. Troy if she could
tell me the reason of the delay. I am afraid it is too
late now for the funeral to be performed with proper
decency. Have you the registrar's certificate ? '
" No,' said Gabriel. "I expect Poorgrass has that ;
and he's at the Buck's Head. I forgot to ask him
for it.'
"Then that settles the matter. We'll put off the
funeral till to-morrow morning. The body may be
brought on to the church, or it may be left here at
the farm and fetched by the bearers in the morning.
They waited more than an hour, and have now gone
home.'
Gabriel had his reasons for thinking the latter a
most objectionable plan, notwithstanding that Fanny
had been an inmate of the farm-house for several years
in the lifetime of Bathsheba's uncle. Visions of several
unhappy contingencies which might arise from this delay
flitted before him. But his will was not law, and he
went indoors to inquire of his mistress what were her
wishes on the subject. He found her in an unusual
mood : her eyes as she looked up to him were suspicious
and perplexed as with some antecedent thought. Troy
had not yet returned. At first Bathsheba assented with
a mien of indifference to his proposition that they should
go on to the church at once with their burden; but
immediately
<P 350>
afterwards, following Gabriel to the gate,
she swerved to the extreme of solicitousness on Fanny's
account, and desired that the girl might be brought into
the house. Oak argued upon the convenience of leaving
her in the waggon, just as she lay now, with her flowers
and green leaves about her, merely wheeling the vehicle
into the coach-house till the morning, but to no purpose,
"It is unkind and unchristian,' she said, 'to leave the
poor thing in a coach-house all night.'
Very well, then,' said the parson. "And I will
arrange that the funeral shall take place early to+
morrow. Perhaps Mrs. Troy is right in feeling that we
cannot treat a dead fellow-creature too thoughtfully
We must remember that though she may have erred
grievously in leaving her home, she is still our sister :
and it is to be believed that God's uncovenanted
mercies are extended towards her, and that she is a
member of the flock of Christ.'
The parson's words spread into the heavy air with a
sad yet unperturbed cadence, and Gabriel shed an
honest tear. Bathsheba seemed unmoved. Mr.
Thirdly then left them, and Gabriel lighted a lantern.
Fetching three other men to assist him, they bore the
unconscious truant indoors, placing the coffin on two
benches in the middle of a little sitting-room next the
hall, as Bathsheba directed.
Every one except Gabriel Oak then left the room.
He still indecisively lingered beside the body. He was
deeply troubled at the wretchedly ironical aspect that
circumstances were putting on with regard to Troy's
wife, and at his own powerlessness to counteract them,
(n spite of his careful manoeuvring all this day, the very
worst event that could in any way have happened in
connection with the burial had happened now. Oak
imagined a terrible discovery resulting from this after+
noon's work that might cast over Bathsheba's life a shade
which the interposition of many lapsing years might but
indifferently lighten, and which nothing at all might
altogether remove.
Suddenly, as in a last attempt to save Bathsheba
from, at any rate, immediate anguish, he looked again,
as he had looked before, at the chalk writing upon the
<P 351>
coffinlid. The scrawl was this simple one, " Fanny
Robin and child.' Gabriel took his handkerchief and
carefully rubbed out the two latter words, leaving visible
the inscription " Fanny' Robin ' only. He then left the
room, and went out quietly by the front door.
<C xliii>
<P 352>
FANNY'S REVENGE
! DO you want me any longer ma'am ? " inquired Liddy,
at a later hour the same evening, standing by the door
with a chamber candlestick in her hand and addressing
Bathsheba, who sat cheerless and alone in the large
parlour beside the first fire of the season.
" No more to-night, Liddy.'
"l'll sit up for master if you like, ma'am. I am not
at all afraid of Fanny, if I may sit in my own room and '
have a candle. She was such a childlike, nesh young
thing that her spirit couldn't appear to anybody if it
tried, I'm quite sure.'
"O no, no! You go to bed. I'll sit up for him
myself till twelve o'clock, and if he has not arrived by
that time, I shall give him up and go to bed too.'
It is half-past ten now.'
'Oh! is it?'
Why don't you sit upstairs, ma'am ? '
" Why don't I ? ' said Bathsheba, desultorily. 'It
isn t worth while -- there's a fire here, Liddy.' She
suddenly exclaimed in an impulsive and excited whisper,
Have you heard anything strange said of Fanny?'
The words had no sooner escaped her than an expres+
sion of unutterable regret crossed her face, and she
burst into tears.
"No -- not a word !' said Liddy, looking at the
weeping woman with astonishment. 'What is it makes
you cry so, ma'am; has anything hurt you ? ' She came
to Bathsheba's side with a face full of sympathy.
" No, Liddy-i don't want you any more. I can
hardly say why I have taken to crying lately: I never
used to cry. Good-night.'
Liddy then left the parlour and closed the door.
<P 353>
Bathsheba was lonely and miserable now ; not lone+
lier actually than she had heen before her marriage;
but her loneliness then was to that of the present time
as the solitude of a mountain is to the solitude of a
cave. And within the last day or two had come these
disquieting thoughts about her husband's past. Her
wayward sentiment that evening concerning Fanny's
temporary resting-place had been the result of a strange
complication of impulses in Bathsheba's bosom. Per+
haps it would be more accurately described as a
determined rebellion against her prejudices, a revulsion
from a lower instinct of uncharitableness, which would
have withheld all sympathy from the dead woman, be+
cause in life she had preceded Bathsheba in the atten+
tions of a man whom Bathsheba had by no means
ceased from loving, though her love was sick to death
just now with the gravity of a further misgiving.
In five or ten minutes there was another tap at the
door. Liddy reappeared, and coming in a little way
stood hesitating, until at length she said, !Maryann has
just heard something very strange, but I know it isn't
true. And we shall be sure to know the rights of it in
a day or two.'
"What is it ?'
" Oh, nothing connected with you or us, ma'am. It
is about Fanny. That same thing you have heard.'
"I have heard nothing.'
"I mean that a wicked story is got to Weatherbury
within this last hour -- that --  -- ' Liddy came close to
her mistress and whispered the remainder of the sentence
slowly into her ear, inclining her head as she spoke in
the direction of the room where Fanny lay.
Bathsheba trembled from head to foot.
"I don't believe it ! ' she said, excitedly. 'And
there's only one name written on the coffin-cover.'
"Nor I, ma'am. And a good many others don't;
for we should surely have been told more about it if it
had been true -- don't you think so, ma'am ? '
"We might or we might not.'
Bathsheba turned and looked into the fire, that
Liddy might not see her
<P 354>
face. Finding that her mistress
was going to say no more, Liddy glided out, closed the
door softly, and went to bed.
Bathsheba's face, as she continued looking into the
fire that evening, might have excited solicitousness on
her account even among those who loved her least.
The sadness of Fanny Robin's fate did not make Bath+
sheba's glorious, although she was the Esther to this
poor Vashti, and their fates might be supposed to stand
in some respects as contrasts to each other. When
Liddy came into the room a second time the beautiful
eyes which met hers had worn a listless, weary look+
When she went out after telling the story they had ex+
pressed wretchedness in full activity. Her simple
country nature, fed on old-fashioned principles, was
troubled by that which would have troubled a woman
of the world very little, both Fanny and her child, if she
had one, being dead.
Bathsheba had grounds for conjecturing a connection
between her own history and the dimly suspected
tragedy of Fanny's end which Oak and Boldwood never
for a moment credited her with possessing. The
meeting with the lonely woman on the previous Saturday
night had been unwitnessed and unspoken of. Oak
may have had the best of intentions in withholding for
as many days as possible the details of what had
happened to Fanny ; but had he known that Bathsheba's
perceptions had already been exercised in the matter,
he would have done nothing to lengthen the minutes of
suspense she was now undergoing, when the certainty
which must terminate it would be the worst fact suspected
after all.
She suddenly felt a longing desire to speak to some
one stronger than herself, and so get strength to sustain
her surmised position with dignity and her carking
doubts with stoicism. Where could she find such a
friend? nowhere in the house. She was by far the
coolest of the women under her roof. Patience and
suspension of judgement for a few hours were what she
wanted to learn, and there was nobody to teach her.
Might she but go to Gabriel Oak ! -- but that could not
be. What a way Oak had, she thought, of enduring
things. Boldwood, who seemed so much deeper and
higher and stronger in
<P 355>
feeling than Gabriel, had not
yet learnt, any more than she herself, the simple
lesson which Oak showed a mastery of by every turn
and look he gave -- that among the multitude of interests
by which he was surrounded, those which affected his
personal welibeing were not the most absorbing and
important in his eyes. Oak meditatively looked upon
the horizon of circumstances without any special regard
to his own standpoint in the midst. That was how
she would wish to be. But then Oak was not racked
by incertitude upon the inmost matter of his bosom, as
she was at this moment. Oak knew all about Fanny
that he wished to know -- she felt convinced of that.
If she were to go to him now at once and say no more
than these few words, !What is the truth of the story?'
he would feel bound in honour to tell her. It would
be an inexpressible relief. No further speech would
need to be uttered. He knew her so well that no
eccentricity of behaviour in her would alarm him.
She flung a cloak roundher, went to the door and
opened it. Every blade, every twig was still. The air
was yet thick with moisture, though somewhat less dense
than during the afternoon, and a steady smack of drops
upon the fallen leaves under the boughs was almost
musical in its soothing regularity. lt seemed better to
be out of the house than within it, and Bathsheba closed
the door, and walked slowly down the lane till she came
opposite to Gabriel's cottage, where he now lived alone,
having left Coggan's house through being pinched for
room. There was a light in one window only', and that
was downstairs. The shutters were not closed, nor was
any blind or curtain drawn over the window, neither
robbery nor observation being a contingency which could
do much injury to the occupant of the domicile. Yes,
it was Gabriel himself who was sitting up : he was reading,
From her standing-place in the road she could see him
plainly, sitting quite still, his light curly head upon his
hand, and only occasionally looking up to snuff the
candle which stood beside him. At length he looked
at the clock, seemed surprised at the lateness of the
hour, closed his book, and arose. He was going to bed,
she knew, and if she tapped it must be done at once.
<P 356>
Alas for her resolve ! She felt she could not do it,
Not for worlds now could she give a hint about her
misery to him, much less ask him plainly for information
on the cause of Fanny's death. She must suspect, and
guess, and chafe, and bear it all alone.
Like a homeless wanderer she lingered by the bank,
as if lulled and fascinated by the atmosphere of content
which seemed to spread from that little dwelling, and
was so sadly lacking in her own. Gabriel appeared in
an upper room, placed his light in the window-bench,
and then -- knelt down to pray. The contrast of the
picture with her rebellious and agitated existence at this
same time was too much for her to bear to look upon
longer. It was not for her to make a truce with
trouble by any such means. She must tread her giddy
distracting measure to its last note, as she had begun it.
With a swollen heart she went again up the lane, and
entered her own door.
More fevered now by a reaction from the first feelings
which Oak's example had raised in her, she paused in
the hall, looking at the door of the room wherein Fanny
lay. She locked her fingers, threw back her head, and
strained her hot hands rigidly across her forehead, saying,
with a hysterical sob, 'Would to God you would speak
and tell me your secret, Fanny .! . , . O, I hope, hope
it is not true that there are two of you ! ... If I could
only look in upon you for one little minute, I should
know all !. '
A few moments passed, and she added, slowly, 'And
I will'
Bathsheba in after times could never gauge the mood
which carried her through the actions following this
murmured resolution on this memorable evening of her
life. She went to the lumber-closet for a screw-driver.
At the end of a short though undefined time she found
herself in the small room, quivering with emotion, a mist
before her eyes, and an excruciating pulsation in her
brain, standing beside the uncovered coffin of the girl
whose conjectured end had so entirely engrossed her, and
saying to herself in a husky voice as she gazed within --
'It was best to know the worst, and I know it now.!'
<P 357>
She was conscious of having brought about this
situation by a series of actions done as by one in an
extravagant dream ; of following that idea as to method,
which had burst upon her in the hall with glaring
obviousness, by gliding to the top of the stairs, assuring
herself by listening to the heavy breathing of her maids
that they were asleep, gliding down again, turning the
handle of the door within which the young girl lay, and
deliberately setting herself to do what, if she had antici+
pated any such undertaking at night and alone, would
have horrified her, but which, when done, was not so
dreadful as was the conclusive proof of her husband's
conduct which came with knowing beyond doubt the
last chapter of Fanny's story.
Bathsheba's head sank upon her bosom, and the
breath which had been bated in suspense, curiosity, and
interest, was exhaled now in the form of a whispered
wail: 'Oh-h-h!' she said, and the silent room added
length to her moan.
Her tears fell fast beside the unconscious pair in the
coffin: tears of a complicated origin, of a nature inde+
scribable, almost indefinable except as other than those
of simple sorrow. Assuredly their wonted fires must
have lived in Fanny's ashes when events were so shaped
as to chariot her hither in this natural, unobtrusive, yet
effectual manner. The one feat alone -- that of dying --
by which a mean condition couId be resolved into a
grand one, Fanny had achieved. And to that had
destiny subjoined this rencounter to-night, which had,
in Bathsheba's wild imagining, turned her companion's
failure to success, her humiliation to triumph, her luck
lessness to ascendency; et had thrown over herself a
garish light of mockery, and set upon all things about
her an ironical smile.
Fanny's face was framed in by that yeIIow hair of
hers; and there was no longer much room for doubt as
to the origin of the curl owned by Troy. In Bath+
sheba's heated fancy the innocent white countenance
expressed a dim triumphant consciousness of the pain
she was retaliating for her pain with all the merciless
rigour of the Mosaic law: 'Burning for burning; wound
for wound: strife for strife.
Bathsheba indulged in contempIations of escape from
her position by immediate death, which thought she,
<P 358>
though it was an inconvenient and awful way, had limits
to its inconvenience and awfulness that could not be
overpassed ; whilst the shames of life were measureless.
Yet even this scheme of extinction by death was out
FANNY'S REVENGE
tamely copying her rival's method without the reasons
which had glorified it in her rival's case. She glided
rapidly up and down the room, as was mostly her habit
hen excited, her hands hanging clasped in front of her,
as she thought and in part expressed in brocken words :
O, I hate her, yet I don't mean that I hate her, for
it is grievous and wicked; and yet I hate her a little !
yes, my flesh insists upon hating her, whether my spirit
is willing or no !.... If she had only lived, I could
ave been angry and cruel towards her with some justifi+
cation ; but to be vindictive towards a poor dead woman
recoils upon myself. O God, have mercy,! I am
miserable at all this !. '
Bathsheba became at this moment so terrified at her
own state of mind that she looked around for some sort
of refuge from herself. The vision of Oak kneeling
down that night recurred to her, and with the imitative
instinct which animates women she seized upon the idea,
resolved to kneel, and, if possible, pray. Gabriel had
prayed ; so would she.
She knelt beside the coffin, covered her face with her
hands, and for a time the room was silent as a tomb.
whether from a purely mechanical, or from any other
cause, when Bathsheba arose it was with a quieted spirit,
and a regret for the antagonistic instincts which had
seized upon her just before.
In her desire to make atonement she took flowers
from a vase by the window, and began laying them
around the dead girl's head. Bathsheba knew no other
way of showing kindness to persons departed than by
giving them flowers. She knew not how long she
remained engaged thus. She forgot time, life, where
she was, what she was doing. A slamming together of
the coach-house doors in the yard brought her to her+
self again. An instant after, the front door opened and
closed, steps crossed the hall, and her husband appeared
at the entrance to the room, looking in upon her.
He beheld it all by degrees, stared in stupefaction at
the scene, as if he thought it an illusion raised by some
fiendish
<P 359>
incantation. Bathsheba, pallid as a corpse on
end, gazed back at him in the same wild way.
So little are instinctive guesses the fruit of a legitimate
induction, that at this moment, as he stood with the
door in his hand, Troy never once thought of Fanny in
connection with what he saw. His first confused idea
was that somebody in the house had died.
'Weli-what ? ' said Troy, blankly.
'I must go ! I must go ! ' said Bathsheba, to herself
more than to him. She came with a dilated eye towards
the door, to push past him.
' What's the matter, in God's name ? who's dead ?'
said Troy.
'I cannot say; let me go out. I want air.! ' she
continued.
'But no; stay, I insist ! ' He seized her hand, and
then volition seemed to leave her, and she went off into
a state of passivity. He, still holding her, came up the
room, and thus, hand in hand, Troy and Bathsheba
approached the coffin's side.
The candle was standing on a bureau close by them,
and the light slanted down, distinctly enkindling the
cold features of both mother and babe. Troy looked
in, dropped his wife's hand, knowledge of it all came
over him in a lurid sheen, and he stood still.
So still he remained that he could be imagined to
have left in him no motive power whatever. The
clashes of feeling in all directions confounded one
another, produced a neutrality, and there was motion in
none.
'Do you know her?' said Bathsheba, in a small
enclosed echo, as from the interior of a cell.
'I do,' said Troy.
'Is it she?'
'It is.'
He had originally stood perfectly erect. And now,
in the welinigh congealed immobility of his frame
could be discerned an incipient movement, as in the
darkest night may be discerned light after a while.
He was gradually sinking forwards. The lines of his
features softened, and dismay modulated to illiimitable
sadness. Bathsheba was regarding him from the other
side, still with parted lips and distracted eyes.
<P 360>
Capacity
for intense feeling is proportionate to the general
intensity of the nature ,and perhaps in all Fanny's
sufferings, much greater relatively to her strength, there
never was a time she suffered in an absolute sense
what Bathsheba suffered now.
What Troy did was to sink upon  his knees with
an indefinable union of remorse and reverence upon
his face, and, bending over Fanny Robin, gently kissed
her, as one would kiss an infant asleep to avoid
awakening it.
At the sight and sound of that, to her, unendurable
act, Bathsheba sprang towards him. All the strong
feelings which had been scattered over her existence
since she knew what feeling was, seemed gathered
together into one pulsation now. The revulsion from
her indignant mood a little earlier, when she had
meditated upon compromised honour, forestalment,
eclipse in maternity by another, was violent and entire.
All that was forgotten in the simple and still strong
attachment of wife to husband. She had sighed for
her self-completeness then, and now she cried aloud
against the severance of the union she had deplored.
She flung her arms round Troy's neck, exclaiming wildly
from the deepest deep of her heart --
' Don't -- don't kiss them !. O, Frank, I can"t bear
it-i can't ! I love you better than she did: kiss me
too, Frank -- kiss me ! You will, Frank, kiss me too !'
There was something so abnormal and startling in
the childlike pain and simplicity of this appeal from a
woman of Bathsheba's calibre and independence, that
Troy, loosening her tightly clasped arms from his neck,
looked at her in bewilderment. It was such and unex+
pected revelation of all women being alike at heart, even
those so different in their accessories as Fanny and this
one beside him, that Troy could hardly seem to believe
her to be his proud wife Bathsheba. Fanny's own
spirit seemed to be animating her frame. But this was
the mood of a few instants only. When the momentary
'I will not kiss you!' he said pushing her away.
Had the wife now but gone no further. Yet,
perhaps. under the harrowing circumstances, to speak
out was the one wrong
<P 361>
act which can be better under+
stood, if not forgiven in her, than the right and politic
one, her rival being now but a corpse. All the feeling
she had been betrayed into showing she drew back to
herself again by a strenuous effort of self-command.
'What have you to say as your reason ?' she asked
her bitter voice being strangely low -- quite that of
another woman now.
'I have to say that I have been a bad, black-hearted
man,' he answered.
less than she.'
'Ah! don't taunt me, madam. This woman is more
to me, dead as she is, than ever you were, or are, or can
be.  If Satan had not tempted me with that face of
yours, and those cursed coquetries, I should have
He turned to Fanny then. 'But never mind, darling,'
wife.!'
At these words there arose from Bathsheba's lips a
long, low cry of measureless despair and indignation,
such a wail of anguish as had never before been heard
within those old-inhabited walls. It was the ??????????
of her union with Troy.
"If she's  --  that, -- what -- am I ? ' she added, as a
continuation of the same cry, and sobbing pitifully:
and the rarity with her of such abandonment only made
the condition more dire.
" You are nothing to me  --  nothing,' said Troy,
heartlessly. 'A ceremony before a priest doesn't make
a marriage. I am not morally yours.'
A vehement impulse to flee from him, to run from
this place, hide, and escape his words at any price, not
stopping short of death itself, mastered Bathsheba now.
She waited not an instant, but turned to the door and
ran out.
<C xliv>
<P 362>
UNDER A TREE -- REACTION
BATHSHEBA went along the dark road, neither know'
ing nor caring about the direction or issue of her flight.
The first time that she definitely noticed her position
was when she reached a gate leading into a thicket over+
hung by some large oak and beech trees. On looking
into the place, it occurred to her that she had seen it
by daylight on some previous occasion, and that what
appeared like an impassable thicket was in reality a
brake of fern now withering fast. She could think of
nothing better to do with her palpitating self than to go
in here and hide; and entering, she lighted on a spot
sheltered from the damp fog hy a reclining trunk, where
she sank down upon a tangled couch of fronds and
stems. She mechanically pulled some armfuls round
her to keep off the breezes, and closed her eyes.
Whether she slept or not that night Bathsheba was
not clearly aware. But it was with a freshened exist+
ence and a cooler brain that, a long time afterwards, she
became conscious of some interesting proceedings which
were going on in the trees above her head and around.
A coarse-throated chatter was the first sound.
It was a sparrow just waking.
Next : ' Chee-weeze-weeze-weeze .! ' from another
retreat.
It was a finch.
Third : ' Tink-tink-tink-tink-a-chink ! ' from the hedge,
It was a robin.
' Chuck-chuck-chuck !. ' overhead.
A squirrel.
Then, from the road, 'With my ra-ta-ta, and my
rum-tum-tum ! '
It was a ploughboy. Presently he came opposite,
and she believed from his voice that he was one of
the boys on her own farm. He was followed by a
shambling tramp of heavy feet, and
<P 363>
looking through
the ferns Bathsheba could just discern in the wan light
of daybreak a team of her own horses. They stopped
to drink at a pond on the other side of the way'. She
watched them flouncing into the pool, drinking, tossing
up their heads, drinking again, the water dribbling
from their lips in silver threads. There was another
flounce, and they came out of the pond, and turned
back again towards the farm.
She looked further around. Day was just dawning,
and beside its cool air and colours her heated actions
and resolves of the night stood out in lurid contrast.
She perceived that in her lap, and clinging to her
hair, were red and yellow leaves which had come
down from the tree and settled silently upon her
during her partial sleep. Bathsheba shook her dress to
get rid of them, when multitudes of the same family lying
round about her rose and fiuttered away in the breeze
thus created, 'like ghosts from an enchanter fleeing.'
There was an opening towards the east, and the
glow from the as yet unrisen sun attracted her eyes
thither. From her feet, and between the beautiful
yellowing ferns with their feathery arms, the ground
sloped downwards to a hollow, in which was a species
of swamp, dotted with fungi. A morning mist hung
over it now -- a fulsome yet magnificent silvery veil,
full of light from the sun, yet semi-opaque -- the hedge
behind it being in some measure hidden by its hazy
luminousness. Up the sides of this depression grew
sheaves of the common rush, and here and there a
peculiar species of flag, the blades of which glistened
in the enaerging sun, like scythes. But the general
aspect of the swamp was malignant. From its moist
and poisonous coat seemed to be exhaled the essences
of evil things in the earth, and in the waters under
the earth. The fungi grew in all manner of positions
from rotting leaves and tree stumps, some exhibiting
to her listless gaze their clammy tops, others their
oozing gills. Some were marked with great splotches,
red as arterial blood, others were saffron yellow, and
others tall and attenuated, with stems like macaroni.
Some were leathery and of richest browns. The
hollow seemed a nursery of pestilences small and
great, in the immediate neighbourhood of comfort
and health, and Bathsheba arose with a tremor at the
thought of having
<P 364>
passed the night on the brink of
so dismal a place.
'l'here were now other footsteps to be heard along
the road. Bathsheba's nerves were still unstrung :
she crouchcd down out of sight again, and the pedes+
trian came into view. He was a schoolboy, with a
bag slung over his shoulder containing his dinner,
and a hook in his hand. He paused by the gate,
and, without looking up, continued murmuring words
in tones quite loud enough to reach her ears.
'''O Lord, O Lord, O Lord, O Lord, O Lord'': --
that I know out o' book. ''Give us, give us, give us,
give us, give us '' : -- that I know. ''Grace that, grace that,
grace that, grace that '' : -- that I know.' Other words
followed to the same effect. The boy was of the
dunce class apparently; the book was a psalter, and
this was his way of learning the collect. In the worst
attacks of trouble there appears to be always a super+
ficial film of consciousness which is left disengaged
and open to the notice of trifles, and Bathsheba was
faintly amused at the boy's method, till he too passed on.
By this time stupor had given place to anxiety, and
anxiety began to make room for hunger and thirst.
A form now appeared upon the rise on the other side
of the swamp, half-hidden by the mist, and came
towards Bathsheba. The woman -- for it was a woman
 -- approached with her face askance, as if looking
earnestly on all sides of her. When she got a little
further round to the left, and drew nearer, Bathsheba
could see the newcomer's profile ngainst the sunny
sky', and knew the wavy sweep from forehead to chin,
with neither angle nor decisive line anywhere about
it, to be the familiar contour of Liddy Smallbury.
Bathsheba's heart bounded with gratitude in the
thought that she was not altogether deserted, and she
jumped up. ' O, Liddy .! ' she said, or attempted to say;
but the words had only been framed hy her lips; there
came no sound. She had lost her voice by exposure
to the clogged atmosphere all these hours of night.
'O, ma'am.! I am so glad I have found you,' said
the girl, as soon as she saw Bathsheba.
' You can't come across,' Bathsheba said in a whisper,
wihich she
<P 365>
vainly endeavoured to make loud enough to
reach Liddy's ears. Liddy, not knowing this, stepped
down upon the swamp, saying, as she did so, 'It will
bear me up, I think.'
Bathsheba never forgot that transient little picture
of Liddy crossing the swamp to her there in the
morning light. Iridescent bubbles of dank subter+
ranean breath rose from the sweating sod beside the
waiting maid's feet as she trod, hissing as they burst
and expanded away to join the vapoury firmament above.
Liddy did not sink, as Bathsheba had anticipated.
She landed safely on the other side, and looked up
at the beautiful though pale and weary face of her
young mistress.
'Poor thing ! ' said Liddy, with tears in her eyes,
Do hearten yourself up a little, ma'am. However
did --  -- '
'I can't speak above a whisper -- my voice is gone
for the present,' said Bathsheba, hurriedly. ' I suppose
the damp air from that hollow has taken it away
Liddy, don't question me, mind. Who sent you --
anybody ? '
' Nobody. I thought, when I found you were not
at home, that something cruel had happened. I fancy
I heard his voice late last night; and so, knowing
something was wrong --  -- '
'Is he at home?'
'No ; he left just before I came out.'
'Is Fanny taken away ? '
' Not yet. She will soon be -- at nine o'clock.'
'we won't go home at present, then. Suppose we
walk about in this wood ?'
Liddy, without exactly understanding everything, or
anything, in this episode, assented, and they walked
together further among the trees.
'But you had better come in, ma'am, and have
something to eat. You will die of a chill! '
'I shall not come indoors yet -- perhaps never.'
'Shall I get you something to eat, and something
else to put over your head besides that little shawl?'
'If you will, Liddy.'
Liddy vanished, and at the end of twenty minutes
returned with a cloak, hat, some slices of bread and
butter, a tea-cup, and some hot tea in a little china jug
<P 366>
"Is Fanny gone ? ' said Bathsheba.
' No,' said her companion, pouring out the tea.
Bathsheba wrapped herself up and ate and drank
sparingly. Her voice was then a little clearer, and
trifling colour returned to her face. 'Now we'll walk
about again,' she said.
They wandered about the wood for nearly two
REACTION
hours, Bathsheba replying in monosyllables to Liddy's
prattle, for her mind ran on one subject, and one only.
She interrupted with --
'l wonder if Fanny is gone by this time ? '
'I will go and see.'
She came back with the information that the
men were just taking away the corpse; that Bathsheba
had been inquired for; that she had replied to the
effect that her mistress was unwell and could not be
seen.
'Then they think I am in my bedroom ?'
' Yes.' Liddy then ventured to add: ' You said
when I first found you that you might never go home
again -- you didn't mean it, ma'am ? '
'No; I've altered my mind. It is only women with
no pride in them who run away from their husbands.
There is one position worse than that of being found
dead in your husband's house from his iliusage, and
that is, to be found alive through having gone away to
The house of somebody else. l've thought of it all this
morning, and I've chosen my course. A runaway wife
is an encumbrance to everybody, a burden to herself and
a byword -- all of which make up a heap of misery
greater than any that comes by staying at home --
though this may include the trifling items of insult,
beating, and starvation. Liddy, if ever you marry --
God forbid that you ever should ! -- you'll find yourself
in a fearful situation ; but mind this, don't you flinch.
Stand your ground, and be cut to pieces. That's
what I'm going to do.'
' O, mistress, don't talk so .! ' said Liddy,-taking her
hand; 'but I knew you had too much sense to bide
away. May I ask what dreadful thing it is that has
happened between you and him ?'
' You may ask; but I may not tell.'
In about ten minutes they returned to the house by
a cimuitous route, entering at the rear. Bathsheba
glided up the
<P 367>
back stairs to a disused attic, and her
companion followed.
'Liddy,' she said, with a lighter heart, for youth an
hope had begun to reassert themselves; ' you are to b
my confidante for the present -- somebody must be -- and
I choose you. Well, I shall take up my abode here fo
a while. Will you get a fire lighted, put down a piece
of carpet, and help me to make the place comfortable.
Afterwards, I want you and Maryann to bring up that
little stump bedstead in the small room, and the be
belonging to it, and a table, and some other things.
What shall I do to pass the heavy time away ?'
'Hemming handkerchiefs is a very good thing,' said
Liddy.
'O no, no .! I hate needlework-i always did.'
'knitting ? '
' And that, too.'
'You might finish your sampler. Only the carn
tions and peacocks want filling in; and then it could
be framed and glazed, and hung beside your aunt'
ma'am.'
' Samplers are out of date -- horribly countrified. No
Liddy, I'll read. Bring up some books -- not new ones.
I haven't heart to read anything new.'
'Some of your uncle's old ones, ma'am ? '
' Yes. Some of those we stowed away in boxes.' ,
faint gleam of humour passed over her face as she said:
'Bring Beaumont and Fletcher's Mai'd's Tragedy,- an
the Mourning Bride ,- and-iet me see -- Niht Thoghts,
and the Vanity of Human Wishes.'
'And that story of the black man, who murdered his
wife Desdemona? It is a nice dismal one that would
suit you excellent just now.'
' Now, Liddy, you've been looking into my book
without telling me; and I said you were not to ! How
do you know it would suit me? It wouldn't suit me a
all.'
'But if the others do --  -- '
' No, they don't ; and I won't read dismal books.
Why should I read dismal books, indeed ? Bring me
Love in a Village, and Maid of the Mill, and Doctor
Syntax, and some volumes of the Spectator.'
All that day Bathsheba and Liddy lived in the attic
in a state of
<P 368>
barricade ; a precaution which proved to be
needless as against Troy, for he did not appear in the
neighbourhood or trouble them at all. Bathsheba sat
at the window till sunset, sometimes attempting to read,
at other times watching every movement outside without
much purpose, and listening without much interest to
every sound.
The sun went down almost blood-red that night, and
a livid cloud received its rays in the east. Up against
this dark background the west front of the church
tower -- the only part of the edifice visible from the
farm-house windows -- rose distinct and lustrous, the
vane upon the summit bristling with rays. Hereabouts,
at six o'clock, the young men of the village gathered,
as was their custom, for a game of Prisoners' base. The
spot had been consecrated to this ancient diversion from
time immemorial, the old stocks conveniently forming
a base facing the boundary of the churchyard, in front
of which the ground was trodden hard and bare as a
pavement by the players. She could see the brown
and black heads of the young lads darting about right
and left, their white shirt-sleeves gleaming in the sun;
whilst occasionally a shout and a peal of hearty laughter
varied the stillness of the evening air. They continued
playing for a quarter of an hour or so, when the game
concluded abruptly, and the players leapt over the wall
and vanished round to the other side behind a yew-tree,
which was also half behind a beech, now spreading in
one mass of golden foliage, on which the branches
traced black lines.
'Why did the base-players finish their game so
suddenly?' Bathsheba inquired, the next time that
Liddy entered the room.
' I think 'twas because two men came just then from
Casterbridge and began putting up grand carved
tombstone,' said Liddy.  'The lads went to see whose
it was.'
' Do you know ? ' Bathsheba asked.
' I don't,' said Liddy.
<C xlv>
<P 369>
TROY'S ROMANTICISM
WHEN Troy's wife had left the house at the previous
midnight his first act was to cover the dead from sight.
This done he ascended the stairs, and throwing himself
down upon the bed dressed as he was, he waited miser+
ably for the morning.
Fate had dealt grimly with him through the last four+
and-twenty hours. His day had been spent in a way
which varied very materially from his intentions regard+
ing it. There is always an inertia to be overcome in
striking out a new line of conduct -- not more in our+
selves, it seems, than in circumscribing events, which
appear as if leagued together to allow no novelties in
the way of amelioration.
Twenty pounds having been secured from Bathsheba,
he had managed to add to the sum every farthing he
could muster on his own account, which had been seven
pounds ten. With this money, twenty-seven pounds ten
in all, he had hastily driven from the gate that morning
to keep his appointment with Fanny Robin.
On reaching Casterbridge he left the horse and trap
at an inn, and at five minutes before ten came back to
the bridge at the lower end of the town, and sat himself
upon the parapet. The clocks struck the hour, and no
Fanny appeared. In fact, at that moment she was being
robed in her grave-clothes by two attendants at the
Union poorhouse -- the first and last tiring-women the
gentle creature had ever been honoured with. The
quarter went, the half hour. A rush of recollection
came upon Troy as he waited: this was the second
time she had broken a serious engagement with him
In anger he vowed it should be the last, and at eleven
o'clock, when he had lingered and watched the stone
of the bridge till he knew every lichen upon their face
and heard the chink of the ripples underneath till they
oppressed him, he jumped from his seat, went to the inn
<P 370>
for his gig, and in a bitter mood of indifference con+
cerning the past, and recklessness about the future,
drove on to Budmouth races.
He reached the race-course at two o'clock, and re+
mained either there or in the town till nine, But
Fanny's image, as it had appeared to him in the sombre
shadows of that Saturday evening, returned to his mind,
backed up by Bathsheba's reproaches. He vowed he
would not bet, and he kept his vow, for on leaving the
town at nine o'clock in the evening he had diminish
his cash only to the extent of a few shillings.
He trotted slowly homeward, and it was now that
was struck for the first time with a thought that Fanny
had been really prevented by illness from keeping her
promise. 'This time she could have made no mistake
He regretted that he had not remained in Casterbridge
and made inquiries. Reaching home he quietly un+
harnessed the horse and came indoors, as we have seen,
to the fearful shock that awaited him.
As soon as it grew light enough to distinguish objects,
Troy arose from the coverlet of the bed, and in a mood
of absolute indifference to Bathsheba's whereabouts, a
almost oblivious of her existence, he stalked downstairs
and left the house by the back door. His walk was
towards the churchyard, entering which he searched
around till he found a newly dug unoccupied grave --
the grave dug the day before for Fanny. The position
of this having been marked, he hastened on to Caster+
bridge, only pausing
whereon he had last seen Fanny alive.
Reaching the town, Troy descended into a side
street and entered a pair of gates surmounted by a board
bearing the words, 'Lester, stone and marble mason.'
Within were lying about stones of all sizes and designs,
inscribed as being sacred to the memory of unnamed
persons who had not yet died.
Troy was so unlike himself now in look, word, and
deed, that the want of likeness was perceptible even to
his own consciousness. His method of engaging himself
in this business of purchasing a tomb was that of an
absolutely unpractised man. He could not bring him+
self to consider, calculate, or
<P 371>
economize. He waywardly
wished for something, and he set about obtaining it like
a child in a nursery. 'I want a good tomb,' he said to
the man who stood in a little office within the yard.
'I want as good a one as you can give me for twenty+
seven pounds,'
It was all the money he possessed.
'That sum to include everything?'
' Everything. Cutting the name, carriage to Weather+
bury, and erection. And I want it now at once .'
' We could not get anything special worked this
week.
'If you would like one of these in stock it could be
got ready immediately.'
'Very well,' said Troy, impatiently.  'Let's see what
you have.'
'The best I have in stock is this one, 'said the stone+
cutter, going into a shed. ' Here's a marble headstone
beautifully crocketed, with medallions beneath of typical
subjects ; here's the footstone after the same pattern,
and here's the coping to enclose the- grave. The
slabs are the best of their kind, and I can warrant them
'Well, I couId add the name, and put it up at
visitor who wore not a shred of mourning. Troy then
settled the account and went away. In the afternoon
almost done. He waited in the yard till the tomb was
way to Weatherbury, giving directions to the two men
the grave of the person named in the inscription.
bridge. He carried rather a heavy basket upon his
occasionally at bridges and
<P 372>
gates, whereon he deposited
returning in the darkness, the men and the waggon
the work was done, and, on being assured that it was,
Troy entered Weatherbury churchyard about ten
had marked the vacant grave early in the morning. It
extent from the view of passers along the road -- a spot
and bushes of alder, but now it was cleared and made
the ground elsewhere.
Here now stood the tomb as the men had stated, snow+
white and shapely in the gloom, consisting of head and
foot-stone, and enclosing border of marble-work uniting
them. In the midst was mould, suitable for plants.
Troy deposited his basket beside the tomb, and
vanished for a few minutes. When he returned he
carried a spade and a lantern, the light of which he
directed for a few moments upon the marble, whilst he
read the inscription. He hung his lantern on the lowest
bough of the yew-tree, and took from his basket flower+
roots of several varieties. There were bundles of snow+
drop, hyacinth and crocus bulbs, violets and double
daisies, which were to bloom in early spring, and of
carnations, pinks, picotees, lilies of the valley, forget-me+
not, summer's-farewell, meadow-saffron and others, for
the later seasons of the year.
Troy laid these out upon the grass, and with an im+
passive face set to work to plant them. The snowdrops
were arranged in a line on the outside of the coping,
the remainder within the enclosure of the grave. The
crocuses and hyacinths were to grow in rows; some of
the summer flowers he placed over her head and feet,
the lilies and forget-me-nots over her heart. The
remainder were dispersed in the spaces between these.
Troy, in his prostration at this time, had no percep+
tion that in the futility of these romantic doings, dictated
by a remorseful reaction from previous indifference, there
was any element
<P 373>
of absurdity. Deriving his idiosyn+
crasies from both sides of the Channel, he showed at
such junctures as the present the inelasticity of the
Englishman, together with that blindness to the line
where sentiment verges on mawkishness, characteristic
of the French.
lt was a cloudy, muggy, and very dark night, and
the rays from Troy's lantern spread into the two old
yews with a strange illuminating power, flickering, as it
seemed, up to the black ceiling of cloud above. He
felt a large drop of rain upon the back of his hand, and
presently one came and entered one of the holes of the
lantern, whereupon the candle sputtered and went out+
Troy was weary and it being now not far from midnight,
and the rain threatening to increase, he resolved to leave
the finishing touches of his labour until the day should
break. He groped along the wall and over the graves
in the dark till he found himself round at the north side.
Here he entered the porch, and, reclining upon the
bench within, fell asleep.
<C xlvi>
<P 374>
THE GURGOYLE : ITS DOINGS
THE tower of Weatherbury Church was a square
erection of fourteenth-century date, having two stone
gurgoyles on each of the four faces of its parapet. Of
these eight carved protuberances only two at this time
continued to serve the purpose of their erection -- that
of spouting the water from the lead roof within. One
mouth in each front had been closed hy bygone church+
wardens as superfluous, and two others were broken
away and choked -- a matter not of much consequence
to the welibeing of the tower, for the two mouths which
still remained open and active were gaping enough to do
all the work.
It has been sometimes argued that there is no truer
criterion of the vitality of any given art-period than the
power of the master-spirits of that time in grotesque ;
and certainly in the instance of Gothic art there is no
disputing the proposition. Weatherbury tower was a
somewhat early instance of the use of an ornamental
parapet in parish as distinct from cathedral churches,
and the gurgoyles, which are the necessary correlatives
of a parapet, were exccptionally prominent -- of the
boldest cut that the hand could shape, and of the most
original design that a human brain could conceive.
There was, so to speak, that symmetry in their distortion
which is less the characteristic of British than of
Continental grotesques of the period. All the eight
were different from each other. A beholder was con+
vinced that nothing on earth could be more hideous
than those he saw on the north side until he went
round to the south. Of the two on this latter face, only
that at the south-eastern corner concerns the story. It
was too human to be called like a dragon, too impish
to be like a man, too animal to be like a fiend, and not
enough like a bird to be called a griffin. This horrible
stone entity was fashioned as if covered with a
<P 375>
wrinkled
hide; it had short, erect ears, eyes starting from their
sockets, and its fingers and hands were seizing the
corners of its mouth, which they thus seemed to pull
open to give free passage to the water it vomited. The
lower row of teeth was quite washed away, though the
upper still remained. Here and thus, jutting a couple
of feet from the wall against which its feet rested as a
support, the creature had for four hundred years
laughed at the surrounding landscape, voicelessly in
dry weather, and in wet with a gurgling and snorting
sound.
Troy slept on in the porch, and the rain increased
outside. Presently the gurgoyle spat. In due time a
small stream began to trickle through the seventy feet
of aerial space between its mouth and the ground, which
the water-drops smote like duckshot in their accelerated
velocity. The stream thickened in substance, and in+
creased in power, gradually spouting further and yet
further from the side of the tower. When the rain fell
in a steady and ceaseless torrent the stream dashed
downward in volumes.
We follow its course to the ground at this point of
time. The end of the liquid parabola has come forward
from the wall, has advanced over the plinth mouldings,
over a heap of stones, over the marble border, into the
midst of Fanny Robin's grave.
The force of the stream had, until very lately, been
received upon some loose stones spread thereabout,
which had acted as a shield to the soil under the onset.
These during the summer had been cleared from the
ground, and there was now nothing to resist the down+
fall but the bare earth. For several years the stream
had not spouted so far from the tower as it was doing
on this night, and such a contingency had been over+
looked. Sometimes this obscure corner received no
inhabitant for the space of two or three years, and
then it was usually but a pauper, a poacher, or other
sinner of undignified sins.
The persistent torrent from the gurgoyle's jaws
directed all its vengeance into the grave. The rich
tawny mould was stirred into motion, and boiled like
chocolate. The water accumulated and washed deeper
down, and the roar of the pool thus formed spread into
the night as the head and chief among other noises of
<P 376>
the kind created by the deluging rain. The flowers so
carefully planted by Fanny's repentant lover began to
move and writhe in their bed. The winter-violets
turned slowly upside down, and became a mere mat of
mud. Soon the snowdrop and other bulbs danced in
the boiling mass like ingredients in a cauldron. Plants
of the tufted species were loosened, rose to the surface,
and floated of.
Troy did not awake from his comfortless sleep till it
was broad day. Not having been in bed for two nights
his shouldrrs felt stiff his feet tender, and his head
heavy. He remembered his position, arose, shivered,
took the spade, and again went out.
The rain had quite ceased, and the sun was shining
through the green, brown, and yellow leaves, now
sparkling and varnished by the raindrops to the bright+
ness of similar effects in the landscapes of Ruysdael and
Hobbema, and full of all those infinite beauties that
arise from the union of water and colour with high
lights. The air was rendered so transparent by the
heavy fall of rain that the autumn hues of the middle
distance were as rich as those near at hand, and the
remote fields intercepted by the angle of the tower ap+
peared in the same plane as the tower itself.
He entered the gravel path which would take him
behind the tower. The path, instead of being stony as
it had been the night before, was browned over with a
thin coating of mud. At one place in the path he saw
a tuft of stringy roots washed white and clean as a
bundle of tendons. He picked it up -- surely it could
not be one of the primroses he had planted? He saw
a bulb, another, and another as he advanced. Beyond
doubt they were the crocuses. With a face of perplexed
dismay Troy turned the corner and then beheld the
wreck the stream had made.
The pool upon the grave had soaked away into the
ground, and in its place was a hollow. The disturbed
earth was washed over the grass and pathway in the
guise of the brown mud he had already seen, and it
spotted the marble tombstone with the same stains.
Nearly all the flowers were washed clean out of the
ground, and they lay, roots upwards, on the spots whither
they had been splashed by the stream.
<P 377>
Troy's brow became heavily contracted. He set his
teeth closely, and his compressed lips moved as those of
one in great pain. This singular accident, by a strange
confluence of emotions in him, was felt as the sharpest
sting of all. Troy's face was very expressive, and any
observer who had seen him now would hardly have
believed him to be a man who had laughed, and sung,
and poured love-trifles into a woman's ear. To curse
his miserable lot was at first his impulse, but even that
lowest stage of rebellion needed an activity whose
absence was necessarily antecedent to the existence of the
morbid misery which wrung him. The sight, coming
as it did, superimposed upon the other dark scenery of
the previous days, formed a sort of climax to the whole
panorama, and it was more than he could endure.
Sanguine by nature, Troy had a power of eluding
grief by simply adjourning it. He could put off the
consideration of any particular spectre till the matter
had become old and softened by time. The planting
of flowers on Fanny's grave had been perhaps but a
species of elusion of the primary grief, and now it was
as if his intention had been known and circumvented.
Almost for the first time in his life, Troy, as he stood
by this dismantled grave, wished himself another man.
lt is seldom that a person with much animal spirit does
not feel that the fact of his life being his own is the one
qualification which singles it out as a more hopeful life
than that of others who may actually resemble him in
every particular. Troy had felt, in his transient way,
hundreds of times, that he could not envy other people
their condition, because the possession of that condition
would have necessitated a different personality, when he
desired no other than his own. He had not minded
the peculiarities of his birth, the vicissitudes of his life,
the meteoriike uncertainty of all that related to him,
because these appertained to the hero of his story,
without whom there would have been no story at all for
him; and it seemed to be only in the nature of things
that matters would right themselves at some proper date
and wind up well. This very morning the illusion
completed its disappearance, and, as it were, all of a
sudden, Troy hated himself. The suddenness was
probably more
<P 378>
apparent than real. A coral reef which
just comes short of the ocean surface is no more to the
horizon than if it had never been begun, and the mere
finishing stroke is what often appears to create an event
which has long been potentially an accomplished thing.
He stood and mediated -- a miserable man. Whither
should he go ? " He that is accursed, let him be accursed
still,' was the pitiless anathema written in this spoliated
effort of his new-born solicitousness. A man who has
spent his primal strength in journeying in one direction
has not much spirit left for reversing his course. Troy
had, since yesterday, faintly reversed his ; but the merest
opposition had disheartened him. To turn about would
have been hard enough under the greatest providential
encouragement; but to find that Providence, far from
helping him into a new course, or showing any wish
that he might adopt one, actuallyjeered his first trembling
and critical attempt in that kind, was more than nature
could bear.
He slowly withdrew from the grave. He did not
attempt to fill up the hole, replace the flowers, or do
anything at all. He simply threw up his cards and
forswore his game for that time and always. Going out
of the churchyard silently and unobserved -- none of the
villagers having yet risen -- he passed down some fields
at the back, and emerged just as secretly upon the high
road. Shortly afterwards he had gone from the village.
Meanwhile, Bathsheba remained a voluntary prisoner
in the attic. The door was kept locked, except during
the entries and exits of Liddy, for whom a bed had
been arranged in a small adjoining room. The light
of Troy's lantern in the churchyard was noticed about
ten o'clock by the maid-servant, who casually glanced
from the window in that direction whilst taking her
supper, and she called Bathsheba's attention to it.
They looked curiously at the phenomenon for a time,
until Liddy was sent to bed.
bathsheba did not sleep very heavily that night.
When her attendant was unconscious and softly breath+
ing in the next room, the mistress of the house was
still looking out of the window at the faint gleam
spreading from among the trees --
<P 379>
not in a steady shine,
but blinking like a revolving coastiight, though this
appearance failed to suggest to her that a person was
passing and repassing in front of it. Bathsheba sat
here till it began to rain, and the light vanished, when
she withdrew to lie restlessly in her bed and re-enact
in a worn mind the lurid scene of yesternight.
Almost before the first faint sign of dawn appeared
she arose again, and opened the window to obtain a full
breathing of the new morning air, the panes being now
wet with trembling tears left by the night rain, each
one rounded with a pale lustre caught from primrose+
hued slashes through a cloud low down in the awaken+
ing sky. From the trees came the sound of steady
dripping upon the drifted leaves under them, and from
the direction of the church she could hear another noise
 -- peculiar, and not intermittent like the rest, the purl
of water falling into a pool.
Liddy knocked at eight o'clock, and Bathsheba un+
locked the door.
" What a heavy rain we've had in the night, ma'am!.'
said Liddy, when her inquiries about breakfast had been
made.
" Yes ; very heavy.'
"Did you hear the strange noise from the church
yard?'
"I heard one strange noise. I've been thinking it
must have been the water from the tower spouts.'
"Well, that's what the shepherd was saying, ma'am.
He's now gone on to see.
"Oh!. Gabriel has been here this morning!.'
"Only just looked in in passing -- quite in his old way,
which I thought he had left off lately. But the tower
spouts used to spatter on the stones, and we are puzzled,
for this was like the boiling of a pot.'
Not being able to read, think, or work, Bathsheba asked
Liddy to stay and breakfast with her. The tongue of the
more childish womian still ran upon recent events. "Are
you going across to the church, ma'am?' she asked.
"Not that I know of,' said Bathsheba.
"I thought you might like to go and see where they
have put Fanny. The trees hide the place from your
window.'
<P 380>
Bathsheba had all sorts of dreads about meeting her
husband. "Has Mr. Troy been in to-night?' she said
" No, ma'am ; I think he's gone to Budmouth.
Budmouth! The sound of the word carried with
it a much diminished perspective of him and his deeds;
there were thirteen miles interval betwixt them now.
She hated questioning Liddy about her husband's
movements, and indeed had hitherto sedulously avoided
doing so; but now all the house knew that there had
been some dreadful disagreement between them, and
it was futile to attempt disguise. Bathsheba had
reached a stage at which people cease to have any
appreciative regard for public opinion.
"What makes you think he has gone there?' she said.
"Laban Tall saw him on the Budmouth road this
morning before breakfast.'
Bathsheba was momentarily relieved of that wayward
heaviness of the past twenty-four hours which had
quenched the vitality of youth in her without sub+
stituting the philosophy of maturer years, and the
resolved to go out and walk a little way. So when
breakfast was over, she put on her bonnet, and took
a direction towards the church. It was nine o'clock,
and the men having returned to work again from their
first meal, she was not likely to meet many of them in
the road. Knowing that Fanny had been laid in the
reprobates' quarter of the graveyard, called in the parish
'behind church,' which was invisible from the road, it
was impossible to resist the impulse to enter and look
upon a spot which, from nameless feelings, she at the
same time dreaded to see. She had been unable to
overcome an impression that some connection existed
between her rival and the light through the trees.
Bathsheba skirted the buttress, and beheld the hole
and the tomb, its delicately veined surface splashed and
stained just as Troy had seen it and left it two hours
earlier. On the other side of the scene stood Gabriel.
His eyes, too, were fixed on the tomb, and her arrival
having been noiseless, she had not as yet attracted his
attention. Bathsheba did not at once perceive that the
grand tomb and the disturbed grave were Fanny's, and
she looked on both sides and around for some humbler
mound,
<P 381>
earthed up and clodded in the usual way. Then
her eye followed Oak's, and she read the words with
which the inscription opened : --
"Erected by Francis Troy in Beloved Memory of
Fanny Robin.'
Oak saw her, and his first act was to gaze inquiringly
and learn how she received this knowledge of the
authorship of the work, which to himself had caused
considerable astonishment. But such discoveries did
not much affect her now. Emotional convulsions seemed
to have become the commonplaces of her history, and
she bade him good morning, and asked him to fill in
the hole with the spade which was standing by. Whilst
Oak was doing as she desired, Bathsheba collected the
flowers, and began planting them with that sympathetic
manipulation of roots and leaves which is so conspicuous
in a woman's gardening, and which flowers seem to
understand and thrive upon. She requested Oak to
get the churchwardens to turn the leadwork at the
mouth of the gurgoyle that hung gaping down upon
them, that by this means the stream might be directed
sideways, and a repetition of the accident prevented.
Finally, with the superfluous magnanimity of a woman
whose narrower instincts have brought down bitterness
upon her instead of love, she wiped the mud spots from
the tomb as if she rather liked its words than otherwise,
<C xlvii>
<P 382>
ADVENTURES BY THE SHORE
TROY wandered along towards the south. A composite
feeling, made up of disgust with the, to him, humdrum
tediousness of a farmer's life, gloomly images of her who
lay in the churchyard, remorse, and a general averseness
to his wife's society, impelled him to seek a home in any
place on earth save Weatherbury. The sad accessories
of Fanny's end confronted him as vivid pictures which
threatened to be indelible, and made life in Bathsheba's
house intolerable. At three in the afternoon he found
himself at the foot of a slope more than a mile in length,
which ran to the ridge of a range of hills lying parallel
with the shore, and forming a monotonous barrier between
the basin of cultivated country inland and the wilder
scenery of the coast. Up the hill stretched a road
nearly straight and perfectly white, the two sides
approaching each other in a gradual taper till they
met the sky at the top about two miles off. Through+
out the length of this narrow and irksome inclined plane
not a sign of life was visible on this garish afternoon
Troy toiled up the road with a languor and depression
greater than any he had experienced for many a day
and year before. The air was warm and muggy, and
the top seemed to recede as he approached.
At last he reached the summit, and a wide and
novel prospect burst upon him with an effect almost like
that of the Pacific upon Balboa's gaze. The broad
steely sea, marked only by faint lines, which had a
semblance of being etched thereon to a degree not deep
enough to disturb its general evenness, stretched the
whole width of his front and round to the right, where,
near the town and port of Budmouth, the sun bristled
down upon it, and banished all colour, to substitute in
its place a clear oily polish. Nothing moved in sky,
land, or sea, except a frill of milkwhite foam along the
nearer angles of the
<P 383>
shore, shreds of which licked the
contiguous stones like tongues.
He descended and came to a small basin of sea
enclosed by the cliffs. Troy's nature freshened within
him ; he thought he would rest and bathe here before
going farther. He undressed and plunged in. Inside
the cove the water was uninteresting to a swimmer,
being smooth as a pond, and to get a little of the ocean
swell, Troy presently swam between the two projecting
spurs of rock which formed the pillars of Hercules to
this miniature Mediterranean. Unfortunately for Troy
a current unknown to him existed outside, which, un+
important to craft of any burden, was awkward for a
swimmer who might be taken in it unawares. Troy
found himself carried to the left and then round in a
swoop out to sea.
He now recollected the place and its sinister
character. Many bathers had there prayed for a dry
death from time to time, and, like Gonzalo also, had
been unanswered ; and Troy began to deem it possible
that he might be added to their number. Not a boat
of any kind was at present within sight, but far in the
distance Budmouth lay upon the sea, as it were quietly
regarding his efforts, and beside the town the harbour
showed its position by a dim meshwork of ropes and
spars. After welinigh exhausting himself in attempts
to get back to the mouth of the cove, in his weakness
swimming several inches deeper than was his wont,
keeping up his breathing entirely by his nostrils, turning
upon his back a dozen times over, swimming <1en papillon>1
and so on, Troy resolved as a last resource to tread
water at a slight incline, and so endeavour to reach the
shore at any point, merely giving himself a gentle
impetus inwards whilst carried on in the general direc+
tion of the tide. This, necessarily a slow process, he
found to be not altogether so difficult, and though there
was no choice of a landing-place -- the objects on shore
passing by him in a sad and slow procession -- he per+
ceptibly approached the extremity of a spit of land yet
further to the right, now well defined against the sunny
portion of the horizon- While the swimmer s eye's were
fixed upon the spit as his only means of salvation on
this side of the
<P 384>
Unknown, a moving object broke the
outline of the extremity, and immediately a ship's boat
appeared manned with several sailor lads, her bows
towards the sea.
All Troy's vigour spasmodically revived to prolong
the struggle yet a little further. Swimming with his
right arm, he held up his left to hail them, splashing
upon the waves, and shouting with all his might. From
the position of the setting sun his white form was
distinctly visible upon the now deep-hued bosom of the
sea to the east of the boat, and the men saw him at
once. Backing their oars and putting the boat about,
they pulled towards him with a will, and in five or six
minutes from the time of his first halloo, two of the
sailors hauled him in over the stern.
They formed part of a brig's crew, and had come
ashore for sand. Lending him what little clothing they
could spare among them as a slight protection against
late they made again towards the roadstead where their
And now night drooped slowly upon the wide watery
levels in front; and at no great distance from them,
where the shoreiine curved round, and formed a long
riband of shade upon the horizon, a series of points of
yellow light began to start into existence, denoting the
spot to be the site of Budmouth, where the lamps were
being lighted along the parade. The cluck of their
oars was the only sound of any distinctness upon the
sea, and as they laboured amid the thickening shades
the lampiights grew larger, each appearing to send a
flaming sword deep down into the waves before it, until
there arose, among other dim shapes of the kind, the
form of the vessel for which they were bound.
<C xlviii>
<P 385>
DOUBTS ARISE -- DOUBTS LINGER
BATHSHEBA underwent the enlargement of her
Husband's absence from hours to days with a slight
feeling of suprise, and a slight feeling of relief; yet
neither sensation rose at any time far above the level
commonly designated as indifference. She belonged to
him : the certiinties of that position were so well defined,
and the reasonable probabilies of its issue so bounded
that she could not speculate on contingenciezs. Taking
no further interest in herself as a splendid woman, she
acquired the indifferent feelings of an outsider in contem+
plating her probable fate as a singular wretch ; for Bath+
sheba drew herself and her future in colours that no
reality could exceed for darkness. Her original vigorous
pride of youth had sickened, and with it had declined
all her anzieties about coming years, since anxiety
recognizes a better and a worse alternative, and Bath+
sheba had made up her mind that alternatives on any
noteworthy scale had ceased for her. Soon, or later --
and that not very late -- her husband would be home
again. And then the days of their tenancy of the
Upper Farm would be numbered. There had origin+
ally been shown by the agent to the estate some distrust
of Bathsheba's tenure as James Everdene's successor,
on the score of her sex, and her youth, and her beauty ;
but the peculiar nature of her uncle's will, his own
frequent testimony before his death to her cleverness
in such a pursuit, and her vigorous marshalling of the
numerous flocks and herds which came suddenly into
her hands before negotiations were concluded, had won
confidence in her powers, and no further objections had
been raised. She had latterly been in great doubt as
to what the legal effects of her marriage would be upon
her position; but no notice had been taken as yet of
her change of name, and only one point was clear -- that
in the event of her own or her husband's inability to
meet the agent at the
<P 386>
forthcoming January rent-day,
very little consideration would be shown, and, for that
matter, very little would be deserved. Once out of the
farm, the approach of poverty would be sure.
Hence Bathsheba lived in a perception that her
purposes were broken of. She was not a woman who
could hope on without good materials for the process,
differing thus from the less far-Sighted and energetic,
though more petted ones of the sex, with whom hope
goes on as a sort of clockwork which the merest food
and shelter are sufficient to wind up; and perceiving
clearly that her mistake had been a fatal one, she
accepted her position, and waited coldly for the end.
The first Saturday after Troy's departure she went
to Casterbridge alone, a journey she had not before
taken since her marriage. On this Saturday Bathsheba
was passing slowly on foot through the crowd of rural
business-men gathered as usual in front ot the market+
house, who were as usual gazed upon by the burghers
with feelings that those healthy lives were dearly paid
for by exclusion from possible aldermanship, when a
man, who had apparently been following her, said some
words to another on her left hand. Bathsheba's ears
were keen as those of any wild animal, and she dis+
tinctly heard what the speaker said, though her back
was towards him
"I am looking for Mrs. Troy. Is that she there?'
" Yes ; that's the young lady, I believe,' said the
the person addressed.
"I have some awkward news to break to her. Her
husband is drowned.'
As if endowed with the spirit of prophecy, Bathsheba
gasped out, "No, it is not true; it cannot be true!'
Then she said and heard no more. The ice of self+
command which had latterly gathered over her was
broken, and the currents burst forth again, and over
whelmed her. A darkness came into her eyes, and she
fell.
But not to the ground. A gloomy man, who had
been observing her from under the portico of the old
corn-exchange when she passed through the group
without, stepped quickly to her side at the moment of
her exclamation, and caught her in his arms as she sank
down.
<P 387>
"What is it?' said Boldwood, looking up at the
bringer of the big news, as he supported her.
"Her husband was drowned this week while bathing
in Lulwind Cove. A coastguardsman found his clothes,
and brought them into Budmouth yestersay.'
Thereupon a strange fire lighted up Boldwood's eye,
and his face flushed with the suppressed excitement of
an unutterable thought. Everybody's glance was now
centred upon him and the unconsious Bathsheba. He
lifted her bodily off the ground, and smoothed down
the folds of her dress as a child might have taken a
storm-beaten bird and arranged its ruffled plumes, and
bore her along the pavement to the King's Arms Inn.
Here he passed with her under the archway into a
private room; and by the time he had deposited -- so
lothly -- the precious burden upon a sofa, Bathsheba had
opened her eyes. Remembering all that had occurred,
she murmured, 'I want to go home .! '
Boldwood left the room. He stood for a moment in
the passage to recover his senses. The experience had
been too much for his consciousness to keep up with,
and now that he had grasped it it had gone again. For
those few heavenly, golden moments she had been in his
arms. What did it matter about her not knowing it? She
had been close to his breast ; he had been close to hers.
He started onward again, and sending a woman to
her, went out to ascertain all the facts of the case.
These appeared to be limited to what he had already
heard. He then ordered her horse to be put into the
gig, and when all was ready returned to inform her.
He found that, though still pale and unwell, she had in
the meantime sent for the Budmouth man who brought
the tidings, and learnt from him all there was to know.
Being hardly in a condition to drive home as she
had driven to town, Boldwood, with every delicacy of
manner and feeling, offered to get her a driver, or to
give her a seat in his phaeton, which was more com+
fortable than her own conveyance. These proposals
Bathsheba gently declined, and the farmer at once de+
parted.
About half-an-hour later she invigorated herself by
an effort, and took her seat and the reins as usuai-in
external
<P 388>
appearance much as if nothing had happened.
She went out of the town by a tortuous back street, and
drove slowly along, unconscious of the road and the
scene. The first shades of evening were showing them+
selves when Bathsheba reached home, where, silently
alighting and leaving the horse in the hands of the boy,
she proceeded at once upstairs. Liddy met her on the
landing. The news had preceded Bathsheba to Weather+
bury by half-an-hour, and Liddy looked inquiringly into
her mistress's face. Bathsheba had nothing to say.
She entered her bedroom and sat by the window, and
thought and thought till night enveloped her, and the
extreme lines only of her shape were visible. Somebody
came to the door, knocked, and opened it.
' Well, what is it, Liddy ? ' she said.
'I was thinking there must be something got for you
to wear,' said Liddy, with hesitation.
'What do you mean ?'
' Mourning.'
' No, no, no,' said Bathsheba, hurriedly.
'But I suppose there must be something done for
poor --  -- '
' Not at present, I think. It is not necessary.'
' Why not, ma'am ? '
' Because he's still alive.'
' How do you know that ? ' said Liddy, amazed.
' I don't know it. But wouldn't it have heen different,
or shouldn't I have heard more, or wouldn't they have
found him, Liddy ? -- or-i don't know how it is, but
death would have been different from how this is. I am
perfectly convinced that he is still alive .! '
Bathsheba remained firm in this opinion till Monday,
when two circumstances conjoined to shake it. The
first was a short paragraph in the local newspaper, which,
beyond making by a methodizing pen formidable pre+
sumptive evidence of Troy's death by drowning, con+
tained the important testimony of a young Mr. Barker,
M.D., of Budmouth, who spoke to being an eyewitness
of the accident, in a letter to the editor. In this he
stated that he was passing over the cliff on the remoter
side of the
<P 389>
cove just as the sun was setting. At that
time he saw a bather carried along in the current outside
the mouth of the cove, and guessed in an instant that
there was but a poor chance for him unless he should
be possessed of unusual muscular powers. He drifted
behind a projection of the coast, and Mr. Barker followed
along the shore in the same direction. But by the time
that he could reach an elevation sufficiently great to
command a view of the sea beyond, dusk had set in, and
nothing further was to be seen.
The other circumstance was the arrival of his clothes,
when it became necessary for her to examine and identify
them -- though this had virtually been done long before
by those who inspected the letters in his pockets. It
was so evident to her in the midst of her agitation that
Troy had undressed in the full conviction of dressing
again almost immediately, that the notion that anything
but death could have prevented him was a perverse one
to entertain.
Then Bathsheba said to herself that others were
assured in their opinion; strange that she should not
be. A stmnge reflection occured to her, causing her
face to flush. Suppose that Troy had followed Fanny
into another world. Had he done this intentionally, yet
contrived to make his death appear like an accident ?
Nevertheless, this thought of how the apparent might
differ from the reai-made vivid by her bygone jealousy
of Fanny, and the remorse he had shown that night
 -- did not blind her to the perception of a likelier
difference, less tragic, but to herself far more disastrous.
When alone late that evening beside a small fire, and
much calmed down, Bathsheba took Troy's watch into
her hand, which had been restored to her with the rest
of the articles belonging to him. She opened the case
as he had opened it before her a week ago. There was
the little coil of pale hair which had been as the fuze to
this great explosion.
'He was hers and she was his; they should be gone
together,' she said. 'I am nothing to either of them,
and why should I keep her hair?' She took it in her
hand, and held it over the fire. ' No-i'll not burn it
-i'll keep it in memory of her, poor thing !. ' she added,
snatching back her hand.
<C xlix>
<P 390>
OAK'S ADVANCEMENY -- A GREAT HOPE
THE later autumn and the winter drew on apace,
and the leaves lay thick upon the turf of the glades
and the mosses of the woods. Bathsheba, having
previously been living in a state of suspended feeling
which was not suspense, now lived in a mood of
quietude which was not precisely peacefulness. While
she had known him to be alive she could have thought
of his death with equanimity; but now that it might be
she had lost him, she regretted that he was not hers
still. She kept the farm going, raked in her profits
without caring keenly about them, and expended
money on ventures because she had done so in bygone
days, which, though not long gone by, seemed infinitely
removed from her present. She looked back upon that
past over a great gulf, as if she were now a dead person,
having the faculty of meditation still left in her, by
means of which, like the mouldering gentlefolk of the
poet's story, she could sit and ponder what a gift life
used to be.
However, one excellent result of her general apathy
was the long-delayed installation of Oak as bailiff; but
he having virtually exercised that function for a long
time already, the change, beyond the substantial in+
crease of wages it brought, was little more than a
nominal one addressed to the outside world.
Boldwood lived secluded and inactive. Much of
his wheat and all his barley of that season had been
spoilt by the rain. It sprouted, grew into intricate
mats, and was ultimately thrown to the pigs in armfuls.
The strange neglect which had produced this ruin
and waste became the subject of whispered talk among
all the people round; and it was elicited from one of
Boldwood's men that forgetfulness had nothing to do
with it, for he had been reminded of the danger to
his corn as many times and as persistently as inferiors
dared to do. The sight of the
<P 391>
pigs turning in disgust
from the rotten ears seemed to arouse Boldwood, and
he one evening sent for Oak. Whether it was sug+
gested by Bathsheba's recent act of promotion or not,
the farmer proposed at the interview that Gabriel
should undertake the superintendence of the Lower
Farm as well as of Bathsheba's, because of the necessity
Boldwood felt for such aid, and the impossibility of
discovering a more trustworthy man. Gabriel's malig+
nant star was assuredly setting fast.
Bathsheba, when she learnt of this proposai-for
Oak was obliged to consult her -- at first languidly
objected. She considered that the two farms together
were too extensive for the observation of one man.
Boldwood, who was apparently determined by personal
rather than commercial reasons, suggested that Oak
should be furnished with a horse for his sole use,
when the plan would present no difficulty, the two
farms lying side by side. Boldwood did not directly
communicate with her during these negotiations, only
speaking to Oak, who was the go-between throughout.
All was harmoniously arranged at last, and we now
see Oak mounted on a strong cob, and daily trotting
the length breadth of about two thousand acres
in a cheerful spirit of surveillance, as if the crops
belonged to him -- the actual mistress of the one-half
and the master of the other, sitting in their respective
homes in gloomy and sad seclusion.
Out of this there arose, during the spring succeeding,
a talk in the parish that Gabriel Oak was feathering his
nest fast.
' Whatever d'ye think,' said Susan Tall, ' Gable Oak
is coming it quite the dand. He now wears shining
boots with hardly a hob in 'em, two or three times
a-week, and a tall hat a-Sundays, and 'a hardly knows
the name of smockfrock. When I see people strut
enough to he cut up into bantam cocks, I stand
dormant with wonder, and says no more .! '
It was eventually known that Gabriel, though paid
a fixed wage by Bathslieba independent of the fluctua+
tions of agricultural profits, had made an engagement
with Boldwood by which Oak was to receive a share
of the receipts -- a small share certainly, yet it was
money of a higher quality than mere wages, and
capable of expansion in a way that wages were not.
<P 392>
Some were beginning to consider Oak a 'near' man,
for though his condition had thus far improved, he
lived in no better style than hefore, occupying the
same cottage, paring his own potatoes, mending his
stockings, and sometimes even making his bed with
his own hands. But as Oak was not only provokingly
indifferent to public opinion, but a man who clung
persistently to old habits and usages, simply because
they were old, there was room for doubt as to his
motives.
A great hope had latterly germinated in Boldwood,
whose unreasoning devotion to Bathsheba could only
be characterized as a fond madness which neither
time nor circumstance, evil nor good report, could
weaken or destroy. This fevered hope had grown up
again like a grain of mustard-seed during the quiet
which followed the hasty conjecture that Troy was
drowned. He nourished it fearfully, and almost
shunned the contemplation of it in earnest, lest facts
should reveal the wildness of the dream. Bathsheba
having at last been persuaded to wear mourning, her
appearance as she entered the church in that guise
was in itself a weekly addition to his faith that a
time was coming -- very far off perhaps, yet surely
nearing -- when his waiting on events should have
its reward. How long he might have to wait he had
not yet closely considered. what he would try to
recognize was that the severe schooling she had been
subjected to had made Bathsheba much more con+
siderate than she had formerly been of the feelings of
others, and he trusted that, should she be willing at
any time in the future to marry any man at all, that
man would be himself. There was a substratum of
good feeling in her: her self-reproach for the injury
she had thoughtlessly done him might be depended
upon now to a much greater extent than before her
infatuation and disappointment. It would be possible
to approach her by the channel of her good nature,
and to suggest a friendly businessiike compact between
them for fulfilment at some future day, keeping the
passionate side of his desire entirely out of her sight.
Such was Boldwood's hope.
To the eyes of the middle-aged, Bathsheba was
perhaps additionally charming just now. Her exuber+
ance cf spirit was pruned down ; the original phantom
of delight had shown
<P 393>
herself to be not too bright for
human nature's daily food, and she had been able to
enter this second poetical phase without losing much
of the first in the process.
Bathsheba's return from a two months' visit to her
old aunt at Norcombe afforded the impassioned and
yearning farmer a pretext for inquiring directly after
her -- now possibly in the ninth month of her
widowhood -- and endeavouring to get a notion of her
middle of the haymaking, and Boldwood contrived to
'I am glad to see you out of doors, Lydia,' he said
She simpered, and wondered in her heart why he
'I hope Mrs. Troy is quite well after her long
the coldest-hearted neighbour could scarcely say less
'She is quite well, sir.
'Yes, cheerful.
'Fearful, did you say?'
'O no. I merely said she was cheerful.'
'Tells you all her affairs?'
'No, sir.
'Some of them?'
'Yes, sir.
'Mrs Troy puts much confidence in you, Lydia;
and very wisely, perhaps.'
'She do, sir. I've been with her all through her
troubles, and was with her at the time of Mr.Troy's
going and all. And if she were to marry again I
expect I should bide with her.'
'She promises that you shali -- quite natural,' said
the strategic lover, throbbing throughout him at the
presumption which Liddy's words appeared to warrant
 -- that his darling had thought of re-marriage.
'No -- -she doesn't promise it exactly. I merely
judge on my own account.
'Yes       yes, I understand. When she alludes to the
possibility of marrying again, you conclude --  -- '
<P 394>
'She never do allude to it, sir,' said Liddy, thinking
how very stupid Mr. Boldwood was getting.
'Of course not,' he returned hastily, his hope falling
again. ' You needn't take quite such long reaches with
your rake, Lydia -- short and quick ones are best. Well,
perhaps, as she is absolute mistress again now, it is wise
of her to resolve never to give up her freedom.'
' My mistress did certainly once say, though not
seriously, that she supposed she might marry again at
the end of seven years from last year, if she cared to
risk Mr. Troy's coming back and claiming her.'
' Ah, six years from the present time. Said that she
might. She might marry at once in every reasonable
person's opinion, whatever the lawyers may say to the
contrary.'
'Have you been to ask them?' said Liddy, innocently.
' Not I,' said Boldwood, growing red. ' Liddy, you
needn't stay here a minute later than you wish, so Mr,
Oak says. I am now going on a little farther. Good'
afternoon.'
He went away vexed with himself, and ashamed of
having for this one time in his life done anything which
could be called underhand. Poor Boldwood had no
more skill in finesse than a battering-ram, and he was
uneasy with a sense of having made himself to appear
stupid and, what was worse, mean. But he had, after
all, lighted upon one fact by way of repayment. It was
a singularly fresh and fascinating fact, and though not
without its sadness it was pertinent and real. In little
more than six years from this time Bathsheba might
certainly marry him. There was something definite in
that hope, for admitting that there might have been no
deep thought in her words to Liddy about marriage,
they showed at least her creed on the matter.
This pleasant notion was now continually in his mind.
Six years were a long time, but how much shorter than
never, the idea he had for so long been obliged to
endure .! Jacob had served twice seven years for
Rachel: what were six for such a woman as this ? He
tried to like the notion of waiting for her better than
that of winning her at once. Boldwood felt his love
to be so deep and strong and eternal, that it was pos+
sible she
<P 395>
had never yet known its full volume, and this
patience in delay would afford him an opportunity of
giving sweet proof on the point. He would annihilate
the six years of his life as if they were minutes -- so little
did he value his time on earth beside her love. He
would let her see, all those six years of intangible ether+
eal courtship, how little care he had for anything but as
it bore upon the consummation.
Meanwhile the early and the late summer brought
round the week in which Greenhill Fair was held.
This fair was frequently attended by the folk of Weather+
bury.
<C l>
<P 396>
THE SHEEP FAIR -- TROY TOUCHES HIS WIFE'S HAND
GREENHILL was the Nijni Novgorod of South
Wessex; and the busiest, merriest, noisiest day of the
whole statute number was the day of the sheep fair.
This yearly gathering was upon the summit of a hill
which retained in good preservation the remains of an
ancient earthwork, consisting of a huge rampart and
entrenchnaent of an oval form encircling the top of
the hill, though somewhat broken down here and there.
To each of the two chief openings on opposite sides a
winding road ascended, and the level green space of
ten or fifteen acres enclosed by the bank was the
site of the fair. A few permanent erections dotted the
spot, but the majority of visitors patronized canvas alone
for resting and feeding under during the time of their
sojourn here.
Shepherds who attended with their flocks from long
distances started from home two or three days, or even
a week, before the fair, driving their charges a few miles
each day -- not more than ten or twelve -- and resting
them at night in hired fields by the wayside at pre+
viously chosen points, where they fed, having fasted since
morning. The shepherd of each flock marched behind,
a bundle containing his kit for the week strapped upon
his shoulders, and in his hand his crook, which he used
as the staff of his pilgrimage. Several of the sheep
would get worn and lame, and occasionally a lambing
occurred on the road. To meet these contingencies,
there was frequently provided, to accompany the flocks
from the remoter points, a pony and waggon into which
the weakly ones were taken for the remainder of the
journey.
The Weatherbury Farms, however, were no such
long distance from the hill, and those arrangements
were not necessary in their case. But the large united
flocks of Bathsheba and Farmer Boldwood formed a
valuable and imposing multitude which
<P 397>
demanded much
attention, and on this account Gabriel, in addition to
Boldwood's shepherd and Cain Ball, accompanied them
along the way, through the decayed old town of Kings'
bere, and upward to the plateau, -- old George the dog
of course behind them.
When the autumn sun slanted over Greenhill this
morning and lighted the dewy flat upon its crest, nebu+
lous clouds of dust were to be seen floating between
the pairs of hedges which streaked the wide prospect
around in all directions. These gradually converged
upon the base of the hill, and the flocks became
individually visible, climbing the serpentine ways which
led to the top. Thus, in a slow procession, they entered
the opening to which the roads tended, multitude after
multitude, horned and hornless -- blue flocks and red
flocks, buff flocks and brown flocks, even green and
salmon-tinted flocks, according to the fancy of the
colourist and custom of the farm. Men were shouting,
dogs were barking, with greatest animation, but the
thronging travellers in so long a journey had grown
nearly indifferent to such terrors, though they still
bleated piteously at the unwontedness of their experi+
ences, a tall shepherd rising here and there in the midst
of them, like a gigantic idol amid a crowd of prostrate
devotees.
The great mass of sheep in the fair consisted of
South Downs and the old Wessex horned breeds, to
the latter class Bathsheba's and Farmer Boldwood's
mainly belonged. These filed in about nine o'clock,
their vermiculated horns lopping gracefully on each side
of their cheeks in geometrically perfect spirals, a small
pink and white ear nestling under each horn. Before
and behind came other varieties, perfect leopards as to
the full rich substance of their coats, and only lacking the
spots. There were also a few of the Oxfordshire breeed,
whose wool was beginning to curl like a child's flaxen
hair, though surpassed in this respect by the effeminate
Leicesters, which were in turn less curly than the Cots+
wolds. But the most picturesque by far was a small
flock of Exmoors, which chanced to be there this year.
Their pied faces and legs, dark and heavy horns, tresses
of wool hanging round their swarthy
<P 398>
foreheads, quite
relieved the monotony of the flocks in that quarter.
All these bleating, panting, and weary thousands had
entered and were penned before the morning had far
advanced, the dog belonging to each flock being tied to
the corner of the pen containing it. Alleys for pedes+
trians intersected the pens, which soon became crowded
with buyers and sellers from far and near.
In another part of the hill an altogether different
scene began to force itself upon the eye towards mid+
day. A circular tent, of exceptional newness and size,
was in course of erection here. As the day drew on,
the flocks began to change hands, lightening the shep+
herd's responsibilities ; and they turned their attention
to this tent and inquired of a man at work there, whose
soul seemed concentrated on tying a bothering knot in
no time, what was going on.
' The Royal Hippodrome Performance of Turpin's
Ride to York and the Death of Black Bess,' replied the
man promptly, without turning his eyes or leaving off
tying.
As soon as the tent was completed the band struck
up highly stimulating harmonies, and the announce+
ment was publicly made, Black Bess standing in a con+
spicuous position on the outside, as a living proof, If
proof were wanted, of the truth of the oracular utterances
from the stage over which the people were to enter.
These were so convinced by such genuine appeals to
heart and understanding both that they soon began to
crowd in abundantly, among the foremost being visible
Jan Coggan and Joseph Poorgrass, who were holiday
keeping here to-day,
''That's the great ruffen pushing me .! ' screamed a
woman in front of Jan over her shoulder at him when
the rush was at its fiercest.
'How can I help pushing ye when the folk behind
push me ?' said Coggan, in a deprecating tone, turning
without turning his body, which was jammed as in a vice.
Tjere was a silence ; then the drums and trumpets
again sent forth their echoing notes. The crowd was
again ectasied,
<P 399>
and gave another lurch in which Coggan
and Poorgrass were again thrust by those behind upon
the women in front.
'O that helpless feymels should be at the mercy of
she swayed like a reed shaken by the wind.
Now,' said Coggan, appealing in an earnest voice
to the public at large as it stood clustered about his
shoulder-blades,'ded ye ever hear such onreasonable
woman as that ? Upon my carcase, neighbours, if I
could onlyu get out of this cheesewring, the damn women
might eat the show for me.! '
'Don't ye lose yer temper, Jan!' implored Joseph
Poorgrass, in a whisper. ' They might get their men to
murder us, for I think by the shine of their eyes that
they be a sinful form of womankind.'
Jan held his tongue, as if he had no objection to be
pacified to please a friend, and they gradually reached
the foot of the ladder, Poorgrass being flattened like a
jumping-jack, and the sixpence, for admission, which he
had got ready half-an-hour earlier, having become so
reeking hot in the tight squeeze of his excited hand that
the woman in spangles, brazen rings set with glass
diamonds, and with chalked face and shoulders, who
took the money of him, hastily dropped it again from
a fear that some trick had been played to burn her
fingers. So they all entered, and the cloth of the
tent, to the eyes of an observer on the outside, became
bulged into innumerable pimples such as we observe on
a sack of potatoes, caused by the various human heads,
backs, and elbows at high pressure within.
At the rear of the large tent there were two small
dressing-tents. One of these, alloted to the male per+
formers, was partitioned into halves by a cloth ; and in
one of the divisions there was sitting on the grass, puli
ing on a pair of jack-boots, a young man whom we
instantly recognise as Sergeant Troy.
Troy's appearance in this position may be briefly
accounted for. The brig aboard which he was taken in
Budmouth Roads was about to start on a voyage, though
somewhat short of hands. Troy read the articles and
joined, but before they sailed a boat was despatched
across the bay to Lulwind cove; as he
<P 400>
had half expected,
his clothes were gone. He ultimately worked his passage
to the United States, where he made a precarious living
in various towns as Professor of Gymnastics, Sword
Exercise, Fencing, and Pugilism. A few months were
sufficient to give him a distaste for this kind of life.
There was a certain animal form of refinement in his
nature; and however pleasant a strange condition might
be whilst privations were easily warded off, it was dis+
advantageously coarse when money was short. There
was ever present, too, the idea that he could claim a
home and its comforts did he but chose to return to
England and Weatherbury Farm. Whether Bathsheba
thought him dead was a frequent subject of curious
conjecture. To England he did return at last ; but the
but the fact of drawing nearer to Weatherbury abstracted its
fascinations, and his intention to enter his old groove at
the place became modified. It was with gloom he con+
sidered on landing at Liverpool that if he were to go home
his reception would be of a kind very unpleasant to con+
template ; for what Troy had in the way of emotion was
an occasional fitful sentiment which sometimes caused
him as much inconvenience as emotion of a strong and
healthy kind. Bathsheba was not a women to be made
a fool of, or a woman to suffer in silence; and how
could he endure existence with a spirited wife to whom
at first entering he would be beholden for food and
lodging ? Moreover, it was not at all unlikely that his
wife would fail at her farming, if she had not already
done so; and he would then become liable for her
maintenance : and what a life such a future of poverty
with her would be, the spectre of Fanny constantly be+
tween them, harrowing his temper and embittering her
words! Thus, for reasons touching on distaste, regret,
and shame commingled, he put off his return from day
to day, and would have decided to put it off altogether
if he could have found anywhere else the ready-made
establishment which existed for him there.
At this time -- the July preceding the September in
which we find at Greenhill Fair -- he fell in with a
travelling circus which was performing in the outskirts of
a northern town. Troy introduced himself to the
manager by taming a restive horse of the troupe, hitting
a suspended apple with pistol-+
<P 401>
bullet fired from the
animal's back when in full gallop, and other feats. For
his merits in these -- all more or less based upon his ex+
periences as a dragoon-guardsman -- Troy was taken into
the company, and the play of Turpin was prepared with
a view to his personation of the chief character. Troy
was not greatly elated by the appreciative spirit in which
he was undoubtedly treated, but he thought the engage+
ment might afford him a few weeks for consideration.
It was thus carelessly, and without having formed any
definite plan for the future, that Troy found himself
at Greenhill Fair with the rest of the company on this
day.
And now the mild autumn sun got lower, and in
front of the pavilion the following incident had taken
place. Bathsheba -- who was driven to the fair that day
by her odd man Poorgrass -- had, like every one else,
read or heard the announcement that Mr. Francis, the
Great Cosmopolitan Equestrian and Roughrider, would
enact the part of Turpin, and she was not yet too old
and careworn to be without a little curiosity to see him.
This particular show was by far the largest and grandest
in the fair, a horde of little shows grouping themselves
under its shade like chickens around a hen. The crowd
had passed in, and Boldwood, who had been watching
all the day for an opportunity of speaking to her, seeing
her comparatively isolated, came up to her side.
"I hope the sheep have done well to-day, Mrs. Troy?'
he said, nervously.
"O yes, thank you,' said Bathsheba, colour springing
up in the centre of her cheeks. "I was fortunate
enough to sell them all just as we got upon the hill, so
we hadn't to pen at all.'
"And now you are entirely at leisure ?'
"Yes, except that I have to see one more dealer in
two hours' time : otherwise I should be going home.
was looking at this large tent and the announcement.
Have you ever seen the play of "Turpin's Ride to
York?" Turpin was a real man, was he not ?'
"O yes, perfectly true -- all of it. Indeed, I think
I've heard Jan Coggan say that a relation of his knew
Tom King, Turpin's friend, quite well.'
<P 402>
"Coggan is rather given to strange stories connected
with his relations, we must remember. I hope they
can all be believed.'
"Yes, yes; we know Coggan. But Turpin is true
enough. You have never seen it played, I suppose?'
"Never. I was not allowed to go into these places
when I was young. Hark.! What's that prancing?
How they shout!'
"Black Bess just started off, I suppose. Am I right
in supposing you would like to see the performance,
Mrs. Troy ? Please excuse my mistake, if it is one;
but if you would like to, I'll get a seat for you with
pleasure.' Perceiving that she hesitated, he added, 'I
myself shall not stay to see it: I've seen it before.'
Now Bathsheba did care a little to see the show, and
had only withheld her feet from the ladder because she
feared to go in alone. She had been hoping that Oak
might appear, whose assistance in such cases was always
accepted as an inalienable right, but Oak was nowhere
to be seen; and hence it was that she said, "Then if
you will just look in first, to see if there's room, I think
I will go in for a minute or two.'
And so a short time after this Bathsheba appeared
in the tent with Boldwood at her elbow, who, taking
her to a " reserved ' seat, again withdrew.
This feature consisted of one raised bench in very
conspicuous part of the circle, covered with red cloth,
and floored with a piece of carpet, and Bathsheba
immediately found, to her confusion, that she was the
single reserved individual in the tent, the rest of the
crowded spectators, one and all, standing on their legs
on the borders of the arena, where they got twice as
good a view of the performance for half the money.
Hence as many eyes were turned upon her, enthroned
alone in this place of honour, against a scarlet back+
ground, as upon the ponies and clown who were
engaged in preliminary exploits in the centre, Turpin
not having yet appeared. Once there, Bathsheba was
forced to make the best of it and remain: she sat
down, spreading her skirts with some dignity over the
unoccupied space on each side of her, and giving a
new and feminine aspect to the pavilion. In a few
minutes she noticed the fat red nape of Coggan's neck
among those standing just
<P 403>
below her, and Joseph Poor+
grass's saintly profile a little further on.
The interior was shadowy with a peculiar shade.
The strange luminous semi-opacities of fine autumn
afternoons and eves intensified into Rembrandt effects
the few yellow sunbeams which came through holes
and divisions in the canvas, and spirted like jets of
gold-dust across the dusky blue atmosphere of haze
pervading the tent, until they alighted on inner surfaces
of cloth opposite, and shone like little lamps suspended
there.
Troy, on peeping from his dressing-tent through a
slit for a reconnoitre before entering, saw his unconscious
wife on high before him as described, sitting as queen
of the tournament. He started back in utter confusion,
for although his disguise efectually concealed his person+
ality, he instantly felt that she would be sure to recognize
his voice. He had several times during the day thought
of the possibility of some Weatherbury person or other
appearing and recognizing him; but he had taken the
risk carelessly. If they see me, let them, he had said.
But here was Bathsheba in her own person; and the
reality of the scene was so much intenser than any of
his prefigurings that he felt he had not half enough
considered the point.
She looked so charming and fair that his cool mood
about Weatherbury people was changed. He had not
expected her to exercise this power over him in the
twinkling of an eye. Should he go on, and care nothing ?
He could not bring himself to do that. Beyond a politic
wish to remain unknown, there suddenly arose in him
now a sense of shame at the possibility that his
attractive young wife, who already despised him, should
despise him more by discovering him in so mean a
condition after so long a time. He actually blushed
at the thought, and was vexed beyond measure that
his sentiments of dislike towards Weatherbury should
have led him to dally about the country in this way.
But Troy was never more clever than when absolutely
at his wit's end. He hastily thrust aside the curtain
dividing his own little dressing space from that of the
manager and proprietor, who now appeared as the
individual called Tom King as far
<P 404>
down as his waist, and
as the aforesaid respectable manager thence to his toes.
"Here's the devil to pay!' said Troy.
"How's that ?'
"Why, there's a blackguard creditor in the tent I don't
want to see, who'll discover me and nab me as sure as
Satan if I open my mouth. What's to be done?'
You must appear now, I think.'
"I can't.'
But the play must proceed.'
"Do you give out that Turpin has got a bad cold,
and can't speak his part, but that he'll perform it just
the same without speaking.'
The proprietor shook his head.
"Anyhow, play or no play, I won't open my mouth,
said Troy, firmly.
"Very well, then let me see. I tell you how we'll
manage,' said the other, who perhaps felt it would be
extremely awkward to offend his leading man just at
this time. "I won't tell 'em anything about your
keeping silence; go on with the piece and say nothing,
doing what you can by a judicious wink now and then,
and a few indomitable nods in the heroic places, you
know. They'll never find out that the speeches are
omitted.'
This seemed feasible enough, for Turpin's speeches
were not many or long, the fascination of the piece
lying entirely in the action ; and accordingly the play
began, and at the appointed time Black Bess leapt
into the grassy circle amid the plaudits of the spectators.
At the turnpike scene, where Bess and Turpin are hotly
pursued at midnight by the officers, and half-awake
gatekeeper in his tasselled nightcap denies that any
horseman has passed, Coggan uttered a broad-chested
"Well done!' which could be heard all over the fair
above the bleating, and Poorgrass smiled delightedly
with a nice sense of dramatic contrast between our
hero, who coolly leaps the gate, and halting justice in
the form of his enemies, who must needs pull up
cumbersomely and wait to be let through. At the
death of Tom King, he could not refrain from seizing
Coggan by the hand, and whispering, with tears in his
eyes, "Of
<P 405>
course he's not really shot, Jan  --  only
seemingly!' And when the last sad scene came on,
and the body of the gallant and faithful Bess had to
be carried out on a shutter by twelve volunteers from
among the spectators, nothing could restrain Poorgrass
from lending a hand, exclaiming, as he asked Jan to
join him, "Twill be something to tell of at Warren's in
future years, Jan, and hand down to our children.' For
many a year in Weatherbury, Joseph told, with the air
of a man who had had experiences in his time, that he
touched with his own hand the hoof of Bess as she lay
upon the board upon his shoulder. If, as some thinkers
hold, immortality consists in being enshrined in others'
memories, then did Black Bess become immortal that
day if she never had done so before.
Meanwhile Troy had added a few touches to his
ordinary make-up for the character, the more effectually
to disguise himself, and though he had felt faint qualms
on first entering, the metamorphosis effected by judici+
ously "lining' his face with a wire rendered him safe from
the eyes of Bathsheba and her men. Nevertheless, he
was relieved when it was got through.
There a second performance in the evening, and
the tent was lighted up. Troy had taken his part very
quietly this time, venturing to indroduce a few speeches
on occasion ; and was just concluding it when, whilst
standing at the edge of the circle contiguous to the first
row of spectators, he observed within a yard of him the
eye of a man darted keenly into his side features. Troy
hastily shifted his position, after having recognized in
sworn enemy, who still hung about the outskirts of
At first Troy resolved to take no notice and abide
by circumstances. That he had been recongnized by
this man was highly probable; yet there was room for
a doubt. Then the great objection he had felt to
allowing news of his proximity to precede him to
Weatherbury in the event of his return, based on a
feeling that knowledge of his present occupation would
discredit him still further in his wife's eyes, returned
in full force. Moreover, should he resolve not to
return at all, a tale of his being alive and being in
the neighbourhood would be
<P 406>
awkward ; and he was
anxious to acquire a knowledge of his wife's temporal
affairs before deciding which to do.
In this dilemma Troy at once went out to recon+
noitre. It occurred to him that to find Pennyways, and
make a friend of him if possible, would be a very wise
act. He had put on a thick beard borrowed from the
establishment, and this he wandered about the fair+
field. It was now almost dark, and respectable people
were getting their carts and gigs ready to go home
The largest refreshment booth in the fair was provided
by an innkeeper from a neighbouring town. This was
considered an unexceptionable place for obtaining the
necessary food and rest: Host Trencher (as he was
jauntily called by the local newspaper) being a sub+
stantial man of high repute for catering through all the
county round. The tent was divided into first and
second-class compartments, and at the end of the first+
class division was a yet further enclosure for the most
exclusive, fenced of from the body of the tent by a
luncheon-bar, behind which the host himself stood
bustling about in white apron and shirt-sleeves, and look+
ing as if he had never lived anywhere but under canvas
all his life. In these penetralia were chairs and a table,
which, on candles being lighted, made quite a cozy and
luxurious show, with an urn, plated tea and coffee pots,
china teacups, and plum cakes.
Troy stood at the entrance to the booth, where a
gipsy-woman was frying pancakes over a little fire of
sticks and selling them at a penny a-piece, and looked
over the heads of the people within. He could see
nothing of Pennyways, but he soon discerned Bathsheba
through an opening into the reserved space at the
further end. Troy thereupon retreated, went round the
tent into the darkness, and listened. He could hear
Bathsheba's voice immediately inside the canvas ; she
was conversing with a man. A warmth overspread his
face: surely she was not so unprincipled as to flirt in
a fair! He wondered if, then, she reckoned upon his
death as an absolute certainty. To get at the root of
the matter, Troy took a penknife from his pocket and
softly made two little cuts crosswise in the cloth, which,
by folding back the corners left a hole the size of a
<P 407>
wafer. Close to this he placed his face, withdrawing
it again in a movement of surprise; for his eye had
been within twelve inches of the top of Bathsheba's
head. lt was too near to be convenient. He made
another hole a little to one side and lower down, in a
shaded place beside her chair, from which it was easy
and safe to survey her by looking horizontally'.
Troy took in the scene completely now. She was
leaning back, sipping a cup of tea that she held in her
hand, and the owner of the male voice was Boldwood,
who had apparently just brought the cup to her,
Bathsheba, being in a negligent mood, leant so idly
against the canvas that it was pressed to the shape of
her shoulder, and she was, in fact, as good as in 'rioy's
arms; and he was obliged to keep his breast carefully
backward that she might not feel its warmth through the
cloth as he gazed in.
Troy found unexpected chords of feeling to be stirred
again within him as they had been stirred earlier in the
day. She was handsome as ever, and she was his. It
was some minutes before he could counteract his sudden
wish to go in, and claim her. Then he thought how
the proud girl who had always looked down upon him
even whilst it was to love him, would hate him on dis+
covering him to be a strolling player. Were he to make
himself known, that chapter of his life must at all risks
be kept for ever from her and from the Weatherbury
people, or his name would be a byword throughout the
parish. He would be nicknamed 'Turpin' as long as
he lived. Assuredly before he could claim her these few
past months of his existence must be entirely blotted out.
"Shall I get you another cup before you start,
ma'am?' said Farmer Boldwood.
I thank you," said Bathsheba. " But I must be going
at once. It was great neglect in that man to keep me
waiting here till so late. I should have gone two hours
ago, if it had not been for him. I had no idea of
coming in here; but there's nothing so refreshing as a
cup of tea, though I should never have got one if you
hadn't helped me.'
Troy scrutinized her cheek as lit by the candles,
and watched each varying shade thereon, and the
white shell-like sinuosities
<P 408>
of her little ear. She took
out her purse and was insisting to Boldwood on paying
for her tea for herself, when at this moment Pennyways
entered the tent. Troy trembled : here was his scheme
for respectability endangered at once. He was about
to leave his hole of espial, attempt to follow Pennyways,
and find out if the ex-bailiff had recognized him, when
he was arrested by the conversation, and found he was
too late.
"Excuse me, ma'am,' said Pennyways ; "I've some
private information for your ear alone.'
"I cannot hear it now,' she said, coldly. That
Bathsheba could not endure this man was evident; in
fact, he was continually coming to her with some tale
or other, by which he might creep into favour at the
expense of persons maligned.
"I'll write it down,' said Pennyways, confidently. He
stooped over the table, pulled a leaf from a warped
pocket-book, and wrote upon the paper, in a round
hand --
" <1Your husband is here. I've seen him. Who's the fool
now?'
This he folded small, and handed towards her.
Bathsheba would not read it ; she would not even put
out her hand to take it. Pennyways, then, with a laugh
of derision, tossed it into her lap, and, turning away,
left her.
From the words and action of Pennyways, Troy,
though he had not been able to see what the ex-bailiff
wrote, had not a moment's doubt that the note referred
to him. Nothing that he could think of could be done
to check the exposure. " Curse my luck.!' he whispered,
and added imprecations which rustled in the gloom like
a pestilent wind. Meanwhile Boldwood said, taking up
the note from her lap --
"Don't you wish to read it, Mrs. Troy? If not,
I'll destroy it."
" Oh, well,' said Bathsheba, carelessly, "perhaps it is
unjust not to read it; but I can guess what it is about.
He wants me to recommend him, or it is to tell me of
some little scandal or another connected with my work+
people. He's always doing that.'
Bathsheba held the note in her right hand. Bold+
wood handed towards her a plate of cut bread-and+
butter; when, in order to take a slice, she put the note
into her left hand, where she was still holding the purse,
and then allowed her hand to drop
<P 409>
beside her close to
the canvas. The moment had come for saving his game,
and Troy impulsively felt that he would play the card,
For yet another time he looked at the fair hand, and
saw the pink finger-tips, and the blue veins of the
wrrist, encircled by a bracelet of coral chippings which
she wore: how familiar it all was to him.! Then, with
the lightning action in which he was such an adept, he
noiselessly slipped his hand under the bottom of the
tent-cloth, which was far from being pinned tightly down,
lifted it a little way, keeping his eye to the hole,
snatched the note from her fingers, dropped the canvas,
and ran away in the gloom towards the bank and ditch,
smiling at the scream of astonishment which burst from
her. Troy then slid down on the outside of the rampart,
hastened round in the bottom of the entrenchment to
a distance of a hundred yards, ascended again, and
crossed boldly in a slow walk towards the front entrance
of the tent. His object was now to get to Pennyways,
and prevent a repetition of the announcement until
such time as he should choose.
Troy reached the tent door, and standing among the
groups there gathered, looked anxiously for Pennyways,
evidently not wishing to make himself prominent by
inquiring for him. One or two men were speaking of
a daring attempt that had just been made to rob a
young lady by lifting the canvas of the tent beside her.
It was supposed that the rogue had imagined a slip of
paper which she held in her hand to he a bank note,
for he had seized it, and made off with it, leaving her
purse behind. His chagrin and disappointment at dis+
covering its worthlessness would be a good joke, it was
said. However, the occurrence seemed to have become
known to few, for it had not interrupted a fiddler, who
had lately begun playing by the door of the tent, nor
the four bowed old men with grim countenances and
walking-sticks in hand, who were dancing "Major
Malley's Reel' to the tune. Behind these stood
Pennyways. Troy glided up to him, beckoned, and
whispered a few words ; and with a mutual glance of
concurrence the two men went into the night together.
<C li>
<P 410>
BATHSHEBA TALKS WITH HER OUTRIDER
THE arrangement for getting back again to Weather+
bury had been that Oak should take the place of Poor+
grass in Bathsheba's conveyance and drive her home,
it being discovered late in the afternoon that Joseph
was suffering from his old complaint, a multiplying eye,
and was, therefore, hardly trustworthy as coachman and
protector to a woman. But Oak had found himself so
occupied, and was full of so many cares relative to
those portions of Boldwood's flocks that were not
disposed of, that Bathsheba, without telling Oak or
anybody, resolved to drive home herself, as she had
many times done from Casterbridge Market, and trust
to her good angel for performing the journey un+
molested. But having fallen in with Farmer Boldwood
accidentally (on her part at least) at the refreshment+
tent, she found it impossible to refuse his offer to ride
on horseback beside her as escort. It had grown
twilight before she was aware, but Boldwood assured
her that there was no cause for uneasiness, as the
moon would be up in half-an-hour.
Immediately after the incident in the tent, she had
risen to go -- now absolutely alarmed and really grateful
for her old lover's protection -- though regretting Gabriel's
absence, whose company she would have much preferred,
as being more proper as well as more pleasant, since he
was her own managing-man and servant. This, how+
ever, could not be helped; she would not, on any
consideration, treat Boldwood harshly, having once
already iliused him, and the moon having risen, and
the gig being ready, she drove across the hilitop in
the wending way's which led downwards -- to oblivious
obscurity, as it seemed, for the moon and the hill it
flooded with light were in appearance on a level, the
rest of the world lying as a vast shady concave between
them. Boldwood mounted his horse, and
<P 411>
followed in
close attendance behind. Thus they descended into
the lowlands, and the sounds of those left on the
hill came like voices from the sky, and the lights were
as those of a camp in heaven. They soon passed the
merry stragglers in the immediate vicinity of the hill,
traversed Kingsbere, and got upon the high road.
The keen instincts of Bathsheba had perceived that
the farmer's staunch devotion to herself was still un+
diminished, and she sympathized deeply. The sight
had quite depressed her this evening; had reminded
her of her folly; she wished anew, as she had wished
many months ago, for some means of making repara+
tion for her fault. Hence her pity for the man who
so persistently loved on to his own injury and per+
manent gloom had betrayed Bathsheba into an injudi+
cious considerateness of manner, which appeared
almost like tenderness, and gave new vigour to the
exquisite dream of a Jacob's seven years service in
poor Boldwood's mind.
He soon found an excuse for advancing from his
position in the rear, and rode close by her side. They
had gone two or three miles in the moonlight, speaking
desultorily across the wheel of her gig concerning the
fair, farming, Oak's usefulness to them both, and other
indifferent subjects, when Boldwood said suddenly
and simply --
"Mrs. Troy, you will marry again some day?'
This point-blank query unmistakably confused her,
it was not till a minute or more had elapsed that
she said, "I have not seriously thought of any such
subject.'
"I quite understand that. Yet your late husband
has been dead nearly one year, and -- '
" You forget that his death was never absolutely
proved, and may not have taken place; so that I may
not be really a widow,' she said, catching at the straw of
escape that the fact afforded
"Not absolutely proved, perhaps, but it was proved
circumstantially. A man saw him drowning, too. No
reasonable person has any doubt of his death; nor
have you, ma'am, I should imagine.
"O yes I have, or I should have acted differently,'
she said, gently. "From the first, I have had a strange
uaccountable
<P 412>
feeling that he could not have perished,
but I have been able to explain that in several ways
since. Even were I half persuaded that I shall see
him no more, I am far from thinking of marriage with
another. I should be very contemptible to indulge in
such a thought.'
They were silent now awhile, and having struck into
an unfrequented track across a common, the creaks of
Boldwood's saddle and gig springs were all the
sounds to be heard. Boldwood ended the pause.
"Do you remember when I carried you fainting in
my arms into the King's Arms, in Casterbridge? Every
dog has his day: that was mine.'
"I know-i know it all,' she said, hurriedly.
"I, for one, shall never cease regretting that events
so fell out as to deny you to me.'
"I, too, am very sorry,' she said, and then checked
herself. "I mean, you know, I am sorry you thought
i -- '
"I have always this dreary pleasure in thinking over
those past times with you -- that I was something to
you before <1he>1 was anything, and that you belonged
<1almost>1 to me. But, of course, that's nothing. You
never liked me.'
" I did ; and respected you, too.'
"Do you now?'
"Yes.'
"Which?'
"How do you mean which?'
"Do you like me, or do you respect me?'
"I don't know -- at least, I cannot tell you. It is
difficult for a woman to define her feelings in language
which is chiefly made by men to express theirs. My
treatment of you was thoughtless, inexcusable, wicked.!
I shall eternally regret it. If there had been anything
I could have done to make amends I would most
gladly have done it -- there was nothing on earth I so
longed to do as to repair the error. But that was not
possible.'
"Don't blame yourself -- you were not so far in the
wrong as you suppose. Bathsheba, suppose you had
real complete proof
<P 413>
that you are what, in fact, you are
 -- a widow -- would you repair the old wrong to me by
marrying me?'
"I cannot say. I shouldn't yet, at any rate.'
"But you might at some future time of your life?'
"O yes, I might at some time.'
"Well, then, do you know that without further proof
of any kind you may marry again in about six years
from the present -- subject to nobody's objection or
blame?'
"O yes,' she said, quickly. " I know all that. But
don't talk of it -- seven or six years -- where may we all
be by that time?'
"They will soon glide by, and it will seem an
astonishingly short time to look back upon when they
are past -- much less than to look forward to now.'
"Yes, yes; I have found that in my own experience.'
" Now listen once more,' Boldwood pleaded. "If I
wait that time, will you marry me? You own that you
owe me amends-iet that be your way of making them.'
"But, Mr. Boldwood -- six years -- '
"Do you want to be the wife of any other man?'
"No indeed! I mean, that I don't like to talk
about this matter now. Perhaps it is not proper, and
I ought not to allow it. Let us drop it. My husband
may be living, as I said.'
"Of course, I'll drop the subject if you wish. But
propriety has nothing to do with reasons. I am a
middle-aged man, willing to protect you for the
remainder of our lives. On your side, at least, there
is no passion or blamable haste -- on mine, perhaps,
there is. But I can't help seeing that if you choose
from a feeling of pity, and, as you say, a wish to make
amends, to make a bargain with me for a far-ahead
time -- an agreement which will set all things right
and make me happy, late though it may be -- there is
no fault to be found with you as a woman. Had'nt
I the first place beside you? Haven't you been
almost mine once already? Surely you can say to
me as much as this, you will have me back again
should circumstances permit ? Now, pray speak ! O
Bathsheba, promise -- it is only a little promise -- that
if you marry again, you will marry me.!'
His tone was so excited that she almost feared him
at this
<P 414>
moment, even whilst she sympathized. It was
a simple physical fear -- the weak of the strong; there
no emotional aversion or inner repugnance. She
said, with some distress in her voice, for she remembered
vividly his outburst on the Yalbury Road, and shrank
from a repetition of his anger: --
"I will never marry another man whilst you wish me
to be your wife, whatever comes -- but to say more -- you
have taken me so by surprise -- -'
"But let it stand in these simple words -- that in six
years' time you will be my wife ? Unexpected accidents
we'll not mention, because those, of course, must be
given way to. Now, this time I know you will keep
your word.'
"That's why I hesitate to give it.'
"But do give it ! Remember the past, and be kind.'
She breathed; and then said mournfully : "O what
shall I do ? I don't love you, and I much fear that I
never shall love you as much as a woman ought to love
a husband. If you, sir, know that, and I can yet give
you happiness by a mere promise to marry at the end of
six years, if my husband should not come back, it is a
great honour to me. And if you value such an act of
friendship from a woman who doesn't esteem her+
self as she did, and has little love left, why it
wili -- '
"Promise!.'
" -- Consider, if I cannot promise soon.'
"But soon is perhaps never?'
"O no, it is not.! I mean soon. Christmas, we'll
say.'
"Christmas.!' He said nothing further till he
added : "Well, I'll say no more to you about it till that
time.'
Bathsheba was in a very peculiar state of mind,
which showed how entirely the soul is the slave of the
body, the ethereal spirit dependent for its quality upon
the tangible flesh and blood. It is hardly too much to
say that she felt coerced by a force stronger than her
own will, not only into the act of promising upon this
singularly remote and vague matter, but into the emo+
tion of fancying that she ought to promise. When the
weeks intervening between the night of this conversa+
<P 415>
tion and Christmas day began perceptibly to diminish,
her anxiety and perplexity increased.
One day she was led by an accident into an oddly
confidential dialogue with Gabriel about her difficulty
It afforded her a little relief -- of a dull and cheerless
kind. They were auditing accounts, and something
occurred in the course of their labours which led Oak
to say, speaking of Boldwood, " He'll never forget you,
ma'am, never.'
Then out came her trouble before she was aware ;
and she told him how she had again got into the toils;
what Boldwood had asked her, and how he was ex+
pecting her assent. "The most mournful reason of all
for my agreeing to it,' she said sadly, 'and the true
reason why I think to do so for good or for evil, is this
 -- it is a thing I have not breathed to a living soul as
yet-i believe that if I don't give my word, he'll go out
of his mind.'
"Really, do ye?' said Gabriel, gravely.
'I believe this,' she continued, with reckless frank+
ness; "and Heaven knows I say it in a spirit the very
reverse of vain, for I am grieved and troubled to my
soul about it-i believe I hold that man's future in my
hand. His career depends entirely upon my treatment
of him. O Gabriel, I tremble at my responsibility, for
it is terrible.!'
"Well, I think this much, ma'am, as I told you years
ago,' said Oak, 'that his life is a total blank whenever
he isn't hoping for 'ee; but I can't suppose-i hope
that nothing so dreadful hangs on to it as you fancy.
His natural manner has always been dark and strange,
you know. But since the case is so sad and oddiike,
why don't ye give the conditional promise? I think I
would.'
"But is it right? Some rash acts of my past life
have taught me that a watched woman must have very
much circumspection to retain only a very little credit,
and I do want and long to be discreet in this! And
six years -- why we may all be in our graves by that
BATHSHEBA TALKS WITH OAK
time, even if Mr. Troy does not come back again, which
he may not impossibly do.! Such thoughts give a sort
of absurdity to the scheme. Now, isn't it preposterous,
<P 416>
Gabriel? However he came to dream of it, I cannot think.
But is it wrong? You know -- you are older than I.'
"Eight years older, ma'am.'
"Yes, eight years -- and is it wrong?'
"Perhaps it would be an uncommon agreement for a
man and woman to make : I don't see anything really
wrong about it,' said Oak, slowly. "In fact the very
thing that makes it doubtful if you ought to marry en
under any condition, that is, your not caring about him
 -- for I may suppose --  -- '
"Yes, you may suppose that love is wanting,' she
said shortly. "Love is an utterly bygone, sorry, worn+
out, miserable thing with me -- for him or any one else.'
"Well, your want of love seems to me the one thing
that takes away harm from such an agreement with him.
If wild heat had to do wi' it, making ye long to over+
come the awkwardness about your husband's vanishing,
it mid be wrong ; but a cold-hearted agreement to oblige
a man seems different, somehow. The real sin, ma'am
in my mind, lies in thinking of ever wedding wi' a man
you don't love honest and true.'
"That I'm willing to pay the penalty of,' said Bath+
sheba, firmly. " You know, Gabriel, this is what I can+
not get off my conscience -- that I once seriously injured
him in sheer idleness. If I had never played a trick
upon him, he would never have wanted to marry me.
O if I could only pay some heavy damages in money
to him for the harm I did, and so get the sin off my
soul that way!... Well, there's the debt, which can
only be discharged in one way, and I believe I am
bound to do it if it honestly lies in my power, without
any consideration of my own future at all. When a
rake gambles away his expectations, the fact that it is
an inconvenient debt doesn't make him the less liable.
I've been a rake, and the single point I ask you is, con+
sidering that my own scruples, and the fact that in the
eye of the law my husband is only missing, will keep
any man from marrying me until seven years have
passed -- am I free to entertain such an idea, even
though 'tis a sort of penance -- for it will be that? I
hate the act of marriage under such circumstances, and
the class of women I should seem to belong to by doing
it!'
<P 417>
"It seems to me that all depends upon whe'r you
think, as everybody else do, that your husband is
dead.'
"I shall get to, I suppose, because I cannot help
feeling what would have brought him back long before
this time if he had lived.'
"Well, then, in religious sense you will be as free
to <1think>1 o' marrying again as any real widow of one
year's standing. But why don't ye ask Mr. Thirdly's
advice on how to treat Mr. Boldwood?'
"No. When I want a broad-minded opinion for
general enlightenment, distinct from special advice, I
never go to a man who deals in the subject pro+
fessionally. So I like the parson's opinion on law, the
lawyer's on doctoring, the doctor's on business, and my
business-man's -- that is, yours -- on morals.'
'And on love --  -- '
"My own.'
"I'm afraid there's a hitch in that argument,' said
Oak, with a grave smile.
She did not reply at once, and then saying, 'Good
evening Mr. Oak,' went away.
She had spoken frankly, and neither asked nor ex+
pected any reply from Gabriel more satisfactory than
that she had obtained. Yet in the centremost parts of
her complicated heart there existed at this minute a
little pang of disappointment, for a reason she would
not allow herself to recognize. Oak had not once
wished her free that he might marry her himself -- had
not once said, "I could wait for you as well as he.'
That was the insect sting. Not that she would have
listened to any such hypothesis. O no -- for wasn't
she saying all the time that such thoughts of the future
were improper, and wasn't Gabriel far too poor a man
to speak sentiment to her? Yet he might have just
hinted about that old love of his, and asked, in a playful
off-hand way, if he might speak of it. It would have
seemed pretty and sweet, if no more; and then she
would have shown how kind and inoffensive a woman's
"No' can sometimes be. But to give such cool advice
 -- the very advice she had asked for -- it ruffled our
heroine all the afternoon.
<C lii>
<P 418>
CONVERGING COURSES
        I
CHRISTMAS-EVE came, and a party that Boldwood
was to give in the evening was the great subject of talk
in Weatherbury. It was not that the rarity of Christmas
parties in the parish made this one a wonder, but that
Boldwood should be the giver. The announcement
had had an abnormal and incongruous sound, as if one
should hear of croquet-playing in a cathedral aisle, or
that some much-respected judge was going upon the
stage. That the party was intended to be a truly jovial
one there was no room for doubt. A large bough of
mistletoe had been brought from the woods that day, and
suspended in the hall of the bachelor's home. Holly
and ivy had followed in armfuls. From six that morning
till past noon the huge wood fire in the kitchen roared
and sparkled at its highest, the kettle, the saucepan, and
the threeiegged pot appearing in the midst of the flames
like Shadrach, Meshach, and Abednego ; moreover,
roasting and basting operations were continually
carried on in front of the genial blaze.
As it grew later the fire was made up in the large
long hall into which the staircase descended, and all
encumbrances were cleared out for dancing. The log
which was to form the back-brand of the evening fire
was the uncleft trunk of a tree, so unwieldy that it could
be neither brought nor rolled to its place ; and accord+
ingly two men were to be observed dragging and heaving
it in by chains and levers as the hour of assembly drew
near.
In spite of all this, the spirit of revelry was wanting
In the atmosphere of the house. Such a thing had
never been attempted before by its owner, and it was
now done as by a wrench. Intended gaieties would
insist upon appearing like solemn grandeurs, the organ+
ization of the whole effort was
<P 419>
carried out coldly,by
hirelings, and a shadow seemed to move about the
rooms, saying that the proceedings were unnatural to
the place and the lone man who lived therein, and hence
not good.
Bathsheba was at this time in her room, dressing for
the event. She had called for candles, and Liddy
entered and placed one on each side of her mistress's
glass.
"Don't go away, Liddy,' said Bathsheba, almost
timidly.' I am foolishly agitated-i cannot tell why.
I wish I had not been obliged to go to this dance; but
there's no escaping now. I have not spoken to Mr.
Boldwood since the autumn, when I promised to see
him at Christmas on business, but I had no idea there
was to be anything of this kind.'
"But I would go now,' said Liddy, who was going
with her; for Boldwood had been indiscriminate in his
invitations.
"Yes, I shall make my appearance, of course,' said
Bathsheba. ' But I am <1the cause>1 of the party, and that
upsets me! -- Don't tell, Liddy.'
"O no, ma'am, You the cause of it, ma'am ?'
"Yes. I am the reason of the party-i. If it had
not been for me, there would never have been one. I
can't explain any more -- there's no more to be explained.
I wish I had never seen Weatherbury.'
"That's wicked of you -- to wish to be worse off than
you are.'
"No, Liddy. I have never been free from trouble
since I have lived here, and this party is likely to bring
me more. Now, fetch my black silk dress, and see how
it sits upon me.'
"But you will leave off that, surely, ma'am? You
have been a widowiady fourteen months, and ought to
brighten up a little on such a night as this.'
"Is it necessary? No; I will appear as usual, for if
I were to wear any light dress people would say things
about me, and I should seem to he rejoicing when I am
solemn all the time. The party doesn't suit me a bit;
but never mind, stay and help to finish me off.'
                     III
<P 420>
Boldwood was dressing also at this hour. A tailor
from Casterbridge was with him, assisting him in the
operation of trying on a new coat that had just beem
brought home.
Never had Boldwood been so fastidious, unreasonable
about the fit, and generally difficult to please. The
tailor walked round and round him, tugged at the waist,
pulled the sleeve, pressed out the collar, and for the
first time in his experience Boldwood was not bored+
Times had been when the farmer had exclaimed against
all such niceties as childish, but now no philosophic or
hasty rebuke whatever was provoked by this man for
attaching as much importance to a crease in the coat
as to an earthquake in South America. Boldwood at
last expressed himself nearly satisfied, and paid the bill,
the tailor passing out of the door just as Oak came in
to report progress for the day.
"Oh, Oak,' said Boldwood. "I shall of course see
you here to-night. Make yourself merry. I am deter+
mined that neither expense nor trouble shall be spared.'
"I'll try to be here, sir, though perhaps it may not
be very early,' said Gabriel, quietly. "I am glad indeed
to see such a change in 'ee from what it used to be.'
" Yes-i must own it-i am bright to-night : cheerful
and more than cheerfui-so much so that I am almost
sad again with the sense that all of it is passing away.
And sometimes, when I am excessively hopeful and
blithe, a trouble is looming in the distance : so that I
often get to look upon gloom in me with content, and
to fear a happy mood. Still this may be absurd-i feel
that it is absurd. Perhaps my day is dawning at last.'
"I hope it 'ill be a long and a fair one.'
"Thank you -- thank you. Yet perhaps my cheerfui
mess rests on a slender hope. And yet I trust my hope.
It is faith, not hope. I think this time I reckon with
my host. -- Oak, my hands are a little shaky, or some+
thing; I can't tie this neckerchief properly. Perhaps
you will tie it for me. The fact is, I have not been well
lately, you know.'
"I am sorry to hear that, sir.'
<P 421>
"Oh, it's nothing. I want it done as well as you can,
please. Is there any late knot in fashion, Oak?'
"I don't know, sir,' said Oak. His tone had sunk to
sadness.
Boldwood approached Gabriel, and as Oak tied the
neckerchief the farmer went on feverishly --
"Does a woman keep her promise, Gabriel?'
"If it is not inconvenient to her she may.'
" -- Or rather an implied promise.'
"I won't answer for her implying,' said Oak, with
faint bitterness. "That's a word as full o' holes as a
sieve with them.'
"Oak, don't talk like that. You have got quite
cynical lately -- how is it? We seem to have shifted our
positions: I have become the young and hopeful man,
and you the old and unbelieving one. However, does
a woman keep a promise, not to marry, but to enter on
an engagement to marry at some time? Now you
know women better than i-tell me.'
"I am afeard you honour my understanding too much.
However, she may keep such a promise, if it is made
with an honest meaning to repair a wrong.'
"It has not gone far yet, but I think it will soon --
yes, I know it will,' he said, in an impulsive whisper.
"I have pressed her upon the subject, and she inclines
to be kind to me, and to think of me as a husband at
a long future time, and that's enough for me. How
can I expect more? She has a notion that a woman
should not marry within seven years of her husband's
disappearance -- that her own self shouldn't, I mean --
because his body was not found. It may be merely
this legal reason which influences her, or it may be a
religious one, but she is reluctant to talk on the point+
Yet she has promised -- implied -- that she will ratify an
engagement to-night.'
"Seven years,' murmured Oak.
"No, no -- it's no such thing!' he said, with im+
patience. Five years, nine months, and a few days.
Fifteen months nearly have passed since he vanished,
and is there anything so wonderful in an engagement of
little more than five years?'
"It seems long in a forward view. Don't build too
much upon such promises, sir. Remember, you have
once be'n deceived. Her meaning may be good; but
there -- she's young yet.'
<P 422>
"Deceived? Never! ' said Boldwood, vehemently.
"She never promised me at that first time, and hence
she did not break her promise! If she promises me,
she'll marry me, Bathsheba is a woman to her word.'
                     IV
Troy was sitting in a corner of The White Hart
tavern at Casterbridge, smoking and drinking a steaming
mixture from a glass. A knock was given at the door,
and Pennyways entered.
"Well, have you seen him?' Troy inquired, pointing
to a chair.
"Boldwood?'
"No -- Lawyer Long.'
"He wadn' at home. I went there first, too.'
"That's a nuisance.'
"'Tis rather, I suppose.'
"Yet I don't see that, because a man appears to be
drowned and was not, he should be liable for anything.
I shan't ask any lawyer -- not I.'
"But that's not it, exactly. If a man changes his
name and so forth, and takes steps to deceive the world
and his own wife, he's a cheat, and that in the eye of
the law is ayless a rogue, and that is ayless a lammocken
vagabond; and that's a punishable situation.'
"Ha-ha! Well done, Pennyways.' Troy had laughed,
but it was with some anxiety that he said, "Now, what
I want to know is this, do you think there's really
anything going on between her and Boldwood? Upon
my soul, I should never have believed it! How she.
must detest me! Have you found out whether she
has encouraged him?'
"I haen't been able to learn. There's a deal of
feeling on his side seemingly, but I don't answer for
her. I didn't know a word about any such thing till
yesterday, and all I heard then was that she was gwine
to the party at his house to-night. This is the first
time she has ever gone there, they say. And they say
that she've not so much as spoke to him since they were
at Greenhill Fair: but what can folk believe o't ? How+
ever, she's not fond of him -- quite offish and quite care
less, I know.'
<P 423>
"I'm not so sure of that.... She's a handsome
woman, Pennyways, is she not? Own that you never
saw a finer or more splendid creature in your life.
Upon my honour, when I set eyes upon her that day
I wondered what I could have been made of to be able
to leave her by herself so long. And then I was
hampered with that bothering show, which I'm free of
at last, thank the stars.' He smoked on awhile, and
then added, "How did she look when you passed by
yesterday?'
"Oh, she took no great heed of me, ye may well
fancy; but she looked well enough, far's I know. Just
flashed her haughty eyes upon my poor scram body, and
then let them go past me to what was yond, much as if
I'd been no more than a leafless tree. She had just got
off her mare to look at the last wring-down of cider for
the year; she had been riding, and so her colours were
up and her breath rather quick, so that her bosom
plimmed and feli-plimmed and feli-every time plain
to my eye. Ay, and there were the fellers round her
wringing down the cheese and bustling about and
saying, Ware o' the pommy, ma'am : 'twill spoil yer
gown. "Never mind me," says she. Then Gabe
brought her some of the new cider, and she must
needs go drinking it through a strawmote, and not in
a nateral way at all. "Liddy," says she, "bring indoors
a few gallons, and I'll make some cider-wine." Sergeant,
I was no more to her than a morsel of scroffin the fuei
house!'
"I must go and find her out at once -- O yes, I see
that-i must go. Oak is head man still, isn't he?'
"Yes, 'a b'lieve. And at Little Weatherbury Farm
too. He manages everything.'
"Twill puzzle him to manage her, or any other man
of his compass!'
"I don't know about that. She can't do without
him, and knowing it well he's pretty independent.
And she've a few soft corners to her mind, though
I've never been able to get into one, the devil's in't!'
"Ah baily she's a notch above you, and you must
own it: a higher class of animai-a finer tissue. How+
ever, stick to me, and neither this haughty goddess,
dashing piece of womanhood, Juno-wife of mine (Juno
was a goddess, you know), nor
<P 424>
anybody else shall hurt
you. But all this wants looking into, I perceive.
What with one thing and another, I see that my work
is well cut out for me.'
                    v
"How do I look to-night, Liddy?' said Bathsheba,
giving a final adjustment to her dress before leaving the
glass.
"I never saw you look so well before. Yes-i'll tell
you when you looked like it -- that night, a year and a
half ago, when you came in so wildiike, and scolded us
for making remarks about you and Mr. Troy.'
"Everybody will think that I am setting myself to
captivate Mr. Boldwood, I suppose,' she murmured.
"At least they'll say so. Can't my hair be brushed
down a little flatter? I dread going -- yet I dread the
risk of wounding him by staying away.'
"Anyhow, ma'am, you can't well be dressed plainer
than you are, unless you go in sackcloth at once. 'Tis
your excitement is what makes you look so noticeable
to-night.'
"I don't know what's the matter, I feel wretched at
one time, and buoyant at another. I wish I could have
continued quite alone as I have been for the last year
or so, with no hopes and no fears, and no pleasure and
no grief.
"Now just suppose Mr. Boldwood should ask you
 -- only just suppose it -- to run away with him, what
would you do, ma'am?'
"Liddy -- none of that,' said Bathsheba, gravely.
"Mind, I won't hear joking on any such matter. Do
you hear?'
"I beg pardon, ma'am. But knowing what rum
things we women be, I just said -- however, I won't
speak of it again.'
"No marrying for me yet for many a year; if ever,
'twill be for reasons very, very different from those you
think, or others will believe! Now get my cloak, for it
is time to go.'
                        VI
"Oak, said Boldwood, "before you go I want to
mention what has been passing in my mind lately --
that little arrangement we made about your share in the
farm I mean. That share is small, too small, consider+
ing how little I attend to business now, and how much
time and thought you give to it. Well,
<P 425>
since the world
is brightening for me, I want to show my sense of it
by increasing yopur proportion in the partnership. I'll
make a memorandum of the arrangement which struck
me as likely to be convenient, for I haven't time to talk
about it now; and then we'll discuss it at our leisure.
My intention is ultimately to retire from the manage+
ment altogether, and until you can take all the expendi+
ture upon your shoulders, I'll be a sleeping partner in
the stock. Then, if I marry her -- and I hope-i feel I
shall, why --  -- '
"Pray don't speak of it, sir,' said Oak, hastily. "We
don't know what may happen. So many upsets may
befall 'ee. There's many a slip, as they say -- and I
would advise you-i know you'll pardon me this once --
not to be <1too sure>1.'
"I know, I know. But the feeling I have about in+
creasing your share is on account of what I know of you
Oak, I have learnt a little about your secret: your
interest in her is more than that of bailiff for an em+
ployer. But you have behaved like a man, and I, as a
sort of successful rivai-successful partly through your
goodness of heart -- should like definitely to show my
sense of your friendship under what must have been a
great pain to you.'
"O that's not necessary, thank 'ee,' said Oak,
hurriedly. "I must get used to such as that; other
men have, and so shall I.'
Oak then left him. He was uneasy on Boldwood's
account, for he saw anew that this constant passion
of the farmer made him not the man he once had
been.
As Boldwood continued awhile in his room alone --
ready and dressed to receive his company -- the mood of
anxiety about his appearance seemed to pass away, and
to be succeeded by a deep solemnity. He looked out
of the window, and regarded the dim outline of the trees
upon the sky, and the twilight deepening to darkness.
Then he went to a locked closet, and took from
a locked drawer therein a small circular case the size of
a pilibox, and was about to put it into his pocket. But
he lingered to open the cover and take a momentary
glance inside. It contained a woman's finger-ring, set
all the way round with small
<P 426>
diamonds, and from its
appearance had evidently been recently purchased.
Boldwood's eyes dwelt upon its many sparkles a long
time, though that its material aspect concerned him
little was plain from his manner and mien, which were
those of a mind following out the presumed thread of
that jewel's future history.
The noise of wheels at the front of the house became
audible. Boldwood closed the box, stowed it away
carefully in his pocket, and went out upon the landing.
The old man who was his indoor factotum came at the
same moment to the foot of the stairs.
"They be coming, sir-iots of 'em -- a-foot and a+
driving!'
"I was coming down this moment. Those wheels I
heard -- is it Mrs. Troy?'
"No, sir -- 'tis not she yet.'
A reserved and sombre expression had returned to
Boldwood's face again, but it poorly cloaked his feei
ings when he pronounced Bathsheba's name; and his
feverish anxiety continued to show its existence by a
galloping motion of his fingers upon the side of his thigh
as he went down the stairs.
                   VII
"How does this cover me?' said Troy to Pennyways,
"Nobody would recognize me now, I'm sure.'
He was buttoning on a heavy grey overcoat of
Noachian cut, with cape and high collar, the latter being
erect and rigid, like a girdling wall, and nearly reaching
to the verge of travelling cap which was pulled down
over his ears.
Pennyways snuffed the candle, and then looked up
and deliberately inspected Troy
"You've made up your mind to go then?' he
said.
"Made up my mind? Yes; of course I have.'
"Why not write to her? 'Tis a very queer corner
that you have got into, sergeant. You see all these things
will come to light if you go back, and they won't sound
well at all. Faith, if I was you I'd even bide as you be
 -- a single man of the name of Francis. A good wife is
good, but the best wife is not so good
<P 427>
as no wife at all.
Now that's my outspoke mind, and I've been called a
long-headed feller here and there.'
"All nonsense!' said Troy, angrily. "There she is
with plenty of money, and a house and farm, and
horses, and comfort, and here am I living from hand to
mouth -- a needy adventurer. Besides, it is no use
talking now; it is too late, and I am glad of it ; I've been
seen and recognized here this very afternoon. I should
have gone back to her the day after the fair, if it hadn't
been for you talking about the law, and rubbish about
getting a separation; and I don't put it off any longer.
What the deuce put it into my head to run away at all,
I can't think! Humbugging sentiment -- that's what it
was. But what man on earth was to know that his wife
would be in such a hurry to get rid of his name!'
"I should have known it. She's bad enough for
anything.'
"Pennyways, mind who you are talking to.'
"Well, sergeant, all I say is this, that if I were you I'd
go abroad again where I came from -- 'tisn't too late to do
it now. I wouldn't stir up the business and get a bad
name for the sake of living with her -- for all that about
your play-acting is sure to come out, you know, although
you think otherwise. My eyes and limbs, there'll be a
racket if you go back just now -- in the middle of Bold+
wood's Christmasing!'
"H'm, yes. I expect I shall not be a very welcome
guest if he has her there,' said the sergeant, with a slight
laugh. "A sort of Alonzo the Brave; and when I go in
the guests will sit in silence and fear, and all laughter
and pleasure will be hushed, and the lights in the
chamber burn blue, and the worms -- Ugh, horrible! --
Ring for some more brandy, Pennyways, I felt an
awful shudder just then! Well, what is there besides?
A stick-i must have a walking-stick.'
Pennyways now felt himself to be in something of a
difficulty, for should Bathsheba and Troy become recon+
ciled it would be necessary to regain her good opinion
if he would secure the patronage of her husband. I
sometimes think she likes you yet, and is a good woman
at bottom,' he said, as a saving sentence. "But there's
no telling to a certainty from a body's outside. Well,
<P 428>
you'll do as you like about going, of course, sergeant,
and as for me, I'll do as you tell me.'
"Now, let me see what the time is,' said Troy, after
emptying his glass in one draught as he stood. 'Half+
past six o'clock. I shall not hurry along the road, and
shall be there then before nine.'
CONCURRITUR
<C liii>
<P 429>
CONCURRITUR -- HORAE MOMENTO
OUTSIDE the front of Boldwood's house a group of
men stood in the dark, with their faces towards the door,
which occasionally opened and closed for the passage of
some guest or servant, when a golden rod of light would
stripe the ground for the moment and vanish again,
leaving nothing outside but the glowworm shine of the
pale lamp amid the evergreens over the door.
"He was seen in Casterbridge this afternoon -- so the
boy said,' one of them remarked in a whisper. "And l
for one believe it. His body was never found, you know.'
"'Tis a strange story,' said the next. "You may
depend upon't that she knows nothing about it.'
"Not a word.'
"Perhaps he don't mean that she shall,' said another
man.
"If he's alive and here in the neighbourhood, he
means mischief,' said the first. "Poor young thing:
I do pity her, if 'tis true. He'll drag her to the dogs.'
"O no; he'll settle down quiet enough,' said one
disposed to take a more hopeful view of the case.
"What a fool she must have been ever to have had
anything to do with the man! She is so self-willed and
independent too, that one is more minded to say it
serves her right than pity her.'
"No, no. I don't hold with 'ee there. She was no
otherwise than a girl mind, and how couid she tell what
the man was made of? If 'tis really true, 'tis too hard
a punishment, and more than she ought to hae. -- Hullo,
who's that?' This was to some footsteps that were
heard approaching.
"William Smallbury,' said a dim figure in the shades,
coming up and joining them. 'Dark as a hedge, to+
night, isn't it? I all but missed the plank over the river
ath'art there in the bottom --
<P 430>
never did such a thing
before in my life. Be ye any of Boldwood's workfolk?'
He peered into their faces.
"Yes -- all o' us. We met here a few minutes ago.'
"Oh, I hear now -- that's Sam Samway : thought I
knowed the voice, too. Going in?'
"Presently. But I say, William,' Samway whispered,
"have ye heard this strange tale?'
"What -- that about Sergeant Troy being seen, d'ye
mean, souls?' said Smallbury, also lowering his voice.
"Ay: in Casterbridge.'
"Yes, I have. Laban Tall named a hint of it to me
but now -- but I don't think it. Hark, here Laban
comes himself, 'a b'lieve.' A footstep drew near.
"Laban?'
"Yes, 'tis I,' said Tall.
"Have ye heard any more about that?'
"No,' said Tall, joining the group. "And I'm in+
clined to think we'd better keep quiet. If so be 'tis not
true, 'twill flurry her, and do her much harm to repeat
it; and if so be 'tis true, 'twill do no good to forestall
her time o' trouble. God send that it mid be a lie, for
though Henery Fray and some of 'em do speak against
her, she's never been anything but fair to me. She's
hot and hasty, but she's a brave girl who'll never tell a
lie however much the truth may harm her, and I've no
cause to wish her evil.'
"She never do tell women's little lies, that's true ; and
'tis a thing that can be said of very few. Ay, all the
harm she thinks she says to yer face: there's nothing
underhand wi' her.'
They stood silent then, every man busied with his
own thoughts, during which interval sounds of merri+
ment could be heard within. Then the front door again
opened, the rays streamed out, the weliknown form of
Boldwood was seen in the rectangular area of light, the
door closed, and Boldwood walked slowly down the path.
"'Tis master,' one of the men whispered, as he neared
them. "We'd better stand quiet -- he'll go in again
directly. He would think it unseemly o' us to be
loitering here.
Boldwood came on, and passed by the men without
<P 431>
seeing them, they being under the bushes on the grass.
He paused, leant over the gate, and breathed a long
breath. They heard low words come from him.
"I hope to God she'll come, or this night will be
nothing but misery to me! O my darling, my darling,
why do you keep me in suspense like this?'
He said this to himself, and they all distinctly heard
it. Boldwood remained silent after that, and the noise
from indoors was again just audible, until, a few minutes
later, light wheels could be distinguished coming down
the hill. They drew nearer, and ceased at the gate.
Boldwood hastened back to the door, and opened it;
and the light shone upon Bathsheba coming up the
path.
Boldwood compressed his emotion to mere welcome:
the men marked her light laugh and apology as she met
him: he took her into the house; and the door closed
again.
"Gracious heaven, I didn't know it was like that with
him!' said one of the men. "I thought that fancy of
his was over long ago.
"You don't know much of master, if you thought
that,' said Samway.
"I wouldn't he should know we heard what 'a said
for the world,' remarked a third.
"I wish we had told of the report at once,' the first
uneasily continued. "More harm may come of this than
we know of. Poor Mr. Boldwood, it will, be hard upon
en. I wish Troy was in  --  --  Well, God forgive me
for such a wish! A scoundrel to play a poor wife such
tricks. Nothing has prospered in Weatherbury since he
came here. And now I've no heart to go in. Let's
look into Warren's for a few minutes first, shall us,
neighbours?'
Samway, Tall, and Smallbury agreed to go to Warren's,
and went out at the gate, the remaining ones entering
the house. The three soon drew near the malt-house,
approaching it from the adjoining orchard, and not by
way of the street. The pane of glass was illuminated
as usual. Smallbury was a little in advance of the rest
when, pausing, he turned suddenly to his companions
and said, "Hist! See there.'
<P 432>
The light from the pane was now perceived to be
shining not upon the ivied wall as usual, but upon some
object close to the glass. It was a human face.
"Let's come closer,' whispered Samway; and they
approached on tiptoe. There was no disbelieving the
report any longer. Troy's face was almost close to the
pane, and he was looking in. Not only was he looking in,
but he appeared to have been arrested by a conversation
which was in progress in the malt-house, the voices of
the interlocutors being those of Oak and the maltster.
"The spree is all in her honour, isn't it -- hey?' said
the old man. "Although he made believe 'tis only
keeping up o' Christmas?'
"I cannot say,' replied Oak.
"O 'tis true enough, faith. I cannot understand
Farmer Boldwood being such a fool at his time of life
as to ho and hanker after thik woman in the way 'a do,
and she not care a bit about en.'
The men, after recognizing Troy's features, withdrew
across the orchard as quietly as they had come. The
air was big with Bathsheba's fortunes to-night : every
word everywhere concerned her. When they were quite
out of earshot all by one instinct paused.
"It gave me quite a turn -- his face,' said Tall,
breathing.
"And so it did me,' said Samway. "What's to be
done?'
"I don't see that 'tis any busincss of ours,' Smallbury
murmured dubiously.
"But it is! 'Tis a thing which is everybody's business,
said Samway. "We know very well that master's on a
wrong tack, and that she's quite in the dark, and we
should let 'em know at once. Laban, you know her
best -- you'd better go and ask to speak to her.'
"I bain't fit for any such thing,' said Laban, nervously.
"I should think William ought to do it if anybody. He's
oldest.'
"I shall have nothing to do with it,' said Smallbury.
"'Tis a ticklish business altogether. Why, he'll go on
to her himself in a few minutes, ye'll see.'
"We don't know that he will. Come, Laban.'
<P 433>
"Very well, if I must I must, I suppose,' Tall reluct+
antly answered. "What must I say?'
"Just ask to see master.'
"O no; I shan't speak to Mr. Boldwood. If I tell
anybody, 'twill be mistress.'
"Very well,' said Samway.
Laban then went to the door. When he opened it
the hum of bustle rolled out as a wave upon a still
strand -- the assemblage being immediately inside the
hali-and was deadened to a murmur as he closed it
again. Each man waited intently, and looked around at
the dark tree tops gently rocking against the sky and
occasionally shivering in a slight wind, as if he took
interest in the scene, which neither did. One of them
began walking up and down, and then came to where
he started from and stopped again, with a sense that
walking was thing not worth doing now.
"I should think Laban must have seen mistress by
this time,' said Smallbury, breaking the silence. "Per+
haps she won't come and speak to him.'
The door opened. Tall appeared, and joined them
"Well?' said both.
"I didn't like to ask for her after all,' Laban faltered
out. "They were all in such a stir, trying to put a little
spirit into the party. Somehow the fun seems to hang
fire, though everything's there that a heart can desire,
and I couldn't for my soul interfere and throw damp
upon it -- if 'twas to save my life, I couldn't!'
"I suppose we had better all go in together,' said
Samway, gloomily. "Perhaps I may have a chance of
saying a word to master.'
So the men entered the hall, which was the room
sellected and arranged for the gathering because of its
size. The younger men and maids were at last just
beginning to dance. Bathshesba had been perplexed
how to act, for she was not much more than a slim
young maid herself, and the weight of stateliness sat
heavy upon her. Sometimes she thought she ought
not to have come under any circumstances; then she
considered what cold unkindness that would have been,
and finally resolved
<P 434>
upon the middle course of staying
for about an hour only, and gliding off unobserved,
having from the first made up her mind that she could
on no account dance, sing, or take any active part in
the proceedings.
Her allotted hour having been passed in chatting
and looking on, Bathsheba told Liddy not to hurry her+
self, and went to the small parlour to prepare for
departure, which, like the hall, was decorated with holly
and ivy, and well lighted up.
Nobody was in the room, but she had hardly
HORAE MOMENTO
been there a moment when the master of the house
entered.
"Mrs. Troy -- you are not going?' he said. "We've
hardly begun!'
"If you'll excuse me, I should like to go now.' Her
manner was restive, for she remembered her promise,
and imagined what he was about to say. "But as it is
not late,' she added, "I can walk home, and leave my
man and Liddy to come when they choose.'
"I've been trying to get an opportunity of speaking
to you,' said Boldwood. "You know perhaps what I
long to say?'
Bathsheba silently looked on the floor.
"You do give it?' he said, eagerly.
"What?' she whispered.
"Now, that's evasion! Why, the promise. I don't
want to intrude upon you at all, or to let it become
known to anybody. But do give your word! A
mere business compact, you know, between two people
who are beyond the influence of passicn.' Boldwood
knew how false this picture was as regarded himself;
but he had proved that it was the only tone in which
she would allow him to approach her. "A promise to
marry me at the end of five years and three-quarters.
You owe it to me!'
"I feel that I do,' said Bathsheba ; "that is, if you
demand it. But I am a changed woman -- an unhappy
woman -- and not -- not --  -- "
" You are still a very beautiful woman, said Boldwood.
Honesty and pure conviction suggested the remark,
unaccompanied by any perception that it might have
been adopted by blunt flattery to soothe and win her.
However, it had not much effect now, for for she said,
in a
<P 435>
passionless murmur which was in itself a proof of
her words: "I have no feeling in the matter at all.
And I don't at all know what is right to do in my
diddicult Position, and I have nobody to advise me. But
I give my promise, if I must. I give it as the rendering of
a debt, conditionally, of course, on my being a widow.'
"You'll marry me between five and six years hence ? '
"Don't press me too hard. I'll marry nobody
else.'
" But surely you will name the time, or there's nothing
in the promise at all?'
"O, I don't know, pray let me go!' she said, her
bosom beginning to rise. "I am afraid what to do.!
want to be just to you, and to be that seems to be wrong+
ing myself, and perhaps it is breaking the commandments.
There is considerable doubt of his death, and then it
is dreadful; let me ask a solicitor, Mr. Boldwood, if I
ought or no!'
"Say the words, dear one, and the subject shall be
dismissed ; a blissrul loving intimacy of six years, and
then marriage -- O Bathsheba, say them!' he begged in
a husky voice, unable to sustain the forms of mere
friendship any longer. "Promise yourself to me; I
deserve it, indeed I do, for I have loved you more than
anybody in the world! And if I said hasty words and
showed uncalled-for heat of manner towards you, believe
me, dear, I did not mean to distress you ; I was in
agony, Bathsheba, and I did not know what I said.
You wouldn't let a dog suffer what I have suffered,
could you but know it! Sometimes I shrink from your
knowing what I have felt for you, and sometimes I am
distressed that all of it you never will know. Be
gracious, and give up a little to me, when I would give
up mylife for you!'
The trimmings of her dress, as they quivered against
the light, showed how agitated she was, and at last she
burst out crying. 'And you'll not -- press me -- about
anything more -- if I say in five or six years?' she
sobbed, when she had power to frame the words.
"Yes, then I'll leave it to time.'
"Very well. If he does not return, I'll marry you
in six years from this day, if we both live,' she said
solemnly.
<P 436>
"And you'll take this as a token from me.'
Boldwood had come close to her side, and now he
clasped one of her hands in both his own, and lifted it
to his breast.
"What is it? Oh I cannot wear a ring!' she ex+
claimed, on seeing what he held; "besides, I wouldn't
have a soul know that it's an engagement! Perhaps it
is improper? Besides, we are not engaged in the usual
sense, are we ? Don't insist, Mr. Boldwood -- don't!'
In her trouble at not being able to get her hand away
from him at once, she stamped passionately on the floor
with one foot, and tears crowded to her eyes again.
"It means simply a pledge -- no sentiment -- the seal
of a practical compact,' he said more quictly, but still
retaining her hand in his firm grasp. "Come, now!'
And Boldwood slipped the ring on her finger.
"I cannot wear it,' she said, weeping as if her heart
would break. " You frighten me, almost. So wild a
scheme! Please let me go home!'
" Only to-night : wear it just to-night, to please me!.'
Bathsheba sat down in a chair, and buried her face
in her handkerchief, though Boldwood kept her hand
yet. At length she said, in a sort of hopeless whisper --
"Very well, then, I will to-night, if you wish it so
earnestly. Now loosen my hand; I will, indeed I will
wear it to-night.'
"And it shall be the beginning of a pleasant secret
courtship of six years, with a wedding at the end?'
"It must be, I suppose, since you will have it so!'
she said, fairly beaten into non-resistance.
Boldwood pressed her hand, and allowed it to drop
in her lap. "I am happy now,' he said. "God bless
you!'
He left the room, and when he thought she might
be sufficiently composed sent one of the maids to her
Bathsheba cloaked the effects of the late scene as she
best could, followed the girl, and in a few moments
came downstairs with her hat and cloak on, ready to go.
To get to the door it was necessary to pass through the
hall, and before doing so she paused on the bottom of
the staircase which descended into one corner, to take
a last look at the gathering.
There was no music or dancing in progress just now.
At the
<P 437>
lower end, which had been arranged for the work+
folk specially, a group conversed in whispers, and with
clouded looks. Boldwood was standing by the fireplace,
and he, too, though so absorbed in visions arising from
her promise that he scarcely saw anything, seemed at
that moment to have observed their peculiar manner,
and their looks askance.
"What is it you are in doubt about, men?' he said.
One of them turned and replied uneasily: 'It was
something Laban heard of, that's all, sir.'
"News? Anybody married or engaged, born or
dead?' inquired the farmer, gaily. "Tell it to us, Tall.
One would think from your looks and mysterious ways
that it was something very dreadful indeed.'
"O no, sir, nobody is dead,' said Tall.
"I wish somebody was,' said Samway, in a whisper.
"What do you say, Samway?' asked Boldwood, some+
what sharply. "If you have anything to say, speak out;
if not, get up another dance.'
"Mrs. Troy has come downstairs,' said Samway to
Tall. "If you want to tell her, you had better do it now.'
"Do you know what they mean?' the farmer asked
Bathsheba, across the room.
"I don't in the least," said Bathsheba.
There was a smart rapping at the door. One of
the men opened it instantly, and went outside.
"Mrs. Troy is wanted,' he said, on returning.
"Quite ready,' said Bathsheba. "Though I didn't
tell them to send.'
"It is a stranger, ma'am,' said the man by the door.
"A stranger?' she said.
"Ask him to come in,' said Boldwood.
The message was given, and Troy, wrapped up to
his eyes as we have seen him, stood in the doorway.
There was an unearthly silence, all looking towards
the newcomer. Those who had just learnt that he
was in the neighbourhood recognized him instantly;
those who did not were perplexed. Nobody noted
Bathsheba. She was leaning on the stairs. Her brow
had heavily contracted; her whole face was
<P 438>
pallid, her
lips apart, her eyes rigidly staring at their visitor.
Boldwood was among those who did not notice that
he was Troy. "Come in, come in!' he repeated,
cheerfully, "and drain a Christmas beaker with us,
stranger!'
Troy next advanced into the middle of the room,
took off his cap, turned down his coat-collar, and looked
Boldwood in the face. Even then Boldwood did not
recognize that the impersonator of Heaven's persistent
irony towards him, who had once before broken in
upon his bliss, scourged him, and snatched his delight
away, had come to do these things a second time.
Troy began to laugh a mechanical laugh: Boldwood
recognized him now.
Troy turned to Bathsheba. The poor girl's wretched+
ness at this time was beyond all fancy or narration.
She had sunk down on the lowest stair; and there
she sat, her mouth blue and dry, and her dark eyes
fixed vacantly upon him, as if she wondered whether it
were not all a terrible illusion.
Then Troy spoke. "Bathsheba, I come here for
you!'
She made no reply.
" Come home with me: come!
Bathsheba moved her feet a little, but did not rise.
Troy went across to her.
"come, madam, do you hear what I say?' he said,
peremptorily.
A strange voice came from the fireplace -- a voice
sounding far off and confined, as if from a dungeon.
Hardly a soul in the assembly recognized the thin tones
to be those of Boldwood. Sudden dispaire had trans+
formed him.
"Bathsheba, go with your husband!'
Nevertheless, she did not move. The truth was
that Bathsheba was beyond the pale of activity -- and
yet not in a swoon. She was in a state of mental <1gutta>1
<1serena>1; her mind was for the minute totally deprived of
light at the same time no obscuration was apparent
from without.
Troy stretched out his hand to pull her her towards him,
when she quickly shrank back. This visible dread of
him seemed to irritate Troy, and he seized her arm and
pulled it sharply.
<P 439>
Whether his grasp pinched her, or
whether his mere touch was the ccause, was never known,
but at the moment of his seizure she writhed, and gave
a quick, low scream.
The scream had been heard but a few seconds When
it was followed by sudden deafening report that
echoed through the room and stupefied them all. The
oak partition shook with the concussion, and the place
was filled with grey smoke.
In bewilderment they turned their eyes to Boldwood.
at his back, as stood before the fireplace, was a gun+
rack, as is usual in farmhouses, constructed to hold two
guns. When Bathsheba had cried out in her husband's
grasp, Boldwood's face of gnashing despair had changed.
The veins had swollen, and a frenzied look had gleamed
in his eye. He had turned quickly, taken one of the
guns, cocked it, and at once discharged it at Troy.
Troy fell. The distance apart of the two men was
so small that the charge of shot did not spread in the
least, but passed like a bullet into his body. He uttered
a long guttural sigh -- there was a contraction -- an exten+
sion -- then his muscles relaxed, and he lay still.
Boldwood was seen through the smoke to be now
again engaged with the gun. It was double-barrelled,
and he had, meanwhile, in some way fastened his hand+
kerchief to the trigger, and with his foot on the other
end was in the act of turning the second barrel upon
himself. Samway his man was the first to see this, and
in the midst of the general horror darted up to him.
Boldwood had already twitched the handkerchief, and
the gun exploded a second time, sending its contents,
by a timely blow from Samway, into the beam which
crossed the ceiling.
"Well, it makes no difference!' Boldwood gasped.
"There is another way for me to die.'
Then he broke from Samway, crossed the room to
Bathsheba, and kissed her hand. He put on his hat,
opened the door, and went into the darkness, nobody
thinking of preventing him.
<C liv>
<P 440>
AFTER THE SHOCK
BOLDWOOD passed into the high road and turned
in the direction of Casterbridge. Here he walked at
an even, steady pace over Yalbury Hill, along the dead
level beyond, mounted Mellstock Hill, and between
eleven and twelve o'clock crossed the Moor into the town.
The streets were nearly deserted now, and the waving
lamp-flames only lighted up rows of grey shop-shutters,
and strips of white paving upon which his step echoed
as his passed along. He turned to the right, and halted
before an archway of heavy stonework, which was closed
by an iron studded pair of doors. This was the entrance
to the gaol, and over it a lamp was fixed, the light en+
abling the wretched traveller to find a belipull.
The small wicket at last opened, and a porter
appeared. Boldwood stepped forward, and said some+
thing in a low tone, when, after a delay, another man
came. Boldwood entered, and the door was closed
behind him, and he walked the world no more.
Long before this time Weatherbury had been
thoroughly aroused, and the wild deed which had ter+
minated Boldwood's merrymaking became known to
all. Of those out of the house Oak was one of the
first to hear of the catastophe, and when he entered
the room, which was about five minutes after Boldwood's
exit, the scene was terrible. All the female guests were
huddled aghast against the walls like sheep in a storm,
and the men were bewildered as to what to do. As for
Bathsheba, she had changed. She was sitting on the
floor beside the body of Troy, his head pillowed in her
lap, where she had herself lifted it. With one hand she
held her handkerchief to his breast and covered the
wound, though scarcely a single drop of blood had
flowed, and with the other she tightly clasped one of
his. The household convulsion had made her herself
again. The
<P 441>
temporary coma had ceased, and activity
had come with the necessity for it. Deeds of endur+
ance, which seem ordinary in philosophy, are rare in
conduct, and Bathsheba was astonishing all around her
now, for her philosophy was her conduct, and she
seldom thought practicable what she did not practise.
She was of the stuff of which great men's mothers
are made. She was indispensable to high generation,
hated at tea parties, feared in shops, and loved at crises.
Troy recumbent in his wife's lap formed now the sole
spectacle in the middle of the spacious room.
"Gabriel,' she said, automatically, when he entered,
turning up a face of which only the weliknown lines
remained to tell him it was hers, all else in the picture
having faded quite. "Ride to Casterbridge instantly
for a surgeon. It is, I believe, useless, but go. Mr.
Boldwood has shot my husband.'
Her statement of the fact in such quiet and simple
words came with more force than a tragic declamation,
and had somewhat the effect of setting the distorted
images in each mind present into proper focus. Oak,
almost before he had comprehended anything beyond
the briefest abstract of the event, hurried out of the
room, saddled a horse and rode away. Not till he had
ridden more than a mile did it occur to him that he
would have done better by sending some other man
on this errand, remaining himself in the house. What
had become of Boldwood? He should have been
looked after. Was he mad -- had there been a quarrel?
Then how had Troy got there? Where had he come
from? How did this remarkable reappearance effect
itself when he was supposed by many to be at the
bottom of the sea? Oak had in some slight measure
been prepared for the presence of Troy by hearing a
rumour of his return just before entering Boldwood's
house ; but before he had weighed that information, this
fatal event had been superimposed. However, it was too
late now to think of sending another messenger, and
he rode on, in the excitement of these self-inquiries
not discerning, when about three miles from Caster+
bridge, a square-figured pedestrian passing along
under the dark hedge in the same direction as his
own.
The miles necessary to be traversed, and other
hindrances
<P 442>
incidental to the lateness of the hour and
the darkness of the night, delayed the arrival of Mr,
Aldritch, the surgeon ; and more than three hours
passed between the time at which the shot was fired
and that of his entering the house. Oak was addition+
ally detained in Casterbridge through having to give
notice to the authorities of what had happened; and
he then found that Boldwood had also entered the
town, and delivercd himself up.
In the meantime the surgeon, having hastened into
the hall at Boldwood's, found it in darkness and quite
deserted. He went on to the back of the house,
where he discovered in the kitchen an old man, of
whom he made inquiries.
"She's had him took away to her own house, sir,'
said his informant.
"Who has?' said the doctor.
"Mrs. Troy. 'A was quite dead, sir.'
This was astonishing information. "She had no
right to do that,' said the doctor. "There will have
to be an inquest, and she should have waited to know
what to do.'
"Yes, sir; it was hinted to her that she had better
wait till the law was known. But she said law was
nothing to her, and she wouldn't let her dear husband's
corpse bide neglected for folks to stare at for all the
crowners in England.'
Mr. Aldritch drove at once back again up the
hill to Bathsheba's. The first person he met was
poor Liddy, who seemed literally to have dwindled
smaller in these few latter hours. "What has been
done?' he said.
"I don't know, sir,' said Liddy, with suspended
breath. "My mistress has done it all.'
"Where is she?'
" Upstairs with him, sir. When he was brought
home and taken upstairs, she said she wanted no
further help from the men. And then she called me,
and made me fill the bath, and after that told me I
had better go and lie down because I looked so ill.
Then she locked herself into the room alone with him,
and would not let a nurse come in, or anybody at all.
But I thought l'd wait in the next room in case she
should want me. I heard her moving about inside
for more than an 
<P 443>
hour, but she only came out once,
and that was for more candles, because hers had burnt
down into the socket. She said we were to let her
know when you or Mr. Thirdly came, sir.'
Oak entered with the parson at this moment, and
they all went upstairs together, preceded by Liddy
Smallbury. Everything was silent as the grave when
they paused on the landing. Liddy knocked, and
Bathsheba's dress was heard rustling across the room:
the key turned in the lock, and she opened the door.
Her looks were calm and nearly rigid, like a slightly
animated bust of Melpomene.
"Oh, Mr. Aldritch, you have come at last,' she
murmured from her lips merely, and threw back the
door. "Ah, and Mr. Thirdly. Well, all is done, and
anybody in the world may see him now.' She then
passed by him, crossed the landing, and entered
another room.
Looking into the chamber of death she had vacated
they saw by the light of the candles which were on the
drawers a tall straight shape lying at the further end
of the bedroom, wrapped in white. Everything around
was quite orderly. The doctor went in, and after a
few minutes returned to the landing again, where
Oak and the parson still waited.
"It is all done, indeed, as she says,' remarked Mr.
Aldritch, in a subdued voice. "The body has been
undressed and properly laid out in grave clothes.
Gracious Heaven -- this mere girl! She must have the
nerve of a stoic!'
"The heart of a wife merely,' floated in a whisper
about the ears of the three, and turning they saw
Bathsheba in the midst of them. Then, as if at that
instant to prove that her fortitude had been more of
will than of spontaneity, she silently sank down between
them and was a shapeless heap of drapery on the floor.
The simple consciousness that superhuman strain was
no longer required had at once put a period to her
power to continue it.
They took her away into a further room, and the
medical attendance which had been useless in Troy's
case was invaluable in Bathsheba's, who fell into a
series of fainting-fits that had a serious aspect for a
time. The sufferer was got to bed, 
<P 444>
and Oak, finding
from the bulletins that nothing really dreadful was to
be apprehended on her score, left the house. Liddy
kept watch in Bathsheba's chamber, where she heard
her mistress, moaning in whispers through the dull
slow hours of that wretched night: "O it is my fault
 -- how can I live! O Heaven, how can I live!'
<C lv>
<P 445>
THE MARCH FOLLOWING -- "BATHSHEBA BOLDWOOD'
WE pass rapidly on into the month of March, to a
breezy day without sunshine, frost, or dew. On Yai
bury Hill, about midway between Weatherbury and
Casterbridge, where the turnpike road passes over
the crest, a numerous concourse of people had
gathered, the eyes of the greater number being fre+
quently stretched afar in a northerly direction. The
groups consisted of a throng of idlers, a party of
javelin-men, and two trumpeters, and in the midst
were carriages, one of which contained the high
sheriff. With the idlers, many of whom had mounted
to the top of a cutting formed for the road, were several
Weatherbury men and boys -- among others Poorgrass,
Coggan, and Cain Ball.
At the end of half-an-hour a faint dust was seen in
the expected quarter, and shortly after a travelling+
carriage, bringing one of the two judges on the Western
Circuit, came up the hill and halted on the top. The
judge changed carriages whilst a flourish was blown
by the big-cheeked trumpeters, and a procession being
formed of the vehicles and javelin-men, they all pro+
ceeded towards the town, excepting the Weatherbury
men, who as soon as they had seen the judge move
off returned home again to their work.
" Joseph, I zeed you squeezing close to the carriage,"
said Coggan, as they walked. "Did ye notice my lord
judge's face ?'
"I did,' said Poorgrass. "I looked hard at en, as
if I would read his very soul; and there was mercy
in his eyes -- or to speak with the exact truth required
of us at this solemn time, in the eye that was towards
me.'
"Well, I hope for the best,' said Coggan, though
bad that must be. However, I shan't go to the trial,
and I'd advise the rest of ye that bain't wanted to bide
away. 'Twill disturb his 
<P 446>
mind more than anything to
see us there staring at him as if he were a show.'
" The very thing I said this morning,' observed Joseph,
"Justice is come to weigh him in the balances," I said
in my reflectious way, "and if he's found wanting, so
be it unto him," and a bystander said "Hear, hear,
A man who can talk like that ought to be heard.'
But I don't like dwelling upon it, for my few words
are my few words, and not much; though the speech
of some men is rumoured abroad as though by nature
formed for such.'
"So 'tis, Joseph. And now, neighbours, as I said,
every man bide at home.'
The resolution was adhered to ; and all waited
anxiously for the news next day. Their suspense
was diverted, however, by a discovery which was made
in the afternoon, throwing more light on Boldwood's
conduct and condition than any details which had
preceded it.
That he had been from the time of Greenhill Fair
until the fatal Christmas Eve in excited and unusual
moods was known to those who had been intimate
with him; but nobody imagined that there had shown
in him unequivocal symptoms of the mental derange+
ment which Bathsheha and Oak, alone of all others
and at different times, had momentarily suspected.
In a locked closet was now discovered an extraordinary
collection of articles. There were several sets of ladies'
dresses in the piece, of sundry expensive materials;
silks and satins, poplins and velvets, all of colours
which from Bathsheba's style of dress might have been
judged to be her favourites. There were two muffs,
sable and ermine. Above all there was a case of
jewellery, containing four heavy gold bracelets and
several lockets and rings, all of fine quality and manu+
facture. These things had been bought in Bath and
other towns from time to time, and brought home by
stealth. They were all carefully packed in paper, and
each package was labelled " Bathsheba Boldwood,' a
date being subjoined six years in advance in every
instance.
These somewhat pathetic evidences of a mind crazed
with care and love were the subject of discourse in
<P 447>
Warren's malt-house when Oak entered from Caster+
bridge with tidings of the kiln glow shone upon
it, told the tale sufficiently well. Boldwood, as every
one supposed he would do, had pleaded guilty, and
had been sentenced to death.
The conviction that Boldwood had not been morally
responsible for his later acts now becam general. Facts
elicited previous to the trial had pointed strongly in the
same direction, but they had not been of sufficient weight
to lead to an order for an examination into the state
of Boldwood's mind. It was astonishing, now that a
presumption of insanity was raised, how many collateral
circumstances were remembered to which a condition
of mental disease seemed to afford the only explanation
 -- among others, the unprecedented neglect of his corn
stacks in the previous summer.
A petition was addressed to the Home Secretary,
advancing the circumstances which appeared to justify
a request for a reconsideration of the sentence. It was
not "numerously signed ' by the inhabitants of Caster+
bridge, as is usual in such cases, for Boldwood had
never made many friends over the counter. The shops
thought it very natural that a man who, by importing
direct from the producer, had daringly set aside the
first great principle of provincial existence, namely
that God made country villages to supply customers
to county towns, should have confused ideas about
the Decalogue. The prompters were a few merciful
men who had perhaps too feelingly considered the
facts latterly unearthed, and the result was that evidence
was taken which it was hoped might remove the crime
in a moral point of view, out of the category of wilful
murder, and lead it to be regarded as a sheer outcome
of madness.
The upshot of the petition was waited for in Weather+
bury with solicitous interest. The execution had been
fixed for eight o'clock on a Saturday morning about a
fortnight after the sentence was passed, and up to
Friday afternoon no answer had been recieved. At
that time Gabriel came from Casterbridge Gaol, whither
he had been to wish Boldwood good-bye, and turned
down a by-street to avoid the town. When past the last
<P 448>
house he heard a hammering, and lifting his bowed
head he looked back for a moment. Over the chimneys
he could see the upper part of the gaol entrance, rich
and glowing in the afternoon sun, and some moving
figures were there. They were carpenters lifting a post
into a vertical position within the parapet. He with+
drew his eyes quickly, and hastened on.
It was dark when he reached home, and half the
village was out to meet him.
"No tidings,' Gabriel said, wearily. "And I'm afraid
there's no hope. I've been with him more than two
hours.'
"Do ye think he <1really>1 was out of his mind when he
did it?' said Smallbury.
" I can't honestly say that I do,' Oak replied. " How+
ever, that we can talk of another time. Has there been
any change in mistress this afternoon?'
"None at all.'
"Is she downstairs?'
"No. And getting on so nicely as she was too.
She's but very little better now again than she was at
Christmas. She keeps on asking if you be come, and
if there's news, till one's wearied out wi' answering her.
Shall I go and say you've come?'
"No,' said Oak. "There's a chance yet; but I
couldn't stay in town any longer -- after seeing him too,
So Laban -- Laban is here, isn't he ? '
" Yes,' said Tall.
"What I've arranged is, that you shall ride to town
the last thing to-night ; leave here about nine, and wait
a while there, getting home about twelve. If nothing
has been received by eleven to-night, they say there's
no chance at all.'
"I do so hope his life will be spared,' said Liddy.
"If it is not, she'll go out of her mind too. Poor thing;
her sufferings have been dreadful; she deserves any+
body's pity.'
"Is she altered much ? ' said Coggan.
"If you haven't seen poor mistress since Christmas,
you wouldn't know her,' said Liddy. " Her eyes are so
miserable that she's not the same woman. Only two
years ago she was a romping girl, and now she's this!'
Laban departed as directed, and at eleven o'clock
that night 
<P 449>
several of the villagers strolled along the
road to Casterbridge and awaited his arrivai-among
them Oak, and nearly all the rest of Bathsheba's men.
Gabriel's anxiety was great that Boldwood might be
saved, even though in his conscience he felt that he
ought to die; for there had been qualities in the farmer
which Oak loved. At last, when they all were weary
the tramp of a horse was heard in the distance --
First dead, as if on turf it trode,
Then, clattering  on the village road
In other pace than forth he yode.
'We shall soon know now, one way or other,' said
Coggan, and they all stepped down from the bank on
which they had been standing into the road, and the
rider pranced into the midst of them.
"Is that you, Laban ? ' said Gabriel.
"Yes -- 'tis come. He's not to die. 'Tis confine+
ment during her Majesty's pleasure.'
"Hurrah!' said Coggan, with a swelling heart. "God's
above the devil yet!'
<C lvi>
<P 450>
BEAUTY IN LONELINESS -- AFTER ALL
BATHSHEBA revived with the spring. The utter
prostration that had followed the low fever from which
she had sufered diminished perceptibly when all un+
certainty upon every subject had come to an end.
But she remained alone now for the greater part of
her time, and stayed in the house, or at furthest went
into the garden. She shunned every one, even Liddy,
and could be brought to make no confidences, and to
ask for no sympathy.
As the summer drew on she passed more of her time
in the open air, and began to examine into farming
matters from sheer necessity, though she never rode
out or personally superintended as at former times.
One Friday evening in August she walked a little way
along the road and entered the village for the first time
since the sombre event of the preceding Christmas.
None of the old colour had as yet come to her cheek,
and its absolute paleness was heightened by the jet black
of her gown, till it appeared preternatural. When she
reached a little shop at the other end of the place,
which stood nearly opposite to the churchyard, Bath+
sheba heard singing inside the church, and she knew
that the singers were practising. She crossed the road,
opened the gate, and entered the graveyard, the high
sills of the church windows effectually screening her
from the eyes of those gathered within. Her stealthy
walk was to the nook wherein Troy had worked at
planting flowers upon Fanny Robin's grave, and she
came to the marble tombstone.
A motion of satisfaction enlivened her face as she
read the complete inscription. First came the words of
Troy himself: --
<P 451>
ERECTED BY FRANCIS TROY
IN BELOVEO MEMORY OF
FANNY ROBIN,
WHO DIED OCTOBER 9, 18 -- ,
AGED 20 YEARS.
Unerneath this was now inscribed in new letters: --
IN THE SAME GRAVE LIE
THE REMAINS OF THE AFORESAID
FRANCIS TROY,
WHO DIED DECEMBER 24TH, 18 -- ,
Whilst she stood and read and meditated the tones of
the organ began again in the church, and she went
with the same light step round to the porch and listened.
The door was closed, and the coir was learning a new
hymn. Bathsheba was stirred by emotions which
latterly she had assumed to be altogether dead within
her. The little attenuated voices of the children
brought to her ear in destinct utterance the words they
sang without thought or comprehension --
Lead, kindly Light, amid the encircling gloom,
Lead Thou me on.
Bathsheba's feeling was always to some extent de+
pendent upon her whim, as is the case with many other
women. Something big came into her throat and an
uprising to her eyes -- and she thought that she would
allow the imminent tears to flow if they wished. They
did flow and plenteously, and one fell upon the stone
bench beside her. Once that she had begun to cry for
she hardly knew what, she could not leave off for crowd+
ing thoughts she knew too well. She would have given
anything in the world to be, as those children were, un+
concerned at the meaning of their words, because too
innocent to feel the necessity for any such expression.
All the impassioned scenes of her brief expenence
seemed to revive with added emotion at that moment,
and those scenes which had been without emotion
<P 452>
during enactment had emotion then. Yet grief came
to her rather as a luxury than as the scourge of former
times.
Owing to Bathsheba's face being buried in her hands
she did not notice a form which came quietly into the
porch, and on seeing her, first moved as if to retreat,
then paused and regarded her. Bathsheba did not raise
her head for some time, and when she looked round
her face was wet, and her eyes drowned and dim. "Mr.
Oak,' exclaimed she, disconcerted, " how long have you
been here ?'
"A few minutes, ma'am,' said Oak, respectfully.
"Are you going in?' said Bathsheba; and there came
from within the church as from a prompter --
l loved the garish day, and, spite of fears,
pride ruled my will: remember not past years.
"I was,' said Gabriel. " I am one of the bass singers,
you know. I have sung bass for several months.
"Indeed: I wasn't aware of that. I'll leave you, then.'
Which I have loved long since, and lost awhile,
sang the children.
"Don't let me drive you away, mistress. I think I
won't go in to-night.'
"O no -- you don't drive me away.
Then they stood in a state of some embarrassment
Bathsheba trying to wipe her dreadfully drenched and
inflamed face without his noticing her. At length Oak
said, I've not seen you-i mean spoken to you -- since
ever so long, have I?' But he feared to bring distress+
ing memories back, and interrupted himself with: "Were
you going into church ?'
"No,' she said. I came to see the tombstone
privately -- to see if they had cut the inscription as I
wished Mr. Oak, you needn't mind speaking to me, if
you wish to, on the matter which is in both our minds
at this moment.'
"And have they done it as you wished ?' said Oak.
"Yes. Come and see it, if you have not already.'
So together they went and read the tomb. "Eight
months 
<P 453>
ago!' Gabriel murmured when he saw the date.
'It seems like yesterday to me.'
And to me as if it were years ago-iong years, and
I had been dead between. And now I am going home,
Mr. Oak.'
Oak walked after her. 'I wanted to name a small
matter to you as soon as I could,' he said, with hesitation.
"Merrly about business, and I think I may just mention it
now, if you'll allow me.'
" O yes, certainly.'
It is that I may soon have to give up the manage+
ment of your farm, Mrs. Troy. The fact is, I am think+
ing of leaving England -- not yet, you know -- next
spring. '
"Leaving England!' she said, in surprise and
genuine disappointment.' Why, Gabriel, what are you
going to do that for?'
"Well, I've thought it best,' Oak stammered out.
"California is the spot I've had in my mind to try.'
"But it is understood everywhere that you are going
to take poor Mr. Boldwood's farm on your own account.'
"I've had the refusal o' it 'tis true; but nothing is
settled yet, and I have reasons for gieing up. I shall
finish out my year there as manager for the trustees,
but no more.'
"And what shall I do without you? Oh, Gabriel, I
don't think you ought to go away. You've been with
me so long -- through bright times and dark times -- such
old friends that as we are -- that it seems unkind almost. I
had fancied that if you leased the other farm as master,
you might still give a helping look across at mine. And
now going away!'
"I would have willingly.'
" Yet now that I am more helpless than ever you go
away!'
"Yes, that's the ill fortune o' it,' said Gabriel, in a
distressed tone. "And it is because of that very help+
lessness that I feel bound to go. Good afternoon,
ma'am ' he concluded, in evident anxiety to get
away, and at once went out of the churchyard by a
path she could follow on no pretence whatever.
Bathsheba went home, her mind occupied with a
new trouble, which being rather harassing than deadly
was calculated to do good by diverting her from the
chronic gloom of 
<P 454>
her life. She was set thinking a great
deal about Oak and of his wich to shun her; and there
occurred to Bathsheba several incidents of latter in+
tercourse with him, which, trivial when singly viewed
amounted together to a perceptible disinclination for
her society. It broke upon her at length as a great
pain that her last old disciple was about to forsake her
and flee. He who had believed in her and argued on
her side when all the rest of the world was against her,
had at last like the others become weary and neglectful
of the old cause, and was leaving her to fight her battles
alone.
Three weeks went on, and more evidence of his
want of interest in her was forthcoming. She noticed
that instead of entering the small parlour or office
where the farm accounts were kept, and waiting, or
leaving a memorandum as he had hitherto done during
her seclusion, Oak never came at all when she was likely
to be there, only entering at unseasonable hours when
her presence in that part of the house was least to be
expected. Whenever he wanted directions he sent a
message, or note with neither heading nor signature, to
which she was obliged to reply in the same off-hand
style. Poor Bathsheba began to suffer now from the
most torturing sting of ali-a sensation that she was
despised.
The autumn wore away gloomily enough amid these
melancholy conjectures, and Christmas-day came, com+
pleting a year of her legal widowhood, and two years
and a quarter of her life alone. On examining her
heart it appeared beyond measure strange that the sub+
ject of which the season might have been supposed
suggestive -- the event in the hall at Boldwood's -- was
not agitating her at all; but instead, an agonizing con+
viction that everybody abjured her -- for what she could
not teli-and that Oak was the ringleader of the
recusants. Coming out of church that day she looked
round in hope that Oak, whose bass voice she had
heard rolling out from the gallery overhead in a most
unconcerned manner, might chance to linger in her path
in the old way. There he was, as usual, coming down
the path behind her. But on seeing Bathsheba turn, he
looked aside, and as soon as he got beyond the gate,
<P 455>
and there was the barest excuse for a divergence, he
made one, and vanished.
The next morning brought the culminating stroke;
she had been expecting it long. It was a formal notice
by letter from him that he should not renew his engage+
ment with her for the following Lady-day.
Bathsheba actually sat and cried over this letter most
bitterly. She was aggrieved and wounded that the
possession of hopeless love from Gabriel, which she had
AFTER ALL
grown to regard as her inalienable right for life, should
have been withdrawn just at his own pleasure in this
way. She was bewildered too by the prospect of having
to rely on her own resources again: it seemed to herself
that she never could again acquire energy sufficient to
go to market, barter, and sell. Since Troy's death Oak
had attended all sales and fairs for her, transacting her
business at the same time with his own. What should
she do now? Her life was becoming a desolation.
So desolate was Bathsheba this evening, that in an
absolute hunger for pity and sympathy, and miserable in
that she appeared to have outlived the only true friend+
ship she had ever owned, she put on her bonnet and
cloak and went down to Oak's house just after sunset,
guided on her way by the pale primrose rays of a
crescent moon a few days old.
A lively firelight shone from the window, but nobody
was visible in the room. She tapped nervously, and
then thought it doubtful if it were right for a single
woman to call upon a bachelor who lived alone, although
he was her manager, and she might be supposed to call
on business without any real impropriety. Gabriel
opened the door, and the moon shone upon his fore+
haad.
"Mr. Oak,' said Bathsheba, faintly.
"Yes; I am Mr. Oak,' said Gabriel. "Who have I
the honour -- O how stupid of me, not to know you,
mistress!'
"I shall not be your mistress much longer, shall I
Gabriel?' she said, in pathetic tones.
"Well, no. I suppose -- But come in, ma'am. Oh --
and I'll get a light,' Oak replied, with some awkwardness.
<P 456>
"No; not on my account.'
"It is so seldom that I get a lady visitor that I'm
afraid I haven't proper accommodation. Will you sit
down, please ? Here's a chair, and there's one, too.
I am sorry that my chairs all have wood scats, and are
rather hard, but i-was thinging of getting some new
ones.' Oak placed two or three for her.
"They are quite easy enough for me.'
So down she sat, and down sat he, the fire dancing
in their faces, and upon the old furniture
all a-sheenen
Wi' long years o' handlen,
that formed Oak's array of household possessions, which
sent back a dancing reflection in reply. It was very
odd to these two persons, who knew each other passing
well, that the mere circumstance of their meeting in a
new place and in a new way should make them so
awkward and constrained. In the fields, or at her house,
there had never been any embarrassment; but now that
Oak had become the entertainer their lives seemed to be
moved back again to the days when they were strangers.
"You'll think it strange that I have come, but -- -'
"O no; not at all.'
"But I thought -- Gabriel, I have been uneasy in the
belief that I have offended you, and that you are going
away on that account. It grieved me very much and
I couldn't help coming.'
"Offended me! As if you could do that, Bathsheba!'
"Haven't I?' she asked, gladly. " But, what are you
going away for else?'
"I am not going to emigrate, you know; I wasn't
aware that you would wish me not to when I told 'ee or I
shouldn't ha' thought of doing it,' he said, simply. "I
have arranged for Little Weatherbury Farm and shall
have it in my own hands at Lady-day. You know I've
had a share in it for some time. Still, that wouldn't
prevent my attending to your business as before, hadn't
it been that things have been said about us.'
<P 457>
"What?' said Bathsheba, in surprise. "Things said
about you and me! What are they?'
"I cannot tell you.'
"It would be wiser if you were to, I think. You have
played the part of mentor to me many times, and I don't
see why you should fear to do it now.'
"It is nothing that you have done, this time. The
top and tail o't is this -- that I am sniffing about here,
and waiting for poor Boldwood's farm, with a thought
of getting you some day.'
"Getting me! What does that mean?'
"Marrying o' 'ee, in plain British. You asked me to
tell, so you mustn't blame me.'
Bathsheba did not look quite so alarmed as if a
cannon had been discharged by her ear, which was what
Oak had expected. "Marrying me! I didn't know it
was that you meant,' she said, quietly. "Such a thing
as that is too absurd -- too soon -- to think of, by far!'
"Yes; of course, it is too absurd. I don't desire any
such thing; I should think that was plain enough by
this time. Surely, surely you be the last person in the
world I think of marrying. It is too absurd, as you say
""Too -- s-s-soon" were the words I used.'
"I must beg your pardon for correcting you, but you
said, ""too absurd,"' and so do I.'
"I beg your pardon too! she returned, with tears
in her eyes. """Too soon"' was what I said. But it
doesn't matter a bit -- not at ali-but I only meant,
""too soon"' Indeed, I didn't, Mr. Oak, and you must
believe me!'
Gabriel looked her long in the face, but the firelight
being faint there was not much to be seen. " Bathsheba,'
he said, tenderly and in surprise, and coming closer:
"if I only knew one thing -- whether you would allow me
to love you and win you, and marry you after ali-if I
only knew that!'
"But you never will know,' she murmured.
"Why?'
"Because you never ask.
"Oh -- Oh!' said Gabriel, with a low laugh of joyous+
ness. "My own dear -- -'
<P 458>
"You ought not to have sent me that harsh letter
this morning,' she interrupted. "It shows you didn't
care a bit about me, and were ready to desert me like
all the rest of them! It was very cruel of you, consider+
ing I was the first sweetheart that you ever had, and
you were the first I ever had; and I shall not forget it!'
"Now, Bathsheba, was ever anybody so provoking
he said, laughing. " You know it was purely that I, as
an unmarried man, carrying on a business for you as a
very taking young woman, had a proper hard part to
play -- more particular that people knew I had a sort
of feeling for'ee; and I fancied, from the way we were
mentioned together, that it might injure your good name.
Nobody knows the heat and fret I have been caused
by it.'
"And was that all?'
"All.'
"Oh, how glad I am I came!' she exclaimed, thank+
fully, as she rose from her seat. "I have thought so
much more of you since I fancied you did not want
even to see me again. But I must be going now, or I
shall be missed. Why Gabriel,' she said, with a slight
laugh, as they went to the door, "it seems exactly as if
I had come courting you -- how dreadful!'
"And quite right too,' said Oak. "I've danced at
your skittish heels, my beautiful Bathsheba, for many a
long mile, and many a long day; and it is hard to be+
grudge me this one visit.'
He accompanied her up the hill, explaining to her
the details of his forthcoming tenure of the other farm.
They spoke very little of their mutual  feeling; pretty
phrases and warm expressions being probably un+
necessary between such tried friends. Theirs was that
substantial affection which arises (if any arises at all)
when the two who are thrown together begin first by
knowing the rougher sides of each other's character,
and not the best till further on, the romance growing
up in the interstices of a mass of hard prosaic reality.
This good-fellowship -- <1camaraderie>1 --  usually occurring
through similarity of pursuits, is unfortunately seldom
superadded to love between the sexes, because men and
women associate, not in their lahours, but in their
pleasures merely. Where, however, happy circumstance
<P 459>
permits its development, the compounded feeling proves
itself to be the only love which is strong as death -- that
love which many waters cannot quench, nor the floods
drown, beside which the passion usually called by the
name is evanescent as steam.
<C lvii>
<P 460>
A FOGGY NIGHT AND MORNING -- CONCLUSION
"THE most private, secret, plaines wedding that it is
possible to have.'
Those had been Bathsheba's words to Oak one
evening, some time after the event of the preceding
chapter, and he meditated a full hour by the clock upon
how to carry out her wishes to the letter.
"A licence -- O yes, it must be a licence,' he said
to himself at last. "Very well, then; first, a license.'
On a dark night, a few days later, Oak came with
mysterious steps from the surrogate's door, in Caster+
bridge. On the way home he heard a heavy tread in
front of him, and, overtaking the man, found him to be
Coggan. They walked together into the village until
they came to a little lane behind the church, leading
down to the cottage of Laban Tall, who had lately been
installed as clerk of the parish, and was yet in mortal
terror at church on Sundays when he heard his lone
voice among certain hard words of the Psalms, whither
no man ventured to follow him.
"Well, good-night, Coggan,' said Oak, "I'm going
down this way.'
"Oh!' said Coggan, surprised; "what's going on to+
night then, make so bold Mr. Oak?'
It seemed rather ungenerous not to tell Coggan,
under the circumstances, for Coggan had been true as
steel all through the time of Gabriel's unhappiness about
Bathsheba, and Gabriel said, " You can keep a secret,
Coggan?'
"You've proved me, and you know.'
"Yes, I have, and I do know. Well, then, mistress
and I mean to get married to-morrow morning.'
"Heaven's high tower! And yet I've thought of
such a thing 
<P 461>
from time to time; true, I have. But
keeping it so close! Well, there, 'tis no consarn of
amine, and I wish 'ee joy o' her.'
"Thank you, Coggan. But I assure 'ee that this
great hush is not what I wished for at all, or what
either of us would have wished if it hadn't been for
certain things that would make a gay wedding seem
hardly the thing. Bathsheba has a great wish that all
the parish shall not be in church, looking at her -- she's
shyiike and nervous about it, in fact -- so I be doing
this to humour her.'
"Ay, I see: quite right, too, I suppose I must say.
And you be now going down to the clerk.'
"Yes; you may as well come with me.'
"I am afeard your labour in keeping it close will be
throwed away,' said Coggan, as they walked along.
"Labe Tall's old woman will horn it all over parish in
half-an-hour. '
"So she will, upon my life; I never thought of
that,' said Oak, pausing. "Yet I must tell him to+
night, I suppose, for he's working so far off, and leaves
early.'
"I'll tell 'ee how we could tackle her,' said Coggan.
"I'll knock and ask to speak to Laban outside the door,
you standing in the background. Then he'll come out,
and you can tell yer tale. She'll never guess what I
want en for; and I'll make up a few words about the
farm-work, as a blind.'
This scheme was considered feasible; and Coggan
advanced boldly, and rapped at Mrs. Tall's door. Mrs.
Tall herself opened it.
"I wanted to have a word with Laban.'
"He's not at home, and won't be this side of eleven
o'clock. He've been forced to go over to Yalbury since
shutting out work. I shall do quite as well.'
"I hardly think you will. Stop a moment;' and
Coggan stepped round the corner of the porch to consult
Oak.
"Who's t'other man, then?' said Mrs. Tall.
"Only a friend,' said Coggan.
"Say he's wanted to meet mistress near church-hatch
to-morrow morning at ten,' said Oak, in a whisper.
"That he must come without fail, and wear his best
clothes.'
<P 462>
"The clothes will floor us as safe as houses!' said
Coggan.
"It can't be helped said Oak. "Tell her.'
So Coggan delivered the message. "Mind, het or
wet, blow or snow, he must come, added Jan. "'Tis
very particular, indeed. The fact is, 'tis to witness her
sign some law-work about taking shares wi' another
farmer for a long span o' years. There, that's what 'tis,
and now I've told 'ee, Mother Tall, in a way I shouldn't
ha' done if I hadn't loved 'ee so hopeless well.'
Coggan retired before she could ask any further;
and next they called at the vicar's in a manner which
excited no curiosity at all. Then Gabriel went home,
and prepared for the morrow.
"Liddy,' said Bathsheba, on going to bed that night,
"I want you to call me at seven o'clock to-morrow, In
case I shouldn't wake.'
"But you always do wake afore then, ma'am.'
"Yes, but I have something important to do, which
I'll tell you of when the time comes, and it's best to
make sure.'
CONCLUSION
Bathsheba, however, awoke voluntarily at four, nor
could she by any contrivance get to sleep again. About
six, being quite positive that her watch had stopped
during the night, she could wait no longer. She went
and tapped at Liddy's door, and after some labour awoke
her.
"But I thought it was I who had to call you?' said
the bewildered Liddy. "And it isn't six yet.'
"Indeed it is; how can you tell such a story, Liddy?
I know it must be ever so much past seven. Come to
my room as soon as you can; I want you to give my
hair a good brushing.'
When Liddy came to Bathsheba's room her mistress
was already waiting. Liddy could not understand
this extraordinary promptness. " Whatever <1is>1 going on,
ma'am?' she said.
"Well, I'll tell you,' said Bathsheba, with a mischiev+
ous smile in her bright eyes. "Farmer Oak is coming
here to dine with me to-day!'
"Farmer Oak -- and nobody else ? -- you two alone?'
"Yes.'
<P 463>
"But is it safe, ma'am, after what's been said?' asked
her companion, dubiously. "A woman's good name is
such a perishable article that --  -- '
Bathsheba laughed with a flushed cheek, and
whispered in Liddy's ear, although there was nobody
present. Then Liddy stared and exclaimcd, " Souls
alive, what news! It makes my heart go quite
bumpity-bump"
"It makes mine rather furious, too,' said Bathsheba.
"However, there's no getting out of it now!'
It was a damp disagreeable morning. Nevertheless,
at twenty minutes to ten o'clock, Oak came out of his
house, and
Went up the hill side
With that sort of stride
A man puts out when walking in search of a bride,
and knocked Bathsheba's door. Ten minutes later
a large and a smaller umbrella might have been seen
moving from the same door, and through the mist along
the road to the church. The distance was not more
than a quarter of a mile, and these two sensible persons
deemed it unnecessary to drive. An observer must have
been very close indeed to discover that the forms under
the umbrellas were those of Oak and Bathsheba, arm-in+
arm for the first time in their lives, Oak in a greatcoat
extending to his knees, and Bathsheba in a cloak that
reached her clogs. Yet, though so plainly dressed
there was a certain rejuvenated appearance about her : --
  As though a rose should shut and be a bud again.
Repose had again incarnadined her cheeks; and having,
at Gabriel's request, arranged her hair this morning as
she had worn it years ago on Norcombe Hill, she seemed
in his eyes remarkably like a girl of that fascinating
dream, which, considering that she was now only three
or four-and-twenty, was perhaps not very wonderful. In
the church were Tall, Liddy, and the parson, and in a
remarkably short space of time the deed was done.
The two sat down very quietly to tea in Bathsheba's
parlour in the evening of the same day, for it had been
arranged that 
<P 464>
Farmer Oak should go there to live, since
he had as yet neither money, house, nor furniture worthy
of the name, though he was on a sure way towards them,
whilst Bathsheba was, comparatively, in a plethora of all
three.
Just as Bathsheba was pouring out a cup of tea,
their ears were greeted by the firing of a cannon,
followed by what seemed like a tremendous blowing of
trumpets, in the front of the house.
"There!' said Oak, laughing, "I knew those fellows
were up to something, by the look on their face; '
Oak took up the light and went into the porch,
followed by Bathsheba with a shawl over her head. The
rays fell upon a group of male figures gathered upon the
gravel in front, who, when they saw the newly-married
couple in the porch, set up a loud "Hurrah!' and at
the same moment bang again went the cannon in the
background, followed by a hideous clang of music from
a drum, tambourine, clarionet, serpent, hautboy, tenor+
viol, and double-bass -- the only remaining relics of the
true and original Weatherbury band -- venerable worm+
eaten instruments, which had celebrated in their own
persons the victories of Marlhorough, under the fingers
of the forefathers of those who played them now. The
performers came forward, and marched up to the
front.
"Those bright boys, Mark Clark and Jan, are at the
bottom of all this,' said Oak. " Come in, souls, and
have something to eat and drink wi' me and my wife.'
"Not to-night,' said Mr. Clark, with evident self+
denial. "Thank ye all the same; but we'll call at a
more seemly time. However, we couldn't think of
letting the day pass without a note of admiration of
some sort. If ye could send a drop of som'at down to
Warren's, why so it is. Here's long life and happiness
to neighbour Oak and his comely bride!'
"Thank ye; thank ye all,' said Gabriel. "A bit and
a drop shall be sent to Warren's for ye at once. I had
a thought that we might very likely get a salute of some
sort from our old friends, and I was saying so to my
wife but now.'
"Faith,' said Coggan, in a critical tone, turning to his
companions, "the man hev learnt to say ""my wife"'
in a wonderful 
<P 465>
naterel way, considering how very youth+
ful he is in wedlock as yet -- hey, neighbours all?'
"I never heerd a skilful old married feller of twenty
years' standing pipe ""my wife"' in a more used note
than 'a did,' said Jacob Smallbury. "It might have been
a little more true to nater if't had been spoke a little
chillier, but that wasn't to be expected just now.
"That improvement will come wi' time,' said Jan,
twirling his eye.
Then Oak laughed, and Bathsheba smiled (for she
never laughed readily now), and their friends turned to
go.
"Yes; I suppose that's the size o't,' said Joseph
Poorgrass with a cheerful sigh as they moved away;
"and I wish him joy o' her; though I were once or
twice upon saying to-day with holy Hosea, in my
scripture manner, which is my second nature. ""Ephraim
is joined to idols: let him alone."' But since 'tis as 'tis
why, it might have been worse, and I feel my thanks
accordingly.'
THE END
.EQ
delim $$
.EN
.CH "1  WHY SPEECH OUTPUT?"
.ds RT "Why speech output?
.ds CX "Principles of computer speech
.pp
Speech is our everyday, informal, communication medium.  But although we use
it a lot, we probably don't assimilate as much information through our
ears as we do through our eyes, by reading or looking at pictures and diagrams.
You go to a technical lecture to get the feel of a subject \(em the overall
arrangement of ideas and the motivation behind them \(em and fill in the details,
if you still want to know them, from a book.  You probably find out more about
the news from ten minutes with a newspaper than from a ten-minute news broadcast.
So it should be emphasized from the start that speech output from computers is
not a panacea.  It doesn't solve the problems of communicating with computers;
it simply enriches the possibilities for communication.
.pp
What, then, are the advantages of speech output?  One good reason for listening
to a radio news broadcast instead of spending the time with a newspaper
is that you can listen while shaving, doing the housework, or driving the car.
Speech leaves hands and eyes free for other tasks.
Moreover, it is omnidirectional, and does not require a free line of sight.
Related to this is the
use of speech as a secondary medium for status reports and warning messages.
Occasional interruptions by voice do not interfere with other activities,
unless they demand unusual concentration, and people can assimilate spoken messages
and queue them for later action quite easily and naturally.
.pp
The second key feature of speech communication stems from the telephone.
It is the universality of the telephone receiver itself that is important
here, rather than the existence of a world-wide distribution network;
for with special equipment (a modem and a VDU) one does not need speech to take advantage of
the telephone network for information transfer.
But speech needs no tools other than the telephone, and this gives
it a substantial advantage.  You can go into a phone booth anywhere in the world,
carrying no special equipment, and have access to your computer within seconds.
The problem of data input is still there:  perhaps your computer
system has a limited word recognizer, or you use the touchtone telephone
keypad (or a portable calculator-sized tone generator).  Easy remote access
without special equipment is a great, and unique, asset to speech communication.
.pp
The third big advantage of speech output is that it is potentially very cheap.
Being all-electronic, except for the loudspeaker, speech systems are well
suited to high-volume, low-cost, LSI manufacture.  Other computer output
devices are at present tied either to mechanical moving parts or to the CRT.
This was realized quickly by the computer hobbies market, where speech output
peripherals have been selling like hot cakes since the mid 1970's.
.pp
A further point in favour of speech is that it is natural-seeming and
somehow cuddly when compared with printers or VDU's.  It would have been much
more difficult to make this point before the advent of talking toys like
Texas Instruments' "Speak 'n Spell" in 1978, but now it is an accepted fact that friendly
computer-based gadgets can speak \(em there are talking pocket-watches
that really do "tell" the time, talking microwave ovens, talking pinball machines, and,
of course, talking calculators.
It is, however, difficult to assess whether the appeal stems from
mechanical speech's novelty \(em it
is still a gimmick \(em and also to what extent it is tied up with
economic factors.
After all, most of the population don't use high-quality VDU's, and their major
experience of real-time interactive computing is through the very limited displays
and keypads provided on video games and teletext systems.
.pp
Articles on speech communication with computers often list many more advantages of voice output
(see Hill 1971, Turn 1974, Lea 1980).
.[
Hill 1971 Man-machine interaction using speech
.]
.[
Lea 1980
.]
.[
Turn 1974 Speech as a man-computer communication channel
.]
For example, speech
.LB
.NP
can be used in the dark
.NP
can be varied from a (confidential) whisper to a (loud) shout
.NP
requires very little energy
.NP
is not appreciably affected by weightlessness or vibration.
.LE
However, these either derive from the three advantages we have discussed above,
or relate
mainly to exotic applications in space modules and divers' helmets.
.pp
Useful as it is at present, speech output would be even more attractive if it could
be coupled with speech input.  In many ways, speech input is its "big brother".
Many of the benefits of speech output are even more striking for speech input.
Although people can assimilate information faster through the eyes than the
ears, the majority of us can generate information faster with the mouth than
with the hands.  Rapid typing is a relatively uncommon skill, and even high
typing rates are much slower than speaking rates (although whether we can
originate ideas quickly enough to keep up with fast speech is another matter!)  To
take full advantage of the telephone for interaction with machines, machine
recognition of speech is obviously necessary.  A microwave oven, calculator,
pinball machine, or alarm clock that responds to spoken commands is certainly
more attractive than one that just generates spoken status messages.  A book
that told you how to recognize speech by machine would undoubtedly be more
useful than one like this that just discusses how to synthesize it!  But the
technology of speech recognition is nowhere near as advanced as that of
synthesis \(em it's a much more difficult problem.  However, because speech input
is obviously complementary to speech output, and even very limited input
capabilities will greatly enhance many speech output systems, it is worth
summarizing the present state of the art of speech recognition.
.pp
Commercial speech recognizers do exist.  Almost invariably, they accept
words spoken in isolation, with gaps of silence between them, rather than
connected utterances.
It is not difficult to discriminate with high accuracy up to a hundred
different words spoken by the same speaker, especially if the vocabulary
is carefully selected to avoid words which sound similar.  If several
different speakers are to be comprehended, performance can be greatly improved
if the machine is given an opportunity to calibrate their voices in a training
session, and is informed at recognition time which one is to speak.
With a large population of unknown speakers, accurate recognition is difficult
for vocabularies of more than a few carefully-chosen words.
.pp
A half-way house between isolated word discrimination and recognition of connected
speech is the problem of spotting known words in continuous speech.  This
allows much more natural input, if the dialogue is structured as keywords
which may be
interspersed by unimportant "noise words".  To speak in truly isolated
words requires a great deal of self-discipline and concentration \(em it is
surprising how much of ordinary speech is accounted for by vague sounds
like um's and aah's, and false starts.  Word spotting disregards these and so
permits a more relaxed style of speech.  Some progress has been made on it in
research laboratories, but the vocabularies that can be accomodated are still
very small.
.pp
The difficulty of recognizing connected speech depends crucially on what is
known in advance about the dialogue:  its pragmatic, semantic, and syntactic
constraints.  Highly structured dialogues constrain very heavily the choice of
the next word.  Recognizers which can deal with vocabularies of over 1000 words
have been built in research laboratories, but the structure of the input has
been such that the average "branching factor" \(em the size of the set out of
which the next word must be selected \(em is only around 10 (Lea, 1980).
.[
Lea 1980
.]
Whether such
highly constrained languages would be acceptable in many practical applications
is a moot point.  One commercial recognizer, developed in 1978, can cope with
up to five words spoken continuously from a basic 120-word vocabulary.
.pp
There has been much debate about whether it will ever be possible for a speech
recognizer to step outside rigid constraints imposed on the utterances it can
understand, and act, say, as an automatic dictation machine.  Certainly the most
advanced recognizers to date depend very strongly on a tight context being
available.  Informed opinion seems to accept that in ten years' time,
voice data entry in the office will be an important and economically feasible
prospect, but that it would be rash to predict the appearance of unconstrained
automatic dictation by then.
.pp
Let's return now to speech output and take a look at some systems which use it,
to illustrate the advantages and disadvantages of speech in practical
applications.
.sh "1.1  Talking calculator"
.pp
Figure 1.1 shows a calculator that speaks.
.FC "Figure 1.1"
Whenever a key is pressed,
the device confirms the action by saying the key's name.
The result of any computation is also spoken aloud.
For most people, the addition of speech output to a calculator is simply a
gimmick.
(Note incidentally that speech
.ul
input
is a different matter altogether.  The ability to dictate lists of numbers and
commands to a calculator, without lifting one's eyes from the page, would have
very great advantages over keypad input.)  Used-car
salesmen find that speech output sometimes helps to clinch a deal:  they key in
the basic car price and their bargain-basement deductions, and the customer is so
bemused by the resulting price being spoken aloud to him by a machine that he
signs the cheque without thinking!  More seriously, there may be some small
advantage to be gained when keying a list of figures by touch from having their
values read back for confirmation.  For blind people, however, such devices
are a boon \(em and there are many other applications, like talking elevators
and talking clocks, which benefit from even very restricted voice output.
Much more sophisticated is a typewriter with audio feedback, designed by
IBM for the blind.  Although blind typists can remember where the keys on a
typewriter are without difficulty, they rely on sighted proof-readers to help
check
their work.  This device could make them more useful as office typists and
secretaries.  As well as verbalizing the material (including punctuation)
that has been typed, either by attempting to pronounce the words or by spelling
them out as individual letters, it prompts the user through the more complex action sequences
that are possible on the typewriter.
.pp
The vocabulary of the talking calculator comprises the 24 words of Table 1.1.
.RF
.nr x1 2.0i+\w'percent'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta 2.0i
zero	percent
one	low
two	over
three	root
four	em (m)
five	times
six	point
seven	overflow
eight	minus
nine	plus
times-minus	clear
equals	swap
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 1.1  Vocabulary of a talking calculator"
This represents a total of about 13 seconds of speech.  It is stored
electronically in read-only memory (ROM), and Figure 1.2 shows the circuitry
of the speech module inside the calculator.
.FC "Figure 1.2"
There are three large integrated circuits.
Two of them are ROMs, and the other is a special synthesis chip which decodes the
highly compressed stored data into an audio waveform.
Although the mechanisms used for storing speech by commercial devices are
not widely advertised by the manufacturers, the talking calculator almost
certainly uses linear predictive coding \(em a technique that we will examine
in Chapter 6.
The speech quality is very poor because of the highly compressed storage, and
words are spoken in a grating monotone.
However, because of the very small vocabulary, the quality is certainly good
enough for reliable identification.
.sh "1.2  Computer-generated wiring instructions"
.pp
I mentioned earlier that one big advantage of speech over visual output is that
it leaves the eyes free for other tasks.
When wiring telephone equipment during manufacture, the operator needs to use
his hands as well as eyes to keep his place in the task.
For some time tape-recorded instructions have been used for this in certain
manufacturing plants.  For example, the instruction
.LB
.NI
Red 2.5    11A terminal strip    7A tube socket
.LE
directs the operator to cut 2.5" of red wire, attach one end to a specified point
on the terminal strip, and attach the other to a pin of the tube socket.  The
tape recorder is fitted with a pedal switch to allow a sequence of such instructions
to be executed by the operator at his own pace.
.pp
The usual way of recording the instruction tape is to have a human reader
dictate them from a printed list.
The tape is then checked against the list by another listener to ensure that
the instructions are correct.  Since wiring lists are usually stored and
maintained in machine-readable form, it is natural to consider whether speech
synthesis techniques could be used to generate the acoustic tape directly by
a computer (Flanagan
.ul
et al,
1972).
.[
Flanagan Rabiner Schafer Denman 1972
.]
.pp
Table 1.2 shows the vocabulary needed for this application.
.RF
.nr x1 2.0i+2.0i+\w'tube socket'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta 2.0i +2.0i
A	green	seventeen
black	left	six
bottom	lower	sixteen
break	make	strip
C	nine	ten
capacitor	nineteen	terminal
eight	one	thirteen
eighteen	P	thirty
eleven	point	three
fifteen	R	top
fifty	red	tube socket
five	repeat coil	twelve
forty	resistor	twenty
four	right	two
fourteen	seven	upper
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 1.2  Vocabulary needed for computer-generated wiring instructions"
It is rather larger
than that of the talking calculator \(em about 25 seconds of speech \(em but well
within the limits of single-chip storage in ROM, compressed by the linear
predictive technique.  However, at the time that the scheme was investigated
(1970\-71) the method of linear predictive coding had not been fully developed,
and the technology for low-cost microcircuit implementation was not available.
But this is not important for this particular application, for there is
no need to perform the synthesis on a miniature low-cost computer system,
nor need it
be accomplished in real time.  In fact a technique of concatenating
spectrally-encoded words was used (described in Chapter 7), and it was
implemented on a minicomputer.  Operating much slower than real-time, the system
calculated the speech waveform and wrote it to disk storage.  A subsequent phase
read the pre-computed messages and recorded them on a computer-controlled analogue
tape recorder.
.pp
Informal evaluation showed the scheme to be quite successful.  Indeed, the
synthetic speech, whose quality was not high, was actually preferred to
natural speech in the noisy environment of the production line, for each
instruction was spoken in the same format, with the same programmed pause
between the items.
A list of 58 instructions of the form shown above was recorded and used
to wire several pieces of apparatus without errors.
.sh "1.3  Telephone enquiry service"
.pp
The computer-generated wiring scheme illustrates how speech can be used to give
instructions without diverting visual attention from the task at hand.
The next system we examine shows how speech output can make the telephone
receiver into a remote computer terminal for a variety of purposes
(Witten and Madams, 1977).
.[
Witten Madams 1977 Telephone Enquiry Service
.]
The caller employs the touch-tone keypad shown in Figure 1.3 for input, and the
computer generates
a synthetic voice response.
.FC "Figure 1.3"
Table 1.3 shows the process of making
contact with the system.
.RF
.fi
.nh
.na
.in 0.3i
.nr x0 \w'COMPUTER:  '
.nr x1 \w'CALLER:  '
.in+\n(x0u
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Dials the service.
.ti-\n(x0u
COMPUTER:  Answers telephone.
"Hello, Telephone Enquiry Service.  Please
enter your user number".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters user number.
.ti-\n(x0u
COMPUTER:  "Please enter your password".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters password.
.ti-\n(x0u
COMPUTER:  Checks validity of password.
If invalid, the user is asked to re-enter
his user number.
Otherwise,
"Which service do you require?"
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters service number.
.in 0
.nf
.FG "Table 1.3  Making contact with the telephone enquiry system"
.pp
Advantage is taken of the disparate speeds of input (keyboard) and
output (speech) to hasten the dialogue by imposing a question-answer structure
on it, with the computer taking the initiative.  The machine can
afford to be slightly verbose if by so doing it makes the caller's
response easier, and therefore more rapid.  Moreover, operators who
are experienced enough with the system to anticipate questions can
easily forestall them just by typing ahead, for the computer is programmed
to examine its input buffer before issuing prompts and to suppress them if
input has already been provided.
.pp
An important aim of the system is to allow application programmers with no
special knowledge of speech to write independent services for it.
Table 1.4 shows an example of the use of one such application program,
.RF
.fi
.nh
.na
.in 0.3i
.nr x0 \w'COMPUTER:  '
.nr x1 \w'CALLER:  '
.in+\n(x0u
.ti-\n(x0u
COMPUTER:  "Stores Information Service.  Please enter
component name".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "SN7406#".
.ti-\n(x0u
COMPUTER:  "The component name is SN7406.  Is this correct?"
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*1#" (system convention for "yes").
.ti-\n(x0u
COMPUTER:  "This component is in stores".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*7#" (command for "price").
.ti-\n(x0u
COMPUTER:  "The component price is 35 pence".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*8#" (command for "minimum number").
.ti-\n(x0u
COMPUTER:  "The minimum number of this component kept
in stores is 10".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "SN7417#".
.ti-\n(x0u
COMPUTER:  "The component name is SN7417.  Is this correct?"
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*1#".
.ti-\n(x0u
COMPUTER:  "This component is not in stores".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*9#" (command for "delivery time").
.ti-\n(x0u
COMPUTER:  "The expected delivery time is 14 days".
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Enters "*0#".
.ti-\n(x0u
COMPUTER:  "Which service do you require?"
.in 0
.nf
.FG "Table 1.4  The Stores Information Service"
the
Stores Information Service, which permits enquiries to be made of a database
holding information on electronic components kept in stock.
This subsystem is driven by
.ul
alphanumeric
data entered on the touch-tone keypad.  Two or three letters are associated
with each digit, in a manner which is fairly standard in touch-tone telephone
applications.  These are printed on a card overlay
that fits the keypad (see Figure 1.3).  Although true alphanumeric data entry
would require a multiple key press for each character,
the ambiguity inherent in
a single-key-per-character convention can usually be resolved by the computer,
if it has a list of permissible entries.  For example, the component names
SN7406 and ZTX300 are read by the machine as "767406" and "189300", respectively.
Confusion rarely occurs if the machine is expecting a valid component code.
The same holds true of people's names, and file names \(em although with these
one must take care not to identify a series of files by similar names, like
TX38A, TX38B, TX38C.  It is easy for the machine to detect the rare cases
where ambiguity occurs, and respond by requesting further information:  "The
component name is SN7406.  Is this correct?"  (In fact, the Stores Information
Service illustrated in Table 1.4 is defective in that it
.ul
always
requests confirmation of an entry, even when no ambiguity exists.)  The
use of a telephone keypad for data entry will be taken up again in Chapter 10.
.pp
A distinction is drawn throughout the system between data entries and
commands, the latter being prefixed by a "*".  In this example, the
programmer chose to define a command for each possible question about a
component, so that a new component name can be entered at any time
without ambiguity.  The price paid for the resulting brevity of dialogue
is the burden of memorizing the meaning of the commands.  This is an
inherent disadvantage of a one-dimensional auditory display over the
more conventional graphical output:   presenting menus by speech is tedious and
long-winded.  In practice, however, for a simple task such as the
Stores Information Service it is quite convenient for the caller to
search for the appropriate command by trying out all possibilities \(em there
are only a few.
.pp
The problem of memorizing commands is alleviated by establishing some
system-wide conventions.  Each input is terminated by a "#", and
the meaning of standard commands is given in Table 1.5.
.RF
.fi
.nh
.na
.in 0.3i
.nr x0 \w'# alone  '
.nr x1 \w'\(em  '
.ta \n(x0u +\n(x1u
.nr x2 \n(x0+\n(x1
.in+\n(x2u
.ti-\n(x2u
*#	\(em	Erase this input line, regardless of what has
been typed before the "*".
.ti-\n(x2u
*0#	\(em	Stop.  Used to exit from any service.
.ti-\n(x2u
*1#	\(em	Yes.
.ti-\n(x2u
*2#	\(em	No.
.ti-\n(x2u
*3#	\(em	Repeat question or summarize state of current
transaction.
.ti-\n(x2u
# alone	\(em	Short form of repeat.  Repeats or summarizes
in an abbreviated fashion.
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.nf
.FG "Table 1.5  System-wide conventions for the service"
.pp
A summary of services available on the system is given in
Table 1.6.
.RF
.fi
.na
.in 0.3i
.nr x0 \w'000  '
.nr x1 \w'\(em  '
.nr x2 \n(x0+\n(x1
.in+\n(x2u
.ta \n(x0u +\n(x1u
.ti-\n(x2u
\0\01	\(em	tells the time
.ti-\n(x2u
\0\02	\(em	Biffo (a game of NIM)
.ti-\n(x2u
\0\03	\(em	MOO (a game similar to that marketed under the name "Mastermind")
.ti-\n(x2u
\0\04	\(em	error demonstration
.ti-\n(x2u
\0\05	\(em	speak a file in phonetic format
.ti-\n(x2u
\0\06	\(em	listening test
.ti-\n(x2u
\0\07	\(em	music (allows you to enter a tune and play it)
.ti-\n(x2u
\0\08	\(em	gives the date
.sp
.ti-\n(x2u
100	\(em	squash ladder
.ti-\n(x2u
101	\(em	stores information service
.ti-\n(x2u
102	\(em	computes means and standard deviations
.ti-\n(x2u
103	\(em	telephone directory
.sp
.ti-\n(x2u
411	\(em	user information
.ti-\n(x2u
412	\(em	change password
.ti-\n(x2u
413	\(em	gripe (permits feedback on services from caller)
.sp
.ti-\n(x2u
600	\(em	first year laboratory marks entering service
.sp
.ti-\n(x2u
910	\(em	repeat utterance (allows testing of system)
.ti-\n(x2u
911	\(em	speak utterance (allows testing of system)
.ti-\n(x2u
912	\(em	enable/disable user 100 (a no-password guest user number)
.ti-\n(x2u
913	\(em	mount a magnetic tape on the computer
.ti-\n(x2u
914	\(em	set/reset demonstration mode (prohibits access by low-priority users)
.ti-\n(x2u
915	\(em	inhibit games
.ti-\n(x2u
916	\(em	inhibit the MOO game
.ti-\n(x2u
917	\(em	disable password checking when users log in
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.nf
.FG "Table 1.6  Summary of services on a telephone enquiry system"
They range from simple games and demonstrations, through serious database
services, to system maintenance facilities.
A priority structure is imposed upon them, with higher
service numbers being available only to higher priority users.
Services in the lowest range (1\-99) can be obtained by all, while
those in the highest range (900\-999) are maintenance services,
available only to the system designers.  Access to the lower-numbered
"games" services can be inhibited by a priority user \(em this was
found necessary to prevent over-use of the system!  Another advantage
of telephone access to an information retrieval system is that some
day-to-day maintenance can be done remotely, from the office telephone.
.pp
This telephone enquiry service, which was built in 1974, demonstrated that
speech synthesis had moved from a specialist phonetic discipline into the
province of engineering practicability.  The speech was generated "by rule"
from a phonetic input (the method is covered in Chapters 7 and 8), which
has very low data storage requirements of around 75\ bit/s of speech.
Thus an enormous vocabulary and range of services could be accomodated on a
small computer system.
Despite the fairly low quality of the speech, the response from callers was
most encouraging.  Admittedly the user population was a self-selected body of
University staff, which one might suppose to have high tolerance to new ideas,
and a system designed for the general public would require more effort to be
spent on developing speech of greater intelligibility.  Although it was
observed that some callers failed to understand parts of the responses, even
after repetition, communication was largely unhindered in most cases; users
being driven by a high motivation to help the system help them.
.pp
The use of speech output in conjunction with a simple input device requires
careful thought for interaction to be successful and comfortable.  It is
necessary that the computer direct the conversation as much as possible,
without seeming to be taking charge.  Provision for eliminating prompts
which are unwanted by sophisticated users is essential to avoid frustration.
We will return to the topic of programming techniques for speech interaction
in Chapter 10.
.pp
Making a computer system available over the telephone results in a sudden
vast increase in the user population.  Although people's reaction to a new
computer terminal in every office was overwhelmingly favourable, careful
resource allocation was essential to prevent the service being hogged by a
persistent few.  As with all multi-access computer systems, it is particularly
important that error recovery is effected automatically and gracefully.
.sh "1.4  Speech output in the telephone exchange"
.pp
The telephone enquiry service was an experimental vehicle for research on speech
interaction, and was developed in 1974.
Since then, speech has begun to be used in real commercial applications.
One example is System\ X, the British Post Office's computer-controlled
telephone exchange.  This incorporates many features
not found in conventional telephone exchanges.
For example, if a number is found to be busy, the call can be attempted
again by a "repeat last call" command, without having to re-dial the full number.
Alternatively, the last number can be stored for future re-dialling, freeing
the phone for other calls.
"Short code
dialling" allows a customer to associate short codes with commonly-dialled
numbers.
Alarm calls can be booked at specified times, and are made automatically
without human intervention.
Incoming calls can be barred, as can outgoing ones.  A diversion service
allows all incoming calls to be diverted to another telephone, either
immediately, or if a call to the original number remains unanswered for
a specified period of time, or if the original number is busy.
Three-party calls can be set up automatically, without involving the
operator.
.pp
Making use of these facilities presents the caller with something of a problem.
With conventional telephone exchanges, feedback is provided on what is happening
to a call by the use of four tones \(em the dial tone, the busy tone,
the ringing tone, and the number unavailable tone.
For the more sophisticated interaction which is expected on the advanced
exchange, a much greater variety of status signals is required.
The obvious solution is to use
computer-generated spoken
messages to inform the caller when these services are invoked, and to guide him
through the sequences of actions needed to set up facilities like call
re-direction.  For example, the messages used by the exchange when a user
accesses the alarm call
service are
.LB
.NI
Alarm call service.
Dial the time of your alarm call followed by square\u\(dg\d.
.FN 1
\(dg\d"Square" is the term used for the "#" key on the touch-tone telephone.\u
.EF
.NI
You have booked an alarm call for seven thirty hours.
.NI
Alarm call operator.  At the third stroke it will be seven thirty.
.LE
.pp
Because of the rather small vocabulary, the number of messages that can be
stored in their entirety rather than being formed by concatenation of
smaller units, and the short time which was available for development,
System\ X stores speech as a time waveform, slightly compressed by a time-domain
encoding operation (such techniques are described in Chapter 3).
Utterances which contain variable parts, like the time of alarm in the messages
above, are formed by inserting separately-recorded digits in a fixed 
"carrier" message.  No attempt is made to apply uniform intonation
contours to the synthetic utterances.  The resulting speech is of excellent
quality (being a slightly compressed recording of a human voice), but sometimes
exhibits somewhat anomalous pitch contours.
For example, the digits comprising numbers often sound rather jerky and
out-of-context \(em which indeed they are.
.pp
Even more advanced facilities can be expected on telephone exchanges in
the future.  A message storage capability is one example.  Although
automatic call recording machines have been available for years, a centralized
facility could time and date a message, collect the caller's identity
(using the telephone keypad), and allow the recipient to select messages left
for him through an interactive dialogue so that he could control the order
in which he listens to them.  He could choose to leave certain messages to be
dealt with later, or re-route them to a colleague.  He may even wish to leave
reminders for himself, to be dialled automatically at specified times (like
alarm calls with user-defined information attached).  The sender of a message
could be informed automatically by the system when it is delivered.  None of
this requires speech recognition, but it does need economical speech
.ul
storage,
and also speech
.ul
synthesis
(for time and date tags).
.sh "1.5  Travel consultant"
.pp
Some current research in speech communication with computers is aimed at
embedding the dialogue in a task environment which provides it with an overall
contextual framework.
This in fact was the motivation for the experimental telephone enquiry service
described above, and it was observed that people are able to tolerate rather
low quality speech if they feel that the interaction is worthwhile.  One step
further is the use of speech
.ul
input
as well as output, and here the context of the conversation which is provided
by the task environment can be used to improve recognition accuracy
significantly.
A system set up at Bell Telephone Laboratories indicates what we can expect
to find operating commercially in the future (Levinson and Shipley, 1980).
.[
Levinson Shipley 1980
.]
It provides timetable information about airline flights, and allows the user
to make reservations.
.pp
An example dialogue is given in Table 1.7.
.RF
.fi
.nh
.na
.in 0.3i
.nr x0 \w'COMPUTER:  '
.nr x1 \w'CALLER:  '
.in+\n(x0u
.ti-\n(x0u
COMPUTER:  This is the Bell Laboratories flight information system.  May I help you?
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  I would like to go to Chicago.
.ti-\n(x0u
COMPUTER:  Please specify the day of your departure.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  I want to leave at four p.m..
.ti-\n(x0u
COMPUTER:  Please specify the day of your departure.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  I want to depart on the two five May.
.ti-\n(x0u
COMPUTER:  Flight number nine two leaves New York at four p.m. arrives in Chicago at five twenty five p.m..
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  What plane is on the flight?
.ti-\n(x0u
COMPUTER:  The aircraft is a Boeing seven twenty seven.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  How much is the fare?
.ti-\n(x0u
COMPUTER:  The round trip coach fare is one hundred forty two dollars.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  I want a first class seat.
.ti-\n(x0u
COMPUTER:  One seat thank you.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  What is the fare?
.ti-\n(x0u
COMPUTER:  The round trip first class fare is one hundred eighty four dollars.
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  Please repeat the arrival time.
.ti-\n(x0u
COMPUTER:  The arrival time is five twenty five p.m..
.ti-\n(x0u
CALLER:\h'\n(x0u-\n(x1u'  I will take the flight.
.ti-\n(x0u
COMPUTER:  Your reservation on flight number nine two to Chicago on Friday is confirmed.  Thank you.
.in 0
.nf
.MT 2
Table 1.7  A conversation with an airline flight information service
(from Levinson and Shipley, 1980)
.TE
.[
Levinson Shipley 1980
.]
The user dials the system from an
ordinary telephone.  The recognition side must be trained by each user, and
accepts isolated words spoken with brief pauses between them.
The voice response unit has a vocabulary of around 200 words, and
synthesizes its answers by slotting words into "templates" evoked by the speech
understanding part in response to a query.  For example,
.LB
.NI
This flight makes \(em stops
.NI
Flight number \(em leaves \(em at \(em , arrives in \(em at \(em
.LE
are templates which when called with specific slot fillers could produce the
utterances
.LB
.NI
This flight makes three stops
.NI
Flight number nine two leaves New York at four p.m.,
arrives in Chicago at five twenty-five p.m.
.LE
The chief research interest of the system is in its speech understanding
capabilities, and the method used for speech output is relatively
straightforward.  The templates and words are recorded, digitized, compressed
slightly, and stored on disk files (totalling a few hundred thousand bytes of
storage), using techniques similar to those of System\ X.
Again, no independent manipulation of pitch is possible, and so the utterances
sound intelligible but the transition between templates and slot fillers is not
completely fluent.  However, the overall context of the interaction means that
the communication is not seriously disrupted even if the machine occasionally
misunderstands the man or vice versa.  The user's attention is drawn away from
recognition accuracy and focussed on the exchange of information with the machine.
The authors conclude that progress in speech recognition can best be made by
studying it in the context of communication rather than in a vacuum or as part
of a one-way channel, and the same is undoubtedly true of speech synthesis as
well.
.sh "1.6  Reading machine for the blind"
.pp
Perhaps the most advanced attempt to provide speech output from a computer
is the Kurzweil reading machine for the blind, first marketed in the late
1970's (Figure 1.4).
.FC "Figure 1.4"
This device reads an ordinary book aloud.  Users adjust the reading
speed according to the content of the material and their familiarity with
it, and the maximum rate has recently been improved to around 225 words per
minute \(em perhaps half as fast again as normal human speech rates.
.pp
As well as generating speech from text, the machine has to scan the document
being read and identify the characters presented to it.  A scanning camera
is used, controlled by a program which searches for and tracks the lines of
text.  The output of the camera is digitized, and the image is enhanced
using signal-processing techniques.  Next each individual letter must be
isolated, and its geometric features identified and compared with a pre-stored
table of letter shapes.  Isolation of letters is not at all trivial, for
many type fonts have "ligatures" which are combinations of characters joined
together (for example, the letters "fi" are often run together.)  The
machine must cope with many printed type fonts, as well as typewritten ones.
The text-recognition side of the Kurzweil reading machine is in fact one of
its most advanced features.
.pp
We will discuss the problem of speech generation from text in Chapter 9.
It has many facets.  First there is pronunciation, the
translation of letters to sounds.  It is important to take into account
the morphological structure of words, dividing them into "root" and "endings".
Many words have concatenated suffixes (like "like-li-ness").  These are
important to detect, because a final "e" which appears on a root word
is not pronounced itself but affects the pronunciation of the previous
vowel.  Then there is the difficulty that some words look the same
but are pronounced differently, depending on their meaning or on the syntactic
part that they play in the sentence.
Appropriate intonation is extremely difficult to generate from a plain textual
representation, for it depends on the meaning of the text and the way in which
emphasis is given to it by the reader.  Similarly the rhythmic structure is
important, partly for correct pronunciation and partly for purposes of
emphasis.
Finally the sounds that have been deduced from the text need to be synthesized
into acoustic form, taking due account of the many and varied contextual effects
that occur in natural speech.  This by itself is a challenging problem.
.pp
The performance of the Kurzweil reading machine is not good.  While it seems
to be true that some blind people can make use of it, it is far from
comprehensible to an untrained listener.  For example,
it will miss out words and even whole phrases, hesitate in a
stuttering manner, blatantly mis-pronounce many words, fail to detect
"e"s which should be silent, and give completely wrong rhythms
to words, making them impossible to understand.
Its intonation is decidedly unnatural, monotonous, and often downright
misleading.  When it reads completely new text to people unfamiliar with its
quirks,
they invariably fail to understand more than an odd word here and there,
and do not improve significantly when the text is repeated more than once.
Naturally performance improves if the material is familiar or expected
in some way.
One useful feature is the machine's ability to spell out difficult words
on command from the user.
.pp
While not wishing to denigrate the Kurzweil machine, which is a remarkable
achievement in that it integrates together many different advanced
technologies, there is no doubt that the state of the art in speech synthesis
directly from unadorned text is extremely primitive, at present.
It is vital not to overemphasize the potential usefulness of abysmal speech,
which takes a great deal of training on the part of the user before
it becomes at all intelligible.  To make a rather extreme analogy,
Morse code could be used as
audio output, requiring a great deal of training, but capable of being understood
at quite high rates by an expert.
It could be generated very cheaply.
But clearly the man in the street would find it quite unacceptable as
an audio output medium, because of the excessive effort required to learn to use
it.  In many applications, very bad synthetic speech is just as useless.
However, the issue is complicated by the fact that for people who use
synthesizers regularly, synthetic speech becomes quite easily comprehensible.
We will return to the problem of evaluating the quality of artificial speech
later in the book (Chapter 8).
.sh "1.7  System considerations for speech output"
.pp
Fortunately, very many of the applications of speech output from computers
do not need to read unadorned text.
In all the example systems described above (except the reading machine),
it is enough to be able to store utterances in some representation which can
include pre-programmed cues for pronunciation, rhythm, and intonation in
a much more explicit way than ordinary text does.
.pp
Of course, techniques
for storing audio information have been in use for decades.
For example, a domestic cassette tape recorder stores speech at much better
than telephone quality at very low cost.  The method of direct
recording of an analogue waveform is currently used for announcements in
the telephone network to provide information such as the time, weather
forecasts, and even bedtime stories.
However, it is difficult to provide rapid access to messages stored in
analogue form, and although some computer peripherals which use analogue
recordings for voice-response applications have been marketed \(em they are
discussed briefly at the beginning of Chapter 3 \(em they have been
superseded by digital storage techniques.
.pp
Although direct storage of a digitized audio waveform is used in some
voice-response systems, the approach has certain limitations.  The most
obvious one is the large storage requirement:  suitable coding can reduce
the data-rate of speech to as little as one hundredth of that needed by
direct digitization, and textual representations reduce it by another factor
of ten or twenty.  (Of course, the speech quality is inevitably compromised
somewhat by data-compression techniques.)  However, the cost of storage is
dropping so fast that this is not necessarily an overriding factor.
A more fundamental limitation is that utterances stored directly cannot sensibly
be modified in any way to take account of differing contexts.
.pp
If the results of certain kinds of analyses
of utterances are stored, instead of simply the digitized waveform,
a great deal more flexibility can be gained.
It is possible to separate out the features of intonation and amplitude from
the articulation of the speech, and this raises the attractive possibility
of regenerating utterances with pitch contours different from those with which they were
recorded.
The primary analysis technique used for this purpose is
.ul
linear prediction
of speech, and this is treated in some detail in Chapter 6.  It also reduces drastically the
data-rate of speech, by a factor of around 50.
It is likely that many voice-response systems in the short- and medium-term
future will use linear predictive representations for utterance storage.
.pp
For maximum flexibility, however, it is preferable to store a textual
representation of the utterance.
There is an important distinction between speech
.ul
storage,
where an actual human utterance is recorded, perhaps processed to lower
the data-rate, and stored for subsequent regeneration when required,
and speech
.ul
synthesis,
where the machine produces its own individual utterances which are not based
on recordings of a person saying the same thing.  The difference is summarized
in Figure 1.5.
.FC "Figure 1.5"
In both cases something is stored:  for the first it is
a direct representation of an actual human utterance, while for the second
it is a typed
.ul
description
of the utterance in terms of the sounds, or phonemes, which constitute it.
The accent and tone of voice of the human speaker will be apparent in
the stored speech output, while for synthetic speech the accent is the
machine's and the tone of voice is determined by the synthesis program.
.pp
Probably the most attractive representation of utterances in man-machine
systems is ordinary English text, as used by the Kurzweil reading machine.
But, as noted above, this poses extraordinarily difficult problems for the
synthesis procedure, and these inevitably result in severely degraded speech.
Although in the very long term these problems may indeed be solved,
most speech output systems can adopt as their representation of an utterance
a description of it which explicitly conveys the difficult features of
intonation, rhythm, and even pronunciation.
In the kind of applications described above (barring the reading machine),
input will be prepared by a
programmer as he builds the software system which supports the interactive
dialogue.
Although it is important that the method of specifying utterances be easily
learned, it is not necessary that plain English
is used.  It should be simple for the programmer to enter new
utterances and modify them on-line in cut-and-try attempts to render the
man-machine dialogue as natural as possible.  A phonetic input
can be quite adequate for this, especially if the system allows the
programmer to hear immediately the synthesized version of the message
he types.  Furthermore, markers which indicate rhythm and intonation can
be added to the message so that the system does not have to deduce these features
by attempting to "understand" the plain text.
.pp
This brings us to another disadvantage of speech storage as compared with
speech synthesis.  To provide utterances for a voice response system using
stored human speech, one must assemble together special input hardware,
a quiet room, and (probably) a dedicated computer.  If the speech is to be
heavily encoded, either expensive special hardware is required or the encoding
process, if performed by software on a general-purpose computer, will take
a considerable length of time (perhaps hundreds of times real-time).  In
either case, time-consuming editing of the speech will be necessary, with
follow-up recordings to clarify sections of speech which turn out to be
unsuitable or badly recorded.  If at a later date the voice response
system needs modification, it will be necessary to recall the same speaker,
or re-record the entire utterance set.  This discourages the application
programmer from adjusting his dialogue in the light of experience.
Synthesizing from a textual representation, on the other hand, allows him
to change a speech prompt as simply as he could a VDU one, and evaluate
its effect immediately.
.pp
We will return to methods of digitizing and compacting speech in Chapters 3
and 4, and carry on to consider speech synthesis in subsequent chapters.
Firstly, however, it is necessary to take a look at what speech is and how
people produce it.
.sh "1.8  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "1.9  Further reading"
.pp
There are remarkably few general books on speech output, although a
substantial specialist literature exists for the subject.
In addition to the references listed above, I suggest that you look
at the following.
.LB "nn"
.\"Ainsworth-1976-1
.]-
.ds [A Ainsworth, W.A.
.ds [D 1976
.ds [T Mechanisms of speech recognition
.ds [I Pergamon
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
A nice, easy-going introduction to speech recognition, this book covers
the acoustic structure of the speech signal in a way which makes
it useful as background reading for speech synthesis as well.
It complements Lea, 1980, cited above; which presents more recent results
in greater depth.
.in-2n
.\"Flanagan-1973-2
.]-
.ds [A Flanagan, J.L.
.as [A " and Rabiner, L.R. (Editors)
.ds [D 1973
.ds [T Speech synthesis
.ds [I Wiley
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
This is a collection of previously-published research papers on speech
synthesis, rather than a unified book.
It contains many of the classic papers on the subject from 1940\ -\ 1972,
and is a very useful reference work.
.in-2n
.\"LeBoss-1980-3
.]-
.ds [A LeBoss, B.
.ds [D 1980
.ds [K *
.ds [T Speech I/O is making itself heard
.ds [J Electronics
.ds [O May\ 22
.ds [P 95-105
.nr [P 1
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
The magazine
.ul
Electronics
is an excellent source of up-to-the-minute news, product announcements,
titbits, and rumours in the commercial speech technology world.
This particular article discusses the projected size of the voice
output market and gives a brief synopsis of the activities of several
interested companies.
.in-2n
.\"Witten-1980-5
.]-
.ds [A Witten, I.H.
.ds [D 1980
.ds [T Communicating with microcomputers
.ds [I Academic Press
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
A recent book on microcomputer technology, this is unusual in that
it contains a major section on speech communication
with computers (as well as ones
on computer buses, interfaces, and graphics).
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "2  WHAT IS SPEECH?"
.ds RT "What is speech?
.ds CX "Principles of computer speech
.pp
People speak by using their vocal cords as a sound source, and making rapid
gestures of the articulatory organs (tongue, lips, jaw, and so on).
The resulting changes in shape of the vocal tract allow production
of the different sounds that we know as the vowels and consonants of
ordinary language.
.pp
What is it necessary to learn about this process for the purposes of
speech output from computers?
That depends crucially upon how speech is represented in the system.
If utterances are stored as time waveforms \(em and this is what we will be
discussing in the next chapter \(em the structure of speech is not important.
If frequency-related parameters of particular natural utterances are
stored, then it is advantageous to take into account some of the
acoustic properties of the speech waveform.
.pp
This point can be brought into focus by contrasting the transmission
(or storage) of speech with that of real-life television pictures,
as has been proposed for a videophone service.
Massive data reductions, of the order of 50:1, can be achieved for speech,
using techniques that are described in later chapters.  For pictures,
data reduction is still an important issue \(em even more so for the
videophone than for the telephone, because of the vastly higher
information rates involved.
Unfortunately, the potential for data reduction is much
smaller \(em nothing like the 50:1 figure quoted above.
This is because speech sounds have definite characteristics, imparted
by the fact that they are produced by a human vocal tract, which
can be exploited for data reduction.
Television pictures have no equivalent generative structure, for
they show just those things that the camera points at.
.pp
Moving up from frequency-related parameters of
.ul
particular
utterances, it
is possible to store such parameters in a
.ul
general
form which characterizes the sound segments that appear in spoken language.
This immediately raises the issue of
.ul
classification
of sound segments, to form a basis for storing generalized acoustic
information and for retrieval of the information needed to synthesize
any particular utterance.
Speech is by nature continuous, and any synthesis system based upon
discrete classification must come to terms with this by tackling
the problems of transition from one segment to another,
and local modification of sound segments as a function of their context.
.pp
This brings us to another level of representation.
So far we have talked of the
.ul
acoustic
nature of speech, but when we have to cope with transitions between
discrete sound segments it may be fruitful to consider
.ul
articulatory
properties as well.
Any model of the speech production process
is in effect a model of the articulatory process that generates the speech.
Some speech research is concerned with
modelling
the vocal tract directly, rather than modelling the acoustic output from it.
One might specify, for example, position of tongue and posture of jaw and lips
for a vowel, instead of giving frequency-related
characteristics of it.  This is a potent
tool in linguistic research, for it brings one closer to human production of
speech \(em in particular to the connection between brain and articulators.
.pp
Articulatory
synthesis holds a promise of high-quality speech, for the transitional
effects caused by tongue and jaw inertia can be modelled directly.
However, this potential has
not yet been realized.
Speech from current articulatory models is of much poorer quality than
that from acoustically-based synthesis methods.
The major problem is in gaining data about articulatory
behaviour during running speech \(em it is much easier to perform acoustic
analysis on the resulting sound than it is to examine the vocal organs in
action.  Because of this, the subject is not treated in this book.
We will only look at articulatory properties insofar as they help us
to understand, in a qualitative way, the acoustic nature of speech.
.pp
Speech, however, is much more than mere articulation.
Consider \(em admittedly a rather extreme and chauvinistic example \(em the
number of ways a girl can say "yes".
Breathy voice, slow tempo, low pitch \(em these are all characteristics which
affect the utterance as a whole, rather than being classifiable into
individual sound segments.  Linguists call them "prosodic" or
"suprasegmental" features, for they relate to overall aspects of the
utterance, and distinguish them from "segmental" ones which concern
the articulation of individual segments of syllables.
The most important prosodic features are pitch, or fundamental frequency
of the voice, and rhythm.
.pp
This chapter provides a brief introduction to the nature of the speech
signal.  Depending upon what speech output techniques we use, it may be
necessary to understand something of the acoustic nature of the speech
signal; the system that generates it (the vocal tract); commonly-used
classifications of sound segments; and the prosodic aspects of speech.
This material is little used in the early chapters of the book, but
becomes increasingly important as the story unfolds.
Hence you may skip the remainder of this chapter if you wish, but
should return to it later to pick up more background whenever it
becomes necessary.
.sh "2.1  The anatomy of speech"
.pp
The so-called "voiced" sounds of speech \(em like the sound you make when
you say "aaah" \(em are produced by passing air up from the lungs through
the larynx or voicebox, which is situated just behind the Adam's apple.
The vocal tract from the larynx to the lips acts as a resonant cavity,
amplifying certain frequencies and attenuating others.
.pp
The waveform generated by the larynx, however, is not simply sinusoidal.
(If it were, the vocal tract resonances would merely
give a sine wave of the same frequency but amplified or
attenuated according to how close it was to the nearest resonance.)  The
larynx contains two folds of skin \(em the vocal cords \(em which blow apart and flap
together again in each cycle of the pitch period.
The pitch of a male voice in speech varies from as low as 50\ Hz
(cycles per second) to perhaps
250\ Hz, with a typical median value of 100\ Hz.
For a female voice the range is higher, up to about 500\ Hz in speech.
Singing can go much higher:  a top C sung by a soprano has a frequency
of just over 1000\ Hz, and some opera singers can reach
substantially higher than this.
.pp
The flapping action of the vocal cords
gives a waveform which can be approximated by a
triangular pulse (this and other approximations will be discussed in
Chapter 5).
It has a rich spectrum of harmonics,
decaying at around 12\ dB/octave, and each harmonic is affected
by the vocal tract resonances.
.rh "Vocal tract resonances."
A simple model of the vocal tract is an organ-pipe-like cylindrical tube
(Figure 2.1),
with a sound source at one end (the larynx) and open at the other (the lips).
.FC "Figure 2.1"
This has resonances at wavelengths $4L$, $4L/3$, $4L/5$, ..., where $L$
is the length of the tube;
and these correspond to frequencies $c/4L$, $3c/4L$, $5c/4L$, ...\ Hz, $c$
being the speed of
sound in air.
Calculating these frequencies, using a typical figure for the
distance between larynx and lips of 17\ cm,
and $c = 340$\ m/s for the speed of sound, leads to resonances at
approximately 500\ Hz, 1500\ Hz, 2500\ Hz, ... .
.pp
When excited by the harmonic-rich waveform of the larynx,
the vocal tract resonances produce
peaks known as
.ul
formants
in the energy spectrum of the speech wave (Figure 2.2).
.FC "Figure 2.2"
The lowest formant, called formant one, varies from around 200\ Hz
to 1000\ Hz during speech, the exact range depending on the size
of the vocal tract.
Formant two varies from around 500 to 2500\ Hz, and formant three
from around 1500 to 3500\ Hz.
.pp
You can easily hear the lowest formant by whispering the vowels in
the words "heed", "hid", "head", "had", "hod", "hawed", and "who'd".
They appear to have a steadily descending pitch, yet since you are
whispering there is no fundamental frequency.
What you hear is the lowest resonance of the vocal tract \(em formant one.
Some masochistic people can play simple tunes with this formant by putting
their mouth in successive vowel shapes and knocking the top of their head
with their knuckles \(em hard!
.pp
A difficulty occurs when trying to identify the lower formants for speakers
with high-pitched voices.
When a formant frequency falls below the fundamental excitation frequency
of the voice, its effect is diminished \(em although it is still present.
The vibrato used by opera singers provides a very low-frequency excitation
(at the vibrato rate) which helps to illuminate the lower formants even
when the pitch of the voice is very high.
.pp
Of course, speech is not a static phenomenon.
The organ-pipe model describes the speech spectrum during a continuously
held vowel with the mouth in a neutral position such as for "aaah".
But in real speech the tongue and lips are in continuous motion,
altering the shape of the vocal tract and hence the positions of the resonances.
It is as if the organ-pipe were being squeezed and expanded in
different places all the time.
Say
.ul
ee
as in "heed" and feel how close your tongue is to the roof of your mouth,
causing a constriction near the front of the vocal cavity.
.pp
Linguists and speech engineers use a special frequency analyser called a
"sound spectrograph" to make a three-dimensional plot of the variation
of the speech energy spectrum with time.
Figure 2.3 shows a spectrogram of the
utterance "go away".
.FC "Figure 2.3"
Frequency is given on the vertical axis,
and bands are shown at the beginning to indicate the scale.
Time is plotted horizontally,
and energy is given by the darkness of any particular area.
The lower few formants can be seen as dark bands extending horizontally,
and they are in continuous motion.
In the neutral first vowel of "away", the formant frequencies
pass through
approximately the 500\ Hz, 1500\ Hz, and 2500\ Hz that we calculated earlier.
(In fact, formants two and three are somewhat lower than these values.)
.pp
The
fine vertical striations in the spectrogram correspond to single openings of the vocal cords.
Pitch changes continuously throughout an utterance,
and this can be seen on the spectrogram by the differences in spacing
of the striations.
Pitch change, or
.ul
intonation,
is singularly important in
lending naturalness to speech.
.pp
On a spectrogram, a continuously held vowel shows up as a static energy spectrum.
But beware \(em what we call a vowel in everyday language is not the same thing as a
"vowel" in phonetic terms.
Say "I" and feel how the tongue moves continuously while you're speaking.
Technically, this is a
.ul
diphthong
or slide between two vowel positions,
and not a single vowel.
If you say
.ul
ar
as in "hard",
and change slowly to
.ul
ee
as in "heed", you will obtain a diphthong not unlike that in "I".
And there are many more phonetically different vowel sounds
than the a, e, i, o, and u that we normally think of.
The words "hood" and "mood" have different vowels, for example, as do "head" and "mead".
The principal acoustic difference between the various vowel sounds
is in the frequencies of the first two formants.
.pp
A further complication is introduced by the nasal tract.  This is
a large cavity which is coupled to the oral tract by a passage at the
back of the mouth.
The passage is guarded by a flap of skin called the "velum".
You know about this because inadvertent opening of the velum while
swallowing causes food or drink to go up your nose.
The nasal cavity is switched in and out of the vocal tract
by the velum during speech.
It is used for consonants
.ul
m,
.ul
n,
and the
.ul
ng
sound in the word
"singing".
Vowels are frequently nasalized too.
A very effective demonstration of the amount of nasalization in ordinary
speech can be obtained by cutting a nose-shaped hole in a large
baffle which divides a room, speaking normally with one's nose in the hole,
and having someone listen on the other side.
The frequency of occurrence of
nasal sounds, and the volume of sound that is emitted
through the nose, are both surprisingly large.
Interestingly enough, when we say in conversation that someone sounds
"nasal", we usually mean "non-nasal".  When the nasal passages are
blocked by a cold, nasal sounds are missing \(em
.ul
n\c
\&'s turn into
.ul
d\c
\&'s,
and
.ul
m\c
\&'s to
.ul
b\c
\&'s.
.pp
When the nasal cavity is switched in to the vocal tract, it introduces
formant resonances, just as the oral cavity does.
Although we cannot
alter the shape of the nasal tract significantly, the nasal formant
pattern is not fixed, because the oral tract does play a part in nasal
resonances.
If you say
.ul
m,
.ul
n,
and
.ul
ng
continuously, you can hear the difference and feel how it is produced by
altering the combined nasal/oral tract resonances with your tongue position.
The nasal cavity operates in parallel with
the oral one:  this causes the two resonance patterns to be summed
together, with resulting complications which will be discussed in Chapter 5.
.rh "Sound sources."
Speech involves sounds other than those caused by regular vibration of
the larynx.
When you whisper, the folds of the larynx are held slightly
apart so that the air passing between them becomes turbulent, causing a noisy excitation
of the resonant cavity.
The formant peaks are still present, superimposed on the noise.  Such
"aspirated" sounds occur in the
.ul
h
of "hello", and for a very short time
after the lips are opened at the beginning of "pit".
.pp
Constrictions made in the mouth produce hissy noises such as
.ul
ss,
.ul
sh,
and
.ul
f.
For example, in
.ul
ss
the tip of the tongue is high up,
very close to the roof of the mouth.
Turbulent air passing through this constriction causes a
random noise excitation, known as "frication".
Actually, the roof of the mouth is quite a complicated object.
You can feel with your tongue a bony hump or ridge just behind the front
teeth, and it is this that forms a constriction with the tongue for
.ul
s.
In
.ul
sh,
the tongue is flattened close to the roof of the mouth slightly farther back,
in a position rather similar to that for
.ul
ee
but with a narrower
constriction,
while
.ul
f
is produced with the upper teeth and lower lip.
Because they are made near the front of the mouth,
the resonances of the vocal tract have little effect on these fricative
sounds.
.pp
To distinguish them from aspiration and frication, the ordinary speech
sounds (like "aaah") which have their source in larynx vibration are
known technically as "voiced".  Aspirated and fricative sounds are called
"unvoiced".  Thus the three different sound types can be classified as
.LB
.NP
voiced
.NP
unvoiced (fricative)
.NP
unvoiced (aspirated).
.LE
Can any of these three types occur together?
It would seem that voicing and aspiration can not, for the former requires
the larynx to be vibrating regularly, but for the latter it must be
generating turbulent noise.
However, there is a condition known technically as "breathy voice"
which occurs when the vocal cords are slightly apart, still vibrating,
but with a large volume of air passing between to create turbulence.
Voicing can easily occur in conjunction with frication.
Corresponding to
.ul
s,
.ul
sh,
and
.ul
f
we get the
.ul
voiced
fricatives
.ul
z,
the sound in the middle of words like "vision" which I will call
.ul
zh,
and
.ul
v.
A simple illustration of voicing is to say "ffffvvvvffff\ ...".
During the voiced part you can feel the larynx vibrations with a finger
on your Adam's apple, and it can be heard quite clearly if you stop up
your ears.
Technically, there is nothing to prevent frication and aspiration
from occurring together \(em they do, for example, when a voiced fricative
is whispered \(em but the combination is not an important one.
.pp
The complicated acoustic effects of noisy excitations in speech can be
seen in the spectrogram in Figure 2.4 of
"high altitude jets whizz past screaming".
.FC "Figure 2.4"
.rh "The source-filter model of speech production."
We have been talking in terms of a sound source (be it voiced or unvoiced)
exciting the resonances of the oral (and possible the nasal) tract.
This model, which is used extensively in speech analysis and synthesis,
is known as
the source-filter model of speech production.  The reason for its success
is that the effect of the resonances can be modelled as a frequency-selective
filter, operating on an input which is the source excitation.
Thus the frequency spectrum of the source is modified by multiplying it
by the frequency characteristic of the filter (or adding it, if amplitudes
are expressed logarithmically).
This can be seen in Figure 2.5, which shows a source
spectrum and filter characteristic which combine to give the overall
spectrum of Figure 2.2.
.FC "Figure 2.5"
.pp
Although, as mentioned above, the various fricatives are not subjected
to the resonances of the vocal tract to the same extent
that voiced and aspirated
sounds are, they can still be modelled as a noise source followed by
a filter to give them their different sound qualities.
.pp
The source-filter model is an oversimplification of the actual speech
production system.  There is inevitably some coupling between the vocal
tract and the lungs, through the glottis, during the period when
it is open.  This effectively makes the filter characteristics
change during each individual cycle of the excitation.
However, although the effect is of interest to speech researchers,
it is probably not of great significance for practical speech output.
.pp
One very interesting implication of the
source-filter model is that the prosodic features of
pitch and amplitude are largely properties of the source; while
segmental ones are introduced by the filter.  This makes it possible to
separate some aspects of
overall prosody from the actual segmental content of an
utterance, so that, for example, a human utterance can be stored initially
and then spoken by a machine with a variety of different intonations.
.sh "2.2  Classification of speech sounds"
.pp
The need to classify sound segments as a basis for storing generalized acoustic
information and retrieving it was mentioned earlier.  There is a real
difficulty here because speech is by nature continuous and classifications are
discrete.
It is important to remember this difficulty because it is all too easy
to criticize the complex and often confusing attempts of linguists to
tackle the classification task.
.pp
Linguists call a written representation of the
.ul
sounds
of an utterance a "phonetic
transcription" of it.  The same utterance can be transcribed at
different levels of detail:  simple transcriptions are called "broad"
and more specific ones are called "narrow".
Perhaps the most logically satisfying kind of transcription employs units
termed "phonemes".  This is the broadest transcription,
and is sometimes called a
.ul
phonemic
transcription to emphasize that that it is in terms of phonemes.
Unfortunately, the word "phoneme" is often used somewhat loosely.
In its true sense, a phoneme is a
.ul
logical
unit, rather than a physical, acoustic, one,
and is defined in relation to a particular language by reference
to its use in discriminating different words.
Classifications of sounds which are based on their
semantic
role as word-discriminators are called
.ul
phonological
classifications:  we could ensure that there is no ambiguity in the sense
with which we use the term "phoneme" by calling it a phonological unit, and
the phonemic transcription could be called a phonological one.
.rh "Broad phonetic transcription."
A phoneme is an abstract unit representing a set of different sounds.
The issue is confused by the fact that the members of the set actually
sound very similar, if not identical, to the untrained ear \(em precisely because
the difference between them plays no part in distinguishing words from
each other in the particular language concerned.
.pp
Take the words "key" and "caw", for example.  Despite the difference in
spelling, both of them begin with a
.ul
k
sound that belongs (in English)
to the same phoneme set, called
.ul
k.
However, say them two or three times each, concentrating on the position of
the tongue during the
.ul
k.
It is quite different in each case.  For "key", it
is raised, close to the roof of the mouth, in preparation for the
.ul
ee,
whereas in "caw" it is much lower down.
The sound of the
.ul
k
is actually quite different in the two cases.
Yet they belong to the same phoneme, for there is no pair of words which
relies on this difference to distinguish them \(em "key" and "caw" are
obviously distinguished by their vowels, not by the initial
consonant.
You probably cannot hear clearly the difference between the two
.ul
k\c
\&'s,
precisely because they belong to the same phoneme and so the difference
is not important (for English).
.pp
The point is sharpened by considering another language where we make a
distinction \(em and hence can hear the difference \(em between two sounds
that belong, in the language, to the same phoneme.
Japanese does not distinguish
.ul
r
from
.ul
l.
Japanese people
.ul
do not hear
the difference between "lice" and "rice", in the same way that you do
not hear the difference between the two
.ul
k\c
\&'s above.
Cockneys do not hear, except with a special effort, the difference
between "has" and "as", or "haitch" and "aitch", for the Cockney dialect
does not recognize initial
.ul
h\c
\&'s.
.pp
So what is a phoneme?  It is a set of sounds whose members do not
discriminate between any words in the language under consideration.
If you are mathematically minded you could think of it as an equivalence
class of sounds, determined by the relationship
.LB
$sound sub 1$ is related to $sound sub 2$ if $sound sub 1$ and $sound sub 2$
do not discriminate any pair of words in the language.
.LE
The
.ul
p
and
.ul
d
in
"pig" and "dig" belong to different phonemes (in English),
because they discriminate
the two words.
.ul
b,
.ul
f,
and
.ul
j
belong to different phonemes again.
.ul
i
and
.ul
a
in "hid" and "had" belong to different phonemes too.
Proceeding like this, a list of phonemes can be drawn up.
.pp
Such a list is shown in Table 2.1, for British English.
(The layout of the list does have some significance in terms of different
categories of phonemes, which will be explained later.)  In fact,
linguists use an
assortment of English letters, foreign letters, and special
symbols to represent phonemes.  In this book we use one- or two-letter
codes, partly because they are more mnemonic, and partly because
they are more suitable for communication to computers using standard
peripheral devices.
They are
a direct transliteration of linguists' standard International Phonetic
Association symbols.
.RF
.nr x1 3m+1.0i+0.5i+0.5i+0.5i+\w'y'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta 3m +1.0i +0.5i +0.5i +0.5i +0.5i +0.5i
\fIuh\fR	(the)	\fIp\fR	\fIt\fR	\fIk\fR
\fIa\fR	(bud)	\fIb\fR	\fId\fR	\fIg\fR
\fIe\fR	(head)	\fIm\fR	\fIn\fR	\fIng\fR
\fIi\fR	(hid)
\fIo\fR	(hod)	\fIr\fR	\fIw\fR	\fIl\fR	\fIy\fR
\fIu\fR	(hood)
\fIaa\fR	(had)	\fIs\fR	\fIz\fR
\fIee\fR	(heed)	\fIsh\fR	\fIzh\fR
\fIer\fR	(heard)	\fIf\fR	\fIv\fR
\fIuu\fR	(food)	\fIth\fR	\fIdh\fR
\fIar\fR	(hard)	\fIch\fR	\fIj\fR
\fIaw\fR	(hoard)	\fIh\fR
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 2.1 The phonemes of British English"
.pp
We will discuss the sounds which make up each of these phoneme classes
shortly.  First, however, it is worthwhile pointing out some rather
tricky points in the definition of these phonemes.
.rh "Phonological difficulties."
There are snags with phonological classification, as there are
in any area where attempts are made to make completely logical
statements about human activity.
Consider
.ul
h
and the
.ul
ng
in "singing".
(\c
.ul
ng
is certainly not an
.ul
n
sound followed by a
.ul
g
sound, although
it is true that in some English accents "singing" is rendered with
the
.ul
ng
followed by a
.ul
g
at each of its two occurrences.)  No words
end with
.ul
h,
and none begin with
.ul
ng.
(Notice that we are still talking about British English.
In Chinese, the sound
.ul
ng
is a word in its own right, and is a common
family name.
But we must stick with one language for phonological classification.)  Hence
it follows that there is no pair of words which is distinguished
by the difference between
.ul
h
and
.ul
ng.
Technically,
they belong to the same phoneme.  However, technical considerations
in this case must take second place to common sense!
.pp
The
.ul
j
in "jig" is another interesting case.  It can be considered
to belong to a
.ul
j
phoneme, or to be a sequence of two
phonemes,
.ul
d
followed by
.ul
zh
(the sound in "vision").  There is
disagreement on this point in phonetics textbooks, and we do not
have the time (nor, probably, the inclination!) to consider the
pros and cons of this moot point.
I have resolved the matter arbitrarily by writing it as a separate
phoneme.  The
.ul
ch
in "choose" is a similar case
(\c
.ul
t
followed by the
.ul
sh
in "shoes").
.pp
Another difficulty, this time where Table 2.1 does not show how to
distinguish between two sounds which
.ul
do
discriminate words in many people's English, is the
.ul
w
in "witch"
and that in "which".  The latter is conventionally transcribed
as a sequence of two phonemes,
.ul
h w.
.pp
The last few difficulties are all to do with deciding whether a
sound belongs to a single phoneme class, or comprises a sequence
of sounds each of which belongs to a phoneme.
Are the
.ul
j
in "jug", the
.ul
ch
in "chug", and the
.ul
w
in "which",
single phonemes or not?  The definition above of a phoneme
as a "set of sounds whose members do not discriminate any words
in the language" does not help us to answer this question.
As far as this definition is concerned, we could go so far as
to call each and every word of the language an individual phoneme!
It is clear that some acoustic evidence, and quite a lot of judgement,
is being used when phonemes such as those of Table 2.1 are defined.
.pp
So much for the consonants.  This same problem occurs in vowel sounds,
particularly in diphthongs, which are sequences of two vowel-like sounds.
Do the vowels of "main" and "man" belong to different phonemes?
Clearly so, if they are both transcribed as single units, for they
distinguish the two words.
Notwithstanding the fact that they are sequences of separate sounds,
a logically consistent system could be constructed which gave separate,
unitary, symbols to each diphthong.
However, it is usual to employ a compound symbol which indicates explicitly
the character of the two vowel-like sounds involved.
We will transcribe the diphthong of "main" as a sequence of two
vowels,
.ul
e
(as in "head") and
.ul
i
(as in "hid", not "I").
This is done primarily for economy of symbols, choosing the constituent
sounds on the basis of the closest match to existing vowel sounds.
(Note that this again violates purely
.ul
logical
criteria for identifying phonemes.)
.rh "Categories of speech sounds."
A phoneme is defined as a set of sounds whose members to not discriminate
between any words in the language under consideration.
The phonemes themselves can be classified into groups which reflect
similarities between them.
This can be done in many different ways, using various criteria
for classification.  In fact, one branch of linguistic research
is concerned with defining a set of "distinctive
features" such that a phoneme class is uniquely identified by
the values of the features.  Distinctive features are binary,
and include such things as voiced\(emunvoiced, fricative\(emnot\ fricative,
aspirated\(emunaspirated.  We will not be concerned here with such
detailed classifications, but it is as well to know that they exist.
.pp
There is an everyday distinction between vowels and consonants.
A vowel forms the nucleus of every syllable, and one or more consonants
may optionally surround the vowel.
But the distinction sometimes becomes a little ambiguous.
Syllables like
.ul
sh
are commonly uttered and certainly do not
contain a vowel.  Furthermore, when we say "vowel" in everyday
language we usually refer to the
.ul
written
vowels a, e, i, o, and u; there are many more vowel sounds.
A vowel in orthography is different to a vowel as a phoneme.
Is a diphthong a phonetic vowel?  \(em certainly, by the syllable-nucleus
criterion; but it is a little different from ordinary vowels because
it is a changing sound rather than a constant one.
.pp
Table 2.2 shows one classification of the phonemes of Table 2.1, which
will be useful in our later studies of speech synthesis from phonetics.
It shows twelve vowels, including the rather peculiar one
.ul
uh
(which corresponds to the first vowel in the word "above").
This is the sound produced by the vocal tract when it is in a relaxed,
neutral position; and it never occurs in prominent, stressed,
syllables.  The vowels later in the list are almost always longer
than the earlier ones.  In fact, the first six
(\c
.ul
uh, a, e, i, o, u\c
)
are often called "short" vowels, and the last five
(\c
.ul
ee, er, uu, ar, aw\c
)
"long" ones.  The shortness or longness of the one in the middle
(\c
.ul
aa\c
)
is rather ambiguous.
.RF
.nr x0 \w'000unvoiced fricative    'u
.nr x1 \n(x0+\w'[not classified as individual phonemes]'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta \n(x0u
.fi
vowel	\c
.ul
uh  a  e  i  o  u  aa  ee  er  uu  ar  aw
.br
diphthong	[not classified as individual phonemes]
.br
glide (or liquid)	\c
.ul
r  w  l  y
.br
stop
.br
\0\0\0unvoiced stop	\c
.ul
p  t  k
.br
\0\0\0voiced stop	\c
.ul
b  d  g
.br
nasal	\c
.ul
m  n  ng
.br
fricative
.br
\0\0\0unvoiced fricative	\c
.ul
s  sh  f  th
.br
\0\0\0voiced fricative	\c
.ul
z  zh  v  dh
.br
affricate
.br
\0\0\0unvoiced affricate	\c
.ul
ch
.br
\0\0\0voiced affricate	\c
.ul
j
.br
aspirate	\c
.ul
h
.nf
.in 0
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 2.2 Phoneme categories"
.pp
Diphthongs pose no problem here because we have not classified them
as single phonemes.
.pp
The remaining categories are consonants.  The glides are quite
similar to vowels and diphthongs, though; for they are voiced,
continuous sounds.  You can say them and prolong them.
(This is also true of the fricatives.) 
.ul
r
is interesting
because it can be realized acoustically in very different ways.
Some people curl the tip of the tongue
back \(em a so-called retroflex action of the tongue.  Many people
cannot do this, and their
.ul
r\c
\&'s sound like
.ul
w\c
\&'s.
The stage Scotsman's
.ul
r
is a trill where the tip of the tongue vibrates against the roof of the mouth.
.ul
l
is also
slightly unusual, for it is the only English phoneme which is "lateral" \(em
air passes either side of it, in two separate passages.  Welsh
has another lateral sound, a fricative, which is written "ll" as
in "Llandudno".
.pp
The next category is the stops.  These are formed by stopping up
the mouth, so that air pressure builds up behind the lips, and
releasing this pressure suddenly.  The result is a little
explosion (and the stops are often called "plosives"), which
usually creates a very short burst of fricative noise (and, in some cases,
aspiration as well).  They are further subdivided into voiced and
unvoiced stops, depending upon whether voicing starts as soon as
the plosion occurs (sometimes even before) or well after it.
If you put your hand in front of your mouth when saying "pit" you
can easily feel the puff of air that signals the plosion on the
.ul
p,
and probably on the
.ul
t
as well.
.pp
In a sense, nasals are really stops as well (and they are often
called stops), for the oral tract is blocked although the nasal
one is not.  The peculiar fact that the nasal
.ul
ng
never occurs at the beginning of a word (in English) was mentioned
earlier.  Notice that for stops and nasals there is a similarity in the
.ul
vertical
direction of Table 2.2, between
.ul
p,
.ul
b,
and
.ul
m;
.ul
t,
.ul
d,
and
.ul
n;
and
.ul
k,
.ul
g,
and
.ul
ng.
.ul
p
is an unvoiced version of
.ul
b
(try saying them),
and
.ul
m
is a nasalized version (for
.ul
b
is what you get when you
have a cold and try to say
.ul
m\c
).
These three sounds are all made
at the front of the mouth, while
.ul
t,
.ul
d,
and
.ul
n,
which bear the
same resemblance to each other, are made in the middle; and
.ul
k,
.ul
g,
and
.ul
ng
are made at the back.  This introduces another
possible classification, according to
.ul
place of articulation.
.pp
The unvoiced fricatives are quite straightforward, except perhaps
for
.ul
th,
which is the sound at the beginning of "thigh".
They are paired with the voiced fricatives on the basis of place
of articulation.  The voiced version of
.ul
th
is the
.ul
dh
at
the beginning of "thy".
.ul
zh
is a fairly rare phoneme, which
is heard in the middle of "vision".  Affricates are similar to
fricatives but begin with a stopped posture, and we mentioned earlier
the controversy as to whether they should be considered to be
single phonemes, or
sequences of stop phonemes and fricatives.
Finally comes the lonely aspirate,
.ul
h.
Aspiration does occur
elsewhere in speech, during the plosive burst of unvoiced stops.
.rh "Narrow phonetic transcription."
The phonological classification outlined above is based upon a clear
rationale for distinguishing between sounds according to how
they affect meaning \(em although the rationale does become
somewhat muddied in difficult cases.
Narrower transcriptions are not so systematic.
They use units called
.ul
allophones,
which are defined by reference to physical, acoustic, criteria rather
than purely logical ones.
("Phone" is a more old-fashioned term for the same thing,
and the misused word "phoneme" is often employed where allophone is
meant, that is, as a physical rather than a logical
unit.)  Each phoneme has several allophones,
more or less depending on how narrow or broad the transcription is,
and the allophones are different acoustic realizations of the same
logical unit.
For example, the
.ul
k\c
\&'s in "key" and "caw" may be considered as different
allophones (in a slightly narrow transcription).
Although we will not use symbols for allophones here,
they are often indicated by diacritical marks in a text
which modify the basic phoneme classes.
For example, a tilde (~) over a vowel means that it is nasalized, while a small
circle underneath a consonant means that it is devoiced.
.pp
Allophonic variation in speech is governed by a mechanism called
.ul
coarticulation,
where a sound is affected by those that come either side of it.
"Key"\-"caw" is a clear example of this, where the tongue
position in the
.ul
k
anticipates that of the following vowel \(em high
in the first case, low in the second.
Most allophonic variation in English is anticipatory, in that the sound
is influenced by the following articulation rather than by
preceding ones.
.pp
Nasalization is a feature which applies to vowels in English through
anticipatory coarticulation.
In many languages (for example, French) it is a
.ul
distinctive
feature for vowels in that it serves to distinguish one vowel phoneme class
from another.
That this is not so in English sometimes tempts us to assume,
incorrectly, that nasalization does not occur in vowels.
It does, typically when the vowel is followed by a nasal consonant, and it is
important for synthesis that nasalized vowel allophones are recognized and
treated accordingly.
.pp
Coarticulation can be predicted by phonological rules, which show
how a phonemic sequence will be realized by allophones.
Such rules have been studied extensively by linguists.
.pp
The reason for coarticulation, and for the existence of allophones,
lies in the physical constraints imposed by the motion
of the articulatory organs \(em particularly their acceleration and deceleration.
An immensely crude model is that the brain decides what phonemes to
say (for it is concerned with semantic things, and the definition
of a phoneme is a semantic one).
It then takes this sequence and translates it into neural commands
which actually move the articulators into target positions.
However, other commands may be issued, and executed, before these targets
are reached, and this accounts for coarticulation effects.
Phonological rules for converting a phonemic sequence to an
allophonic one are a sort of discrete model of the process.
Particularly for work involving computers, it is possible that this
rule-based approach will be overtaken by potentially more accurate
methods which attempt to model the continuous articulatory phenomena
directly.
.sh "2.3  Prosody"
.pp
The phonetic classification introduced above divides speech into
segments and classifies these into phonemes or allophones.
Riding on top of this stream of segments are other, more global,
attributes that dictate the overall prosody of the utterance.
Prosody is defined by the Oxford English Dictionary as the
"science of versification, laws of metre,"
which emphasizes the aspects of stress and rhythm that are central
to classical verse.
There are, however, many other features which are more or less
global.
These are collectively called prosodic or, equivalently, suprasegmental,
features, for they lie above the level of phoneme or syllable segments.
.pp
Prosodic features can be split into two basic categories:  features
of voice quality and features of voice dynamics.
Variations in voice quality, which are sometimes called
"paralinguistic" phenomena, are accounted for by anatomical
differences and long-term muscular idiosyncrasies (like a sore
throat), and have little part to play in the kind of applications
for speech output that have been sketched in Chapter 1.
Variations in voice dynamics occur in three dimensions:  pitch
or fundamental frequency of the voice, time, and amplitude.
Within the first, the pattern of pitch variation, or
.ul
intonation,
can be distinguished from the overall range within which that variation
occurs.
The time dimension encompasses the rhythm of the speech, pauses, and the
overall tempo \(em whether it is uttered quickly or slowly.
The third dimension, amplitude, is of relatively minor importance.
Intonation and rhythm work together to produce an effect commonly called
"stress", and we will elaborate further on the nature of stress and discuss
algorithms for synthesizing intonation and rhythm in Chapter 8.
.pp
These features have a very important role to play in communicating meaning.
They are not fancy, optional components.
It is their neglect which is largely responsible for the layman's
stereotype of computer speech,
a caricature of living speech \(em abrupt, arhythmic, and in a grating
monotone \(em
which was well characterized by Isaac Asimov when he wrote of speaking
"all in capital letters".
.pp
Timing has a syntactic function in that it sometimes helps to
distinguish nouns from
verbs
(\c
.ul
ex\c
tract versus ex\c
.ul
tract\c
).
and adjectives from verbs (app\c
.ul
rox\c
imate versus approxi\c
.ul
mate\c
) \(em although segmental aspects play a part here too, for the vowel
qualities differ in each pair of words.
Nevertheless, if you make a mistake when assigning stress to words
like these in conversation you are very likely to be queried as
to what you actually said.
.pp
Intonation has a big effect on meaning too.
Pitch often \(em but by no means always \(em rises on a question,
the extent and abruptness of the rise depending on features like whether
a genuine information-bearing reply or merely confirmation is expected.
A distinctive pitch pattern accompanies the introduction of a new topic.
In conjunction with rhythm, intonation can be used to bring out contrasts
as in
.LB
.NI
"He didn't have a
.ul
red
car, he had a
.ul
black
one."
.LE
In general, the intonation patterns used by a reader depend not only on
the text itself, but on his interpretation of it, and also on his
expectation of the listener's interpretation of it.
For example:
.LB
.NI
"He had a
.ul
red
car" (I think you thought it was black),
.NI
"He had a red
.ul
bi\c
cycle" (I think you thought it was a car).
.LE
.pp
In natural speech, prosodic features are significantly influenced by
whether the utterance is generated spontaneously or read aloud.
The variations in spontaneous speech are enormous.
There are all sorts of emotions which are plainly audible in
everyday speech:  sarcasm, excitement, rudeness, disagreement,
sadness, fright, love.
Variations in voice quality certainly play a part here.
Even with "ordinary" cooperative friendly conversation, the need to find
words and somehow fit them into an overall utterance produces great
diversity of prosodic structures.
Applications for speech output from computers do not, however, call for
spontaneous conversation, but for a controlled delivery which is
like that when reading aloud.
Here, the speaker is articulating utterances which have been set out for
him, reducing his cognitive load to one of understanding and interpreting
the text rather than generating it.
Unfortunately for us, linguists are (quite rightly)
primarily interested in living,
spontaneous speech rather than pre-prepared readings.
.pp
Nevertheless, the richness of prosody in speech even when reading from
a book should not be underestimated.
Read aloud to an audience and listen to the contrasts in voice dynamics
deliberately introduced for variety's sake.
If stories are to be read there is even a case for controlling voice
.ul
quality
to cope with quotations and affective imitations.
.pp
We saw earlier that the source-filter model is particularly
helpful in distinguishing prosodic features, which are largely
properties of the source, from segmental ones, which belong to
the filter.
Pitch and amplitude are primarily source properties.
Rhythm and speed of speaking are not, but neither are they filter
properties, for they belong to the source-filter system as a whole
and not specifically to either part of it.
The difficult notion of stress is, from an acoustic point of view,
a combination of pitch, rhythm, and amplitude.
Even some features of voice quality can be attributed to the source
(like laryngitis), although others \(em cleft palate, badly-fitting
dentures \(em affect segmental features as well.
.sh "2.4  Further reading"
.pp
This chapter has been no more than a cursory introduction to some
of the difficult problems of linguistics and phonetics.
Here are some readable books which discuss these problems further.
.LB "nn"
.\"Abercrombie-1967-1
.ds [F 1
.]-
.ds [A Abercrombie, D.
.ds [D 1967
.ds [T Elements of general phonetics
.ds [I Edinburgh Univ Press
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is an excellent book which covers all of the areas of this
chapter, in much more detail than has been possible here.
.in-2n
.\"Brown-1980-2
.ds [F 2
.]-
.ds [A Brown, Gill
.as [A ", Currie, K.L.
.as [A ", and Kenworthy, J.
.ds [D 1980
.ds [T Questions of intonation
.ds [I Croom Helm
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
An intensive study of the prosodics of colloquial, living speech
is presented, with particular reference to intonation.  Although
not particularly relevant to speech output from computers,
this book gives great insight into how conversational speech
differs from reading aloud.
.in-2n
.\"Fry-1979-1
.ds [F 1
.]-
.ds [A Fry, D.B.
.ds [D 1979
.ds [T The physics of speech
.ds [I Cambridge University Press
.ds [C Cambridge, England
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is a simple and readable account of speech science, with a good
and completely non-mathematical introduction to frequency analysis.
.in-2n
.\"Ladefoged-1975-4
.ds [F 4
.]-
.ds [A Ladefoged, P.
.ds [D 1975
.ds [T A course in phonetics
.ds [I Harcourt Brace and Johanovich
.ds [C New York
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Usually books entitled "A course on ..." are dreadfully dull, but
this is a wonderful exception.  An exciting, readable, almost racy
introduction to phonetics, full of little experiments you can try
yourself.
.in-2n
.\"Lehiste-1970-5
.ds [F 5
.]-
.ds [A Lehiste, I.
.ds [D 1970
.ds [T Suprasegmentals
.ds [I MIT Press
.ds [C Cambridge, Massachusetts
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This fairly comprehensive study of the prosodics of speech
complements Ladefoged's book, which is mainly concerned with segmental
phonetics.
.in-2n
.\"O'Connor-1973-1
.ds [F 1
.]-
.ds [A O'Connor, J.D.
.ds [D 1973
.ds [T Phonetics
.ds [I Penguin
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is another introductory book on phonetics.
It is packed with information on all aspects of the subject.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "3  SPEECH STORAGE"
.ds RT "Speech storage
.ds CX "Principles of computer speech
.pp
The most familiar device that produces speech output is the ordinary tape
recorder, which stores information in analogue form on magnetic tape.
However, this is unsuitable for speech output from computers.
One reason is that it is difficult to access different utterances quickly.
Although random-access tape recorders do exist, they are expensive and
subject to mechanical breakdown because of the stresses associated with
frequent starting and stopping.
.pp
Storing speech on a rotating drum instead of
tape offers the possibility of access to any track within one revolution time.
For example, the IBM 7770 Audio Response Unit employs drums rotating twice
a second which are able to store up to 32 500-msec words.  These can be accessed
randomly, within half a second at most.
Although one can
arrange to store longer words by allowing overflow on to an adjacent track at
the end of the rotation period, the discrete time-slots provided by this
system make it virtually impossible for it to generate connected utterances
by assembling appropriate words from the store.
.pp
The Cognitronics Speechmaker has a similar structure, but with
the analogue speech waveform recorded on photographic film.
Storing audio waveforms optically is not an unusual technique, for this is how
soundtracks are recorded on ordinary movie films.  The original version of
the "speaking clock" of the British Post Office used optical storage in
concentric tracks on flat glass discs.
It is described by Speight and Gill (1937),
who include a fascinating account of how the utterances are synchronized.
.[
Speight Gill 1937
.]
A 4\ Hz signal from a pendulum clock was used to supply current to an electric
motor, which drove a shaft equipped with cams and gears that rotated
the glass discs containing utterances for seconds, minutes, and hours
at appropriate speeds!
.pp
A second reason for avoiding analogue storage is price.  It is difficult to see how a random-access
tape recorder could be incorporated into a talking pocket calculator or
child's toy without considerably inflating the cost.
Solid-state electronics is much cheaper than mechanics.
.pp
But the best reason is that, in many of the applications we have discussed,
it is necessary to form utterances by concatenating separately-recorded
parts.  It is totally infeasible, for example, to store each and every
possible telephone number as an individual recording!  And
utterances that are formed by concatenating individual words which were
recorded in isolation, or in a different context, do not sound completely
natural.  For example, in an early experiment, Stowe and Hampton (1961) recorded
individual words on acoustic tape, spliced the tape with the words in a different
order to make sentences, and played the result to subjects who were scored on
the number of key words which they identified correctly.
.[
Stowe Hampton 1961
.]
The overall conclusion was that while embedding a word in normally-spoken sentences
.ul
increases
the probability of recognition (because the extra context gives clues about the
word), embedding a word in a constructed sentence, where intonation and rhythm
are not properly rendered,
.ul
decreases
the probability of recognition.  When the speech was uttered slowly,
however, a considerable improvement was noticed, indicating that if the
listener has more processing time he can overcome the lack of proper intonation
and rhythm.
.pp
Nevertheless, many present-day voice response systems
.ul
do
store what amounts to a direct recording of the acoustic wave.
However, the storage medium is digital rather than analogue.
This means that standard computer storage devices can be used, providing
rapid access to any segment of the speech at relatively low cost \(em for
the economics of mass-production ensures a low price for random-access
digital devices compared with random-access analogue ones.
Furthermore, it reduces the amount of special equipment needed for speech
output.  One can buy very cheap speech input/output interfaces for home computers
which connect to standard hobby buses.
Another advantage of digital over analogue recording is that
integrated circuit read-only memories (ROMs)
can be used for hand-held devices which need small quantities of speech.
Hence this chapter begins by showing how waveforms are stored digitally,
and then describes some techniques for reducing the data needed for a given
utterance.
.sh "3.1  Storing waveforms digitally"
.pp
When an analogue signal is converted to digital form, it is made discrete
both in time and in amplitude.  Discretization in time is the operation of
.ul
sampling,
whilst in amplitude it is
.ul
quantizing.
It is worth pointing out that the transmission of analogue information by
digital means is called "PCM" (standing for "pulse code modulation") in
telecommunications jargon.
Much of the theory of digital signal processing investigates signals which
are sampled but not quantized (or quantized into sufficiently many levels to
avoid inaccuracies).  The operation of quantization, being non-linear,
is not very amenable to theoretical analysis.  Quantization introduces issues
such as accumulation of round-off noise in arithmetic operations,
which, although they are very important in practical implementations, can only
be treated theoretically under certain somewhat unrealistic assumptions
(in particular, independence of the quantization error from sample to sample).
.rh "Sampling."
A fundamental theorem of telecommunications states that a signal can only be
reconstructed accurately from a sampled version if it does not contain
components whose frequency is greater than half the frequency at which the
sampling takes place.  Figure 3.1(a) shows how a component of slightly greater
than half the sampling frequency can masquerade, as far as an observer with
access only to the sampled data can tell, as a component at slightly less
than half the sampling frequency.
.FC "Figure 3.1"
Call the sampling interval $T$ seconds, so that the
sampling frequency is $1/T$\ Hz.
Then components at $1/2T+f$, $3/2T-f$, $3/2T+f$ and so on all masquerade
as a component at $1/2T-f$.  Similarly, components at frequencies just under
the sampling frequency masquerade as very low-frequency components, as shown
in Figure 3.1(b).  This phenomenon is often called "aliasing".
.pp
Thus the continuous, infinite, frequency axis for the unsampled signal, where
two components at different frequencies can always be distinguished, maps
into a repetitive frequency axis when the signal is sampled.  As depicted
in Figure 3.2, the frequency
interval $[1/T,~ 2/T)$ \u\(dg\d
.FN 3
.sp
\u\(dg\dIntervals are specified in brackets, with a square bracket representing
a closed end of the interval and a round one representing an open one.
Thus the interval $[1/T,~ 2/T)$ specifies the range $1/T ~ <= ~ frequency
~ < ~ 2/T$.
.EF
is mapped back into the band $[0,~ 1/T)$, as are the
intervals $[2/T,~ 3/T)$,  $[3/T,~ 4/T)$, and so on.
.FC "Figure 3.2"
Furthermore, the interval $[1/2T,~ 1/T)$ between half the sampling frequency and the sampling
frequency, is mapped back into the interval
below half the sampling frequency; but this time the mapping is backwards,
with frequencies at just under $1/T$ being mapped to frequencies slightly greater
than zero, and frequencies just over $1/2T$ being mapped to ones
just under $1/2T$.
The best way to represent a repeating frequency axis like this is as a circle.
Figure 3.3 shows how the linear frequency axis for continuous systems maps
on to a circular axis for sampled systems.
.FC "Figure 3.3"
For present purposes it is
easiest to imagine the bottom half of the circle as being reflected into
the top half, so that traversing the upper semicircle in the anticlockwise direction
corresponds to frequencies increasing from 0 to $1/2T$ (half the sample frequency),
and returning along the lower semicircle is actually the same as coming
back round the upper one, and corresponds to frequencies from $1/2T$ to $1/T$
being mapped into the range $1/2T$ to 0.
.pp
As far as speech is concerned, then, we must ensure that before sampling a
signal no significant components at greater than half the sample frequency
are present.  Furthermore, the sampled signal will only contain information
about frequency components less than this, so the sample frequency must be
chosen as twice the highest frequency of interest.
For example, consider telephone-quality speech.
Telephones provide a familiar standard of speech quality which,
although it can only be an approximate "standard",
will be much used throughout this book.
The telephone network
aims to transmit only frequencies lower than 3.4\ kHz.  We saw in the
previous chapter that this region will contain the information-bearing formants,
and some \(em but not all \(em of the fricative and aspiration energy.
Actually, transmitting speech through the telephone system degrades its
quality very significantly, probably more than you realize since everyone is
so accustomed to telephone speech.  Try the dial-a-disc service and compare
it with high-fidelity music for a striking example of the kind of degradation
suffered.
.pp
For telephone speech, the sampling frequency must be chosen to be
at least 6.8\ kHz.
Since speech contains significant amounts of energy above 3.4\ kHz, it should be
filtered before sampling to remove this; otherwise the higher components
would be mapped back into the baseband and distort the low-frequency information.
Because it is difficult to make filters that cut off very sharply, the
sampling frequency is chosen rather greater than twice the highest frequency of
interest.  For example, the digital telephone network samples at 8\ kHz.
The pre-sampling filter should have a cutoff frequency of 4\ kHz; aim for
negligible distortion below 3.4\ kHz; and transmit negligible components
above 4.6\ kHz \(em for these are reflected back into the band of interest,
namely 0 to 3.4\ kHz.  Figure 3.4 shows a block diagram for the input hardware.
.FC "Figure 3.4"
.rh "Quantization."
Before considering specifications for the pre-sampling filter, let us turn
from discretization in time to discretization in amplitude, that is,
quantization.
This is performed by an A/D converter (analogue-to-digital), which takes as input
a constant analogue voltage (produced by the sampler) and generates a
corresponding binary value as output.  The simplest correspondence is
.ul
uniform
quantization, where the amplitude range is split into equal regions by points
termed "quantization levels", and the output is a binary representation of
the nearest quantization level to the input voltage.
Typically, 11-bit conversion is used for speech, giving 2048 quantization
levels, and the signal is adjusted to have zero mean so that half the
levels correspond to negative input voltages and the other half to positive
ones.
.pp
It is, at first sight, surprising that as many as 11 bits are needed for
adequate representation of speech signals.  Research on the digital telephone
network, for example, has concluded that a signal-to-noise ratio of
some 26\-27\ dB is enough to avoid undue harshness of quality, loss
of intelligibility, and listener fatigue for speech at a comfortable
level in an otherwise reasonably good channel.
Rabiner and Schafer (1978) suggest that about 36\ dB signal-to-noise ratio
would "most likely provide adequate quality in a communications system".
.[
Rabiner Schafer 1978 Digital processing of speech signals
.]
But 11-bit quantization seems to give a very much better signal-to-noise
ratio than these figures.  To estimate its magnitude, note that for N-bit quantization
the error for each sample will lie between
.LB
$
- ~ 1 over 2 ~. 2 sup -N$    and    $+ ~ 1 over 2 ~. 2 sup -N .
$
.LE
Assuming that it is uniformly distributed in this range \(em an assumption
which is likely to be justified if the number of levels is sufficiently
large \(em leads to a mean-squared error of
.LB
.EQ
integral from {-2 sup -N-1} to {2 sup -N-1} ~e sup 2 p(e) de,
.EN
.LE
where $p(e)$, the probability density function of the error $e$, is a constant
which satisfies the usual probability normalization constraint, namely
.LB
.EQ
integral from {-2 sup -N-1} to {2 sup -N-1} ~ p(e) de ~~=~ 1.
.EN
.LE
Hence $p(e)=2 sup N $, and so the mean-squared error is  $2 sup -2N /12$.
This is  $10 ~ log sub 10 (2 sup -2N /12)$\ dB, or around \-77\ dB for 11-bit
quantization.
.pp
This noise level is relative to the maximum amplitude range of the conversion.
A maximum-amplitude sine wave has a power of \-9\ dB relative to the same
reference, giving a signal-to-noise ratio of some 68\ dB.  This is far in excess
of that needed for telephone-quality speech.  However, look at the very peaky
nature of the typical speech waveform given in Figure 3.5.
.FC "Figure 3.5"
If clipping is to be avoided, the maximum amplitude level of the A/D converter
must be set at a value which makes the power of the speech signal very much
less than a maximum-amplitude sine wave.  Furthermore, different people
speak at very different volumes, and the overall level fluctuates constantly
with just one speaker.  Experience shows that while 8- or 9-bit quantization
may provide sufficient signal-to-noise ratio to preserve telephone-quality
speech if the overall speaker levels are carefully controlled, about 11 bits
are generally required to provide high-quality representation of speech with
a uniform quantization.  With 11 bits, a sine wave whose amplitude is only 1/32
of the full-scale value would be digitized with a signal-to-noise ratio
of around 36\ dB, the most pessimistic figure quoted above for adequate quality.
Even then it is useful if the speaker is provided
with an indication of the amplitude of his speech:  a traffic-light
indicator with red signifying clipping overload, orange a suitable level,
and green too low a value, is often convenient for this.
.rh "Logarithmic quantization."
For the purposes of speech
.ul
processing,
it is essential to have the signal quantized uniformly.  This is because
all of the theory applies to linear systems, and nonlinearities introduce
complexities which are not amenable to analysis.
Uniform quantization, although a nonlinear operation, is linear in the
limiting case as the number of levels becomes large, and for most purposes
its effect can be modelled by assuming that the quantized signal is obtained
from the original analogue one by the addition of a small amount of
uniformly-distributed quantizing noise, as in fact was done above.
Usually the quantization noise is disregarded in subsequent analysis.
.pp
However, the peakiness of the speech signal illustrated in Figure 3.5 leads
one to suspect that a non-linear representation, for example a logarithmic one,
could provide a better signal-to-noise ratio over a wider range of input
amplitudes, and hence be more useful than linear quantization \(em at least
for speech storage (and transmission).
And indeed this is the case.  Linear quantization has the unfortunate effect
that the absolute noise level is independent of the signal level, so that an excessive
number of bits must be used if a reasonable ratio is to be achieved for peaky
signals.  It can be shown that a logarithmic representation like
.LB
.EQ
y ~ = ~ 1 ~ + ~ k ~ log ~ x,
.EN
.LE
where $x$ is the original signal and $y$ is the value which is to be quantized,
gives a
signal-to-noise
.ul
ratio
which is independent of the input signal level.
This relationship cannot be realized physically, for it is undefined when the signal
is negative and diverges when it is zero.
However, realizable approximations to it can be made which retain the advantages
of constant signal-to-noise ratio within a useful range of signal amplitudes.
Figure 3.6 shows the logarithmic relation with one widely-used approximation to it,
called the A-law.
.FC "Figure 3.6"
The idea of non-linearly quantizing a signal to achieve adequate signal-to-noise
ratios for a wide variety of amplitudes is called "companding", a contraction
of "compressing-expanding".  The original signal can be retrieved from
its A-law compression by antilogarithmic expansion.
.pp
Figure 3.6 also
shows one common coding scheme which is a piecewise linear approximation
to the A-law.  This provides an 8-bit code, and gives the equivalent
of 12-bit linear quantization for small signal levels.  It approximates
the A-law in 16 linear segments, 8 for positive and 8 for negative
inputs.
Consider the positive part of the curve.  The first two segments, which
are actually collinear, correspond exactly to 12-bit linear conversion.
Thus the output codes 0 to 31 correspond to inputs from 0 to 31/2048,
in equal steps.  (Remember that both positive and negative signals
must be converted, so a 12-bit linear converter will allocate 2048 levels
for positive signals and 2048 for negative ones.)  The next
segment provides 11-bit linear quantization,
output codes 32 to 47 corresponding to inputs from 16/1024 to 31/1024.
Similarly, the next segment corresponds to 10-bit quantization, covering
inputs from 16/512 to 31/512.  And so on, the last section giving 6-bit
quantization of inputs from 16/32 to 31/32, the full-scale positive value.
Negative inputs are converted similarly.
For signal levels of less than 32/2048, that is, $2 sup -8$, this implementation
of the A-law provides full 12-bit precision.
As the signal level increases, the precision decreases gradually to 6 bits
at maximum amplitudes.
.pp
Logarithmic encoding provides what is in effect a floating-point representation
of the input.  The conventional floating-point format, however, is not used
because many different codes can represent the same value.  For example, with
a 4-bit exponent preceding a 4-bit mantissa, the words 0000:1000,
0001:0100, 0010:0010, and 0011:0001 represent the numbers
$0.1 ~ times ~ 2 sup 0$,  $0.01 ~ times ~ 2 sup 1
$,  $0.001 ~ times ~ 2 sup 2$,  \c
and  $0.0001 ~ times ~ 2 sup 3$  respectively,
which are the same.  (Some floating-point conventions assume that an unwritten
"1" bit precedes the mantissa, except when the whole word is zero; but this
gives decreased resolution around zero \(em which is exactly where we want the
resolution to be greatest.)  Table 3.1 shows the 8-bit A-law codes,
.RF
.in+0.7i
.ta 1.6i +\w'bits 1-3   'u
8-bit codeword:	bit 0	sign bit
	bits 1-3	3-bit exponent
	bits 4-7	4-bit mantissa
.sp2
.ta 1.6i 3.5i
.ul
 codeword	   interpretation
.sp
0000 0000	\h'\w'\0-\0  +  'u'$.0000 ~ times ~ 2 sup -7$
\0\0\0...	\0\0\0\0...
0000 1111	\h'\w'\0-\0  +  'u'$.1111 ~ times ~ 2 sup -7$
0001 0000	$2 sup -7 ~~ + ~~ .0000 ~ times ~ 2 sup -7$
\0\0\0...	\0\0\0\0...
0001 1111	$2 sup -7 ~~ + ~~ .1111 ~ times ~ 2 sup -7$
0010 0000	$2 sup -6 ~~ + ~~ .0000 ~ times ~ 2 sup -6$
\0\0\0...	\0\0\0\0...
0010 1111	$2 sup -6 ~~ + ~~ .1111 ~ times ~ 2 sup -6$
0011 0000	$2 sup -5 ~~ + ~~ .0000 ~ times ~ 2 sup -5$
\0\0\0...	\0\0\0\0...
0011 1111	$2 sup -5 ~~ + ~~ .1111 ~ times ~ 2 sup -5$
0100 0000	$2 sup -4 ~~ + ~~ .0000 ~ times ~ 2 sup -4$
\0\0\0...	\0\0\0\0...
0100 1111	$2 sup -4 ~~ + ~~ .1111 ~ times ~ 2 sup -4$
0101 0000	$2 sup -3 ~~ + ~~ .0000 ~ times ~ 2 sup -3$
\0\0\0...	\0\0\0\0...
0101 1111	$2 sup -3 ~~ + ~~ .1111 ~ times ~ 2 sup -3$
0110 0000	$2 sup -2 ~~ + ~~ .0000 ~ times ~ 2 sup -2$
\0\0\0...	\0\0\0\0...
0110 1111	$2 sup -2 ~~ + ~~ .1111 ~ times ~ 2 sup -2$
0111 0000	$2 sup -1 ~~ + ~~ .0000 ~ times ~ 2 sup -1$
\0\0\0...	\0\0\0\0...
0111 1111	$2 sup -1 ~~ + ~~ .1111 ~ times ~ 2 sup -1$

1000 0000	\h'\w'\0-\0  'u'$- ~~ .0000 ~ times ~ 2 sup -7$	negative numbers treated as
\0\0\0...	\0\0\0\0...	above, with a sign bit of 1
1111 1111	\h'-\w'\- 'u'\- $2 sup -1 ~~ - ~~ .1111 ~ times ~ 2 sup -1$
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 3.1  8-bit A-law codes, with their floating-point equivalents"
according
to the piecewise linear approximation of Figure 3.6, written in a notation which
suggests floating point.  Each linear segment has a different exponent except
the first two segments, which as explained above are collinear.
.pp
Logarithmic encoders and decoders are available from many semiconductor
manufacturers as single-chip devices
called "codecs" (for "coder/decoder").  Intended for use on digital communication
links, these generally provide a serial output bit-stream, which
should be converted to parallel by a shift register if the data is intended
for a computer.
Because of the potentially vast market for codecs in telecommunications,
they are made in great quantities and are consequently very cheap.
Estimates of the speech quality necessary for telephone applications indicate
that somewhat less than this accuracy is needed \(em 7-bit logarithmic encoding
was used in early digital communications links, and it may be that even 6 bits
are adequate.  However, during the transition period when digital
networks must coexist with the present analogue one, it is anticipated that
a particular telephone call may have to pass through several links, some
using analogue technology and some being digital.  The possibility of
several successive encodings and decodings has led telecommunications
engineers to standardize on 8-bit representations, leaving some margin
before additional degradation of signal quality becomes unduly distracting.
.pp
Unfortunately, world telecommunications authorities cannot agree on a single
standard for logarithmic encoding.  The A-law, which we have described,
is the European standard, but there is another system, called
the $mu$-law, which is used universally in North America.  It also is available
in single-chip form with an 8-bit code.  It has very similar
quantization error characteristics to the A-law, and would be indistinguishable
from it on the scale of Figure 3.6.
.rh "The pre-sampling filter."
Now that we have some idea of the accuracy requirements for quantization,
let us discuss quantitative specifications for the pre-sampling filter.
Figure 3.7 sketches the characteristics of this filter.
.FC "Figure 3.7"
Assume a
sampling frequency of 8\ kHz and a range of interest from 0 to 3.4\ kHz.
Although all components at frequencies above 4\ kHz will fold back into
the 0\ \-\ 4\ kHz baseband, those below 4.6\ kHz fold back above 3.4\ kHz and are
therefore outside the range of interest.  This gives a "guard band" between
3.4 and 4.6\ kHz which separates the passband from the stopband.  The filter
should transmit negligible components in the stopband above 4.6\ kHz.
To reduce the harmonic distortion caused by aliasing to the same level
as the quantization noise in 11-bit linear conversion, the stopband
attenuation should be around \-68\ dB (the signal-to-noise ratio for a full-scale
sine wave).  Passband ripple is not so critical,
for two reasons.  Whilst the presence of aliased components means that
information has been lost about the frequency components within the range of
interest, passband ripple does not actually cause a loss of information but
only a distortion, and could, if necessary, be compensated by a suitable
filter acting on the digitized waveform.  Secondly, distortion of the
passband spectrum is not nearly so audible as the frequency images caused
by aliasing.  Hence one usually aims for a passband ripple of around 0.5\ dB.
.pp
The pass and stopband targets we have mentioned above can be achieved with
a 9'th order elliptic filter.  While such a filter is often used in
high-quality signal-processing systems, for telephone-quality speech
much less stringent specifications seem to be sufficient.  Figure 3.8, for
example, shows a template which has been recommended by telecommunications
authorities.
.FC "Figure 3.8"
A 5'th order elliptic filter can easily meet this specification.
Such filters, implemented by switched-capacitor means, are available in
single-chip form.  Integrated CCD (charge-coupled device)
filters which meet the same specification
are also marketed.  Indeed, some codecs provide input filtering on the same
chip as the A/D converter.
.pp
Instead of implementing a filter by analogue means to meet the aliasing
specifications, digital filtering can be used.  A high sample-rate A/D
converter, operating at, say, 32\ kHz, and preceded by a very simple low-pass
pre-sampling filter, is followed by a digital filter which meets the
desired specification, and its output is subsampled to provide an 8\ kHz sample
rate.  While such implementations may be economic where a multichannel digitizing
capability is required, as in local telephone exchanges where the subscriber
connection is an analogue one, they are unlikely to prove cost-effective for
a single channel.
.rh "Reconstructing the analogue waveform."
Having digitized and stored a signal, it needs to be passed though a D/A
converter (digital-to-analogue) and low-pass filter when replayed.
D/A converters are cheaper than A/D converters, and the characteristics of the
low-pass filter for output can be the same as those for input.
However, the desampling operation introduces an additional distortion, which
has an effect on the component at frequency $f$ of
.LB
.EQ
{ sin ( pi f/f sub s )} over { pi f/f sub s } ~ ,
.EN
.LE
where $f sub s$ is the sampling frequency.  An "aperture correction" filter is
needed to compensate for this, although many systems simply do without it.
Such a filter is sometimes incorporated into the codec chip.
.rh "Summary."
For telephone-quality speech, existing codec chips,
coupled if necessary with integrated pre-sampling filters, can
be used, at a remarkably low cost.
For higher-quality speech storage the analogue interface can become quite complex.
A comprehensive study of the problems as they relate to digitization of audio,
which demands much greater fidelity than speech, has been made by Blesser (1978).
.[
Blesser 1978
.]
He notes the following sources of error (amongst others):
.LB
.NP
slew-rate distortion in the pre-sampling filter for signals at the upper end
of the audio band;
.NP
insufficient filtering of high-frequency input signals;
.NP
noise generated by the sample-and-hold amplifier or pre-sampling filter;
.NP
acquisition errors because of the finite settling time of the sample-and-hold
circuit;
.NP
insufficient settling time in the A/D conversion;
.NP
errors in the quantization levels of the A/D and D/A converters;
.NP
noise in the converters;
.NP
jitter on the clock used for timing input or output samples;
.NP
aperture distortion in the output sampler;
.NP
noise in the output filter as a result of limited dynamic range of the
integrated circuits;
.NP
power-supply noise injection or ground coupling;
.NP
changes in characteristics as a result of temperature or ageing.
.LE
Care must be taken with the analogue interface to ensure that the precision
implied by the resolution of the A/D and D/A converters is not compromised
by inadequate analogue circuitry.  It is especially important to eliminate
high-frequency noise caused by fast edges on nearby computer buses.
.sh "3.2  Coding in the time domain"
.pp
There are several methods of coding the time waveform of a speech signal to
reduce the data rate for a given signal-to-noise ratio, or alternatively to
reduce the signal-to-noise ratio for a given data rate.  They almost all require
more processing, both at the encoding (for storage) and decoding (for
regeneration) ends of the digitization process.  They are sometimes used to
economize on memory in systems using stored speech,
for example the System\ X telephone exchange and the travel consultant described
in Chapter 1, and so will be described here.  However, it is to be expected
that simple time-domain coding techniques will be superseded by the more complex
linear predictive method, which is covered in Chapter 6, because this
can give a much more substantial reduction in the data rate for only a small
degradation in speech quality.  Hence the aim of this section is to introduce
the ideas in a qualitative way:  theoretical development and summaries of
results of listening tests can be found elsewhere (eg Rabiner and Schafer, 1978).
.[
Rabiner Schafer 1978 Digital processing of speech signals
.]
The methods we will examine are summarized in Table 3.2.
.RF
.nr x0 \w'linear PCM      'u
.nr x1 \n(x0+\w'    adaptive quantization, or adaptive prediction,'u
.nr x2 (\n(.l-\n(x1)/2
.in \n(x2u
.ta \n(x0u
\l'\n(x1u\(ul'
.sp
linear PCM	linearly-quantized pulse code modulation
.sp
log PCM	logarithmically-quantized pulse code modulation
	    (instantaneous companding)
.sp
APCM	adaptively quantized pulse code modulation
	    (usually syllabic companding)
.sp
DPCM	differential pulse code modulation
.sp
ADPCM	differential pulse code modulation with either
	    adaptive quantization, or adaptive prediction,
	    or both
.sp
DM	delta modulation (1-bit DPCM)
.sp
ADM	delta modulation with adaptive quantization
\l'\n(x1u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 3.2  Time-domain encoding techniques"
.rh "Syllabic companding."
We have already studied one time-domain encoding technique, namely logarithmic
quantization, or log PCM (sometimes called "instantaneous companding").  A more
sophisticated encoder could track slowly varying trends in the overall amplitude
of the speech signal and use this information to adjust the quantization
levels dynamically.  Speech coding methods based on this principle are called
adaptive pulse code modulation systems (APCM).  Because the overall amplitude
changes slowly, it is sufficient to adjust the quantization relatively infrequently
(compared with the sampling rate), and this is often done at rates approximating
the syllable rate of running speech, leading to the term "syllabic companding".
A block floating-point format can be used, with a common exponent being
stored every M samples (with M, say, 125 for a 100\ msec block rate at 8\ kHz
sampling), but the mantissa being stored at the regular sample rate.  The overall
energy in the block,
.LB
$sum from n=h to h+M-1 ~x(n) sup 2$    ($M = 125$, say),
.LE
is used to determine a suitable exponent, and every sample
in the block \(em namely
$x(h)$, $x(h+1)$, ..., $x(h+M-1)$ \(em is scaled according to that exponent.
Note that for speech transmission systems this method necessitates a delay of
$M$ samples at the encoder, and indeed some methods base the exponent on the
energy in the last block to avoid this.  For speech storage, however, the delay
is irrelevant.  A rather different, nonsyllabic, method of adaptive PCM is
continually to change the step size of a uniform quantizer, by multiplying it by
a constant at each sample which is based on the magnitude of the previous code
word.
.pp
Adaptive quantization exploits information about the amplitude of the signal,
and, as a rough generalization, yields a reduction of one bit per sample
in the data rate for telephone-quality speech over ordinary logarithmic
quantization, for a given signal-to-noise ratio.  Alternatively, for the
same data rate an improvement of 6\ dB in signal-to-noise ratio can be obtained.
Some results for actual schemes are given by Rabiner and Schafer (1978).
.[
Rabiner Schafer 1978 Digital processing of speech signals
.]
However, there is other information in the time waveform of speech, namely, the
sample-to-sample correlation, which can be exploited to give further reductions.
.rh "Differential coding."
Differential pulse code modulation (DPCM), in its simplest form, uses the
present speech sample as a prediction of the next one,
and stores the prediction error \(em that is, the sample-to-sample difference.
This is a simple case of predictive encoding.
Referring back to the speech waveform displayed in Figure 3.5,
it seems plausible that the data rate can be reduced by transmitting the difference
between successive samples instead of their absolute values:  less bits are
required for the difference signal for a given overall accuracy because it
does not assume such extreme values as the absolute signal level.
Actually, the improvement is not all that great \(em about 4\ \-\ 5\ dB in
signal-to-noise ratio, or just under one bit per sample for a given
signal-to-noise ratio \(em for the difference signal can be nearly as large as
the absolute signal level.
.pp
If DPCM is used in conjunction with adaptive quantization, giving one form of
adaptive differential pulse code modulation (ADPCM), both the overall amplitude
variation and the sample-to-sample correlation are exploited, leading to a
combined gain of 10\ \-\ 11\ dB in signal-to-noise ratio (or just under two bits
reduction per sample for telephone-quality speech).  Another form of adaptation
is to alter the predictor by multiplying the previous sample value by a
parameter which is adjusted for best performance.
Then the transmitted signal at time $n$ is
.LB
.EQ
e(n) ~~ = ~~ x(n)~ - ~ax(n-1),
.EN
.LE
where the parameter $a$ is adapted (and stored) on a syllabic time-scale.  This
leads to a slight improvement in signal-to-noise ratio, which can be combined
with that achieved by adaptive quantization.  Much more substantial benefits
can be realized by using a weighted sum of the past several (up to 15) speech
samples, and adapting all the weights.  This is the basic idea of linear
prediction, which is developed in Chapter 6.
.rh "Delta modulation."
The coding methods presented so far all increase the complexity of the
analogue-to-digital interface (or, if the sampled waveform is coded
digitally, they increase the processing required before and after storage).
One method which considerably
.ul
simplifies
the interface is the limiting case
of DPCM with just 1-bit quantization.  Only the sign of the difference between
the current and last values is transmitted.  Figure 3.9 shows the conversion
hardware.
.FC "Figure 3.9"
The encoding part is essentially the same as a tracking D/A,
where the value in a counter is forced to track the analogue input by
incrementing or decrementing the counter according as the input exceeds or
falls short of the analogue equivalent of the counter's contents.  However,
for this encoding scheme, called "delta modulation", the increment-decrement
signal itself forms the discrete representation of the waveform, instead of the counter's
contents.  The analogue waveform can be reconstituted from the bit stream with
another counter and D/A converter.  Alternatively, an all-analogue implementation
can be used, both for the encoder and decoder, with a capacitor as integrator
whose charging current is controlled digitally.  This is a much cheaper realization.
.pp
It is fairly obvious that the sampling frequency for delta modulation will need
to be considerably higher than for straightforward PCM.  Figure 3.10 shows
an effect called "slope overload" which occurs when the sampling rate is too low.
.FC "Figure 3.10"
Either a higher sample rate or a larger step size will reduce the overload;
however, larger steps increase the noise level of the alternate 1's and \-1's
that occur when no input is present \(em called "granular noise".  A compromise
is necessary between slope overload and granular noise for a given bit rate.
Delta modulation results in lower data rates than logarithmic quantization
for a given signal-to-noise ratio if that ratio is low (poor-quality speech).
As the desired speech quality is increased its data rate grows faster than
that of logarithmic PCM.  The crossover point occurs at much lower than
telephone quality speech, and so although delta modulation is used for some
applications where the permissible data rate is severely constrained,
it is not really suitable for speech output from computers.
.pp
It is profitable to adjust the step size, leading to
.ul
adaptive
delta modulation.
A common strategy is to increase or decrease the step size by a multiplicative
constant, which depends on whether the new transmitted bit will be equal to
or different from the last one.  That is,
.LB "nnnn"
.NI "nn"
$stepsize(n+1)  =  stepsize(n) times 2$  if $x(n+1)<x(n)<x(n-1)$
or $x(n+1)>x(n)>x(n-1)$
.br
(slope overload condition);
.NI "nn"
$stepsize(n+1) = stepsize(n)/2$  if $x(n+1),~x(n-1)<x(n)$
or $x(n+1),~x(n-1)>x(n)$
.br
(granular noise condition).
.LE "nnnn"
Despite these adaptive equations, the step size should be constrained to
lie between a predetermined fixed maximum and minimum, to prevent it from
becoming so large or so small that rapid accomodation to changing input signals is
impossible.
Then, in a period of potential slope overload the step size will grow, preventing
overload, possibly to its maximum value when overload may resume.  In a quiet
period it will decrease to its minimum value which determines the granular
noise in the idle condition.  Note that the step size need not be stored, for
it can be deduced from the bit changes in the digitized data.  Although
adaptation improves the performance of delta modulation, it is still inferior to
PCM at telephone qualities.
.rh "Summary."
It seems that ADPCM, with
adaptive quantization and adaptive prediction, can provide a worthwhile
advantage for speech storage, reducing the number of bits needed per sample of
telephone-quality speech from 7 for logarithmic PCM to perhaps 5, and the data
rate from 56\ Kbit/s to 40\ Kbit/s.  Disadvantages are additional complexity
in the encoding and decoding processes, and the fact that byte-oriented storage,
with 8 bits/sample in logarithmic PCM, is more convenient for computer use.
For low quality speech where hardware complexity is to be minimized,
adaptive delta modulation could provide worthwhile \(em although the ready
availability of PCM codec chips reduces the cost advantage.
.sh "3.3  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "3.4  Further reading"
.pp
Probably the best single reference on time-domain coding of speech is
the book by Rabiner and Schafer (1978), cited above.
However, this does not contain a great deal of information on practical
aspects of the analogue-to-digital conversion process; this is
covered by Blesser (1978) above, who is especially interested in
high-quality conversion for digital audio applications,
and Garrett (1978) below.
There are many textbooks in the telecommunications area which
are relevant to the subject of the chapter,
although they concentrate primarily on fundamental theoretical aspects rather
than the practical application of the technology.
.LB "nn"
.\"Cattermole-1969-1
.]-
.ds [A Cattermole, K.W.
.ds [D 1969
.ds [T Principles of pulse code modulation
.ds [I Iliffe
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is a standard, definitive, work on PCM, and provides a good grounding
in the theory.
It goes into the subject in much more depth than we have been able to here.
.in-2n
.\"Garrett-1978-1
.]-
.ds [A Garrett, P.H.
.ds [D 1978
.ds [T Analog systems for microprocessors and minicomputers
.ds [I Reston Publishing Company
.ds [C Reston, Virginia
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Garrett discusses the technology of data conversion systems, including
A/D and D/A converters and basic analogue filter design, in a
clear and practical manner.
.in-2n
.\"Inose-1979-2
.]-
.ds [A Inose, H.
.ds [D 1979
.ds [T An introduction to digital integrated communications systems
.ds [I Peter Peregrinus
.ds [C Stevenage, England
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Inose's book is a recent one which covers the whole area of digital
transmission and switching technology.
It gives a good idea of what is happening to the telephone networks
in the era of digital communications.
.in-2n
.\"Steele-1975-3
.]-
.ds [A Steele, R.
.ds [D 1975
.ds [T Delta modulation systems
.ds [I Pentech Press
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Again a standard work, this time on delta modulation techniques.
Steele gives an excellent and exhaustive treatment of the subject from a
communications viewpoint.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "4  SPEECH ANALYSIS"
.ds RT "Speech analysis
.ds CX "Principles of computer speech
.pp
Digital recordings of speech provide a jumping-off point for
further processing of the audio waveform, which is usually necessary for
the purpose of speech output.
It is difficult to synthesize natural sounds by concatenating
individually-spoken words.
Pitch is perhaps the most perceptually significant contextual effect
which must be
taken into account when forming connected speech out of isolated words.
The intonation of an utterance, which manifests itself as a
continually changing pitch, is a holistic property of the utterance
and not the sum of components determined by the individual words alone.
Happily, and quite coincidentally, communications engineers in their quest
for reduced-bandwidth telephony have invented methods of coding speech that
separate the pitch information from that carried by the articulation.
.pp
Although these analysis techniques, which were first introduced in the late
1930's (Dudley, 1939), were originally implemented by analogue means \(em and
in many systems still are (Blankenship, 1978, describes a recent
switched-capacitor realization) \(em there is a continuing trend
towards digital implementations, particularly for the more sophisticated coding
schemes.
.[
Dudley 1939
.]
.[
Blankenship 1978
.]
It is hard to see how the technique of linear prediction of speech,
which is described in detail in Chapter 6, could be accomplished in the
absence of digital processing.
Some groundwork is laid for the theory of digital signal analysis in this
chapter.
The ideas are not presented in a formal, axiomatic way; but are developed as
and when they are needed to examine some of the structures that turn out to be
useful in speech processing.
.pp
Most speech analysis views speech according to the source-filter model which
was introduced in Chapter 2, and aims to separate the effects of the source from
those of the filter.  The frequency spectrum of the vocal tract filter is of
great interest, and the technique of discrete Fourier transformation is
discussed in this chapter.  For many purposes it is better to extract the formant
frequencies from the spectrum and use these alone (or in conjunction with their
bandwidths) to characterize it.  As far as the signal source in the source-filter
model is concerned, its most interesting features are pitch and amplitude \(em the
latter being easy to estimate.  Hence we go on to look at pitch extraction.
Related to this is the problem of deciding whether a segment of speech has
voiced or unvoiced excitation, or both.
.pp
Estimating formant and pitch parameters is one of the messiest areas of
speech processing.  There is a delightful paper which points this out
(Schroeder, 1970), entitled "Parameter estimation in speech: a lesson in unorthodoxy".
.[
Schroeder 1970
.]
It emphasizes that the most successful estimation procedures "have often relied
on intuition based on knowledge of speech signals and their production in the
human vocal apparatus rather than routine applications of well-established
theoretical methods".
Fortunately, the emphasis of the present book is on speech
.ul
output,
which involves parameter estimation only in so far as it is needed to produce
coded speech for storage, and to illuminate the acoustic nature of speech
for the development of synthesis by rule from phonetics or text.
Hence the many methods of formant and pitch estimation are treated rather
cursorily and qualitatively here:  our main interest is in how to
.ul
use
such information for speech output.
.pp
If the incoming speech can be analysed into its formant frequencies, amplitude,
excitation mode, and pitch (if voiced), it is quite easy to resynthesize
it directly from these parameters.  Speech synthesizers are described in the
next chapter.  They can be realized in either analogue or digital
hardware, the former being predominant in production systems and the latter
in research systems \(em although, as in other areas of electronics, the balance
is changing in favour of digital implementations.
.sh "4.1  The channel vocoder"
.pp
A direct representation of the frequency spectrum of a signal can be obtained
by a bank of bandpass filters.  This is the basis of
the
.ul
channel vocoder,
which was the first device that attempted to take advantage of the source-filter
model for speech coding (Dudley, 1939).
.[
Dudley 1939
.]
The word "vocoder" is a contraction
of
.ul
vo\c
ice
.ul
coder.
The energy in each filter band is
estimated by rectification and smoothing, and the resulting approximation to
the frequency spectrum is transmitted or stored.  The source properties are
represented by the type of excitation (voiced or unvoiced), and if voiced,
the pitch.  It is not necessary to include the overall amplitude of the speech
explicitly, because this is conveyed by the energy levels from the separate
bandpass filters.
.pp
Figure 4.1 shows the encoding part of a channel vocoder which has been used
successfully for many years (Holmes, 1980).
.[
Holmes 1980 JSRU channel vocoder
.]
.FC "Figure 4.1"
We will discuss the block labelled "pre-emphasis" shortly.
The shape of the spectrum is estimated by 19 bandpass filters, whose spacing
and bandwidth decrease slightly with decreasing frequency to obtain the rather
greater resolution that is needed in the lower frequency region,
as shown in Table 4.1.
.RF
.nr x0 4n+2.6i+\w'\0\0'u+(\w'bandwidth'/2)
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 4n +1.3i +1.3i
\l'\n(x0u\(ul'
.sp
.nr x1 (\w'channel'/2)
.nr x2 (\w'centre'/2)
.nr x3 (\w'analysis'/2)
	\0\h'-\n(x1u'channel	\0\h'-\n(x2u'centre	\0\0\h'-\n(x3u'analysis
.nr x1 (\w'number'/2)
.nr x2 (\w'frequency'/2)
.nr x3 (\w'bandwidth'/2)
	\0\h'-\n(x1u'number	\0\0\h'-\n(x2u'frequency	\0\0\h'-\n(x3u'bandwidth
.nr x2 (\w'(Hz)'/2)
		\0\h'-\n(x2u'(Hz)	\0\0\h'-\n(x2u'(Hz)
\l'\n(x0u\(ul'
.sp
	\01	\0240	\0120
	\02	\0360	\0120
	\03	\0480	\0120
	\04	\0600	\0120
	\05	\0720	\0120
	\06	\0840	\0120
	\07	1000	\0150
	\08	1150	\0150
	\09	1300	\0150
	10	1450	\0150
	11	1600	\0150
	12	1800	\0200
	13	2000	\0200
	14	2200	\0200
	15	2400	\0200
	16	2700	\0200
	17	3000	\0300
	18	3300	\0300
	19	3750	\0500
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 4.1  Filter specifications for a vocoder analyser (after Holmes, 1980)"
.[
Holmes 1980 JSRU channel vocoder
.]
The 3\ dB points
of adjacent filters are halfway between their centre frequencies, so that there
is some overlap between bands.
The filter characteristics do not need to have very sharp edges, because the energy
in neighbouring bands is fairly highly correlated.  Indeed, there is a
disadvantage in making them too sharp, because the phase delays associated
with sharp cutoff filters induce "smearing" of the spectrum in the time domain.
This particular channel vocoder uses second-order Butterworth bandpass filters.
.pp
For regenerating speech stored in this way, an excitation of unit impulses
at the specified pitch period (for voiced sounds) or white noise (for unvoiced
sounds) is produced and passed through a bank of bandpass filters similar
to the analysis ones.  The excitation has a flat spectrum, for regular impulses
have harmonics at multiples of the repetition frequency which are all of the
same size, and so the spectrum of the output signal is completely determined
by the filter bank.  The gain of each filter is controlled by the stored
magnitude of the spectrum at that frequency.
.pp
The frequency spectrum and voicing pitch of speech change at much slower rates
than the time waveform.  The changes are due to movements of the articulatory
organs (tongue, lips, etc) in the speaker, and so are limited in their speed
by physical constraints.  A typical rate of production of phonemes is 15 per
second, but in fact the spectrum can change quite a lot within a single
phoneme (especially a stop sound).
Between 10 and 25\ msec (100\ Hz and 40\ Hz)
is generally thought to be a satisfactory interval for transmitting or storing
the spectrum, to preserve a reasonably faithful representation of the speech.
Of course, the entire spectrum, as well as the source characteristics, must
be stored at this rate.
The channel vocoder described by Holmes (1980) uses 48 bits to encode
the information.
.[
Holmes 1980 JSRU channel vocoder
.]
Repeated every 20\ msec, this gives a data rate of 2400\ bit/s \(em very
considerably less than any of the time-domain encoding techniques.
.pp
It needs some care to encode the output of 19 filters, the excitation type,
and the pitch into 48 bits of information.  Holmes uses 6 bits for pitch,
logarithmically encoded,
and one bit for excitation type.
This leaves 41 bits to encode the output of the 19 filters, and so a differential
technique is used which transmits just the difference between adjacent
channels \(em for the spectrum does not change abruptly in the frequency domain.
Three bits are used for the absolute level in channel 1, and two bits
for each channel-to-channel difference, giving a total of 39 bits for the whole
spectrum.  The remaining two bits per frame are reserved for signalling or
monitoring purposes.
.pp
A 2400 bit/s channel vocoder degrades the speech in a telephone channel quite
perceptibly.  It is sufficient for interactive communication, where
if you do not understand something you can always ask for it to be repeated.
It is probably not good enough for most voice response applications.
However, the vocoder principle can be used with larger filter banks and much
higher bit rates, and still reduce the data rate substantially below that
required by log PCM.
.sh "4.2  Pre-emphasis"
.pp
There is an
overall \-6\ dB/octave trend in speech radiated from the lips,
as frequency increases.
We will discuss why this is so in the next chapter.
Notice that this trend means that the signal power is reduced
by a factor of 4, or the signal amplitude by a factor of 16, for each
doubling in frequency.
For vocoders, and indeed for other methods of spectral analysis of speech,
it is usually desirable to equalize this by a +6\ dB/octave lift prior to
processing, so that the channel outputs occupy a similar range of levels.
On regeneration, the output speech is passed through an inverse filter which
provides 6\ dB/octave of attenuation.
.pp
For a digital system, such pre-emphasis
can either be implemented as an analogue circuit which precedes the presampling
filter and digitizer, or as a digital operation on the sampled and quantized
signal.  In the former case, the characteristic is usually flat up to a certain
breakpoint, which occurs somewhere between 100\ Hz and 1\ kHz \(em the exact
position does not seem to be critical \(em at which point the +6\ dB/octave lift
begins.  Although de-emphasis on output ought to have an exactly inverse
characteristic, it is sometimes modified or even eliminated altogether in an
attempt to counteract approximately
the  $sin( pi f/f sub s )/( pi f/f sub s )$  distortion
introduced by the desampling operation, which was discussed in an earlier
section.  Above half the sampling frequency, the characteristic of the
pre-emphasis is irrelevant because any effect will be suppressed by the presampling
filter.
.pp
The effect of a 6\ dB/octave lift can also be achieved digitally, by differencing
the input.  The operation
.LB
.EQ
y(n)~~ = ~~ x(n)~ -~ ax(n-1)
.EN
.LE
is suitable, where the constant parameter $a$ is usually chosen between 0.9 and 1.
The latter value gives straightforward differencing, and this amounts to
creating a DPCM signal as input to the spectral analysis.  Figure 4.2 plots
the frequency response of this operation, with a sample frequency of 8\ kHz,
for two values of the parameter; together with that of a 6\ dB/octave lift
above 100\ Hz.
.FC "Figure 4.2"
The vertical positions of the plots have been adjusted to give
the same gain, 20\ dB, at 1\ kHz.
The difference at 3.4\ kHz, the upper end of the telephone spectrum, is just
over 2\ dB.  At frequencies below the breakpoint, in this case 100\ Hz, the
difference between analogue and digital pre-emphasis can be very great.  For
$a=0.9$ the attenuation at DC (zero frequency) is 18\ dB below that at 1\ kHz,
which happens to be close to that of the analogue filter for frequencies below the
breakpoint.  However, if the breakpoint had been at 1\ kHz there would have been
20\ dB difference between the analogue and $a=0.9$ plots at DC.  And of course
the $a=1$ characteristic has infinite attenuation at DC.
In practice, however, the exact form of the pre-emphasis does not seem to be at all
critical.
.pp
The above remarks apply only to voiced speech.  For unvoiced speech there appears
to be no real need for pre-emphasis; indeed, it may do harm by reinforcing
the already large high-frequency components.  There is a case for altering the
parameter $a$ according to the excitation mode of the speech:  $a=1$ for voiced
excitation and $a=0$ for unvoiced gives pre-emphasis just when it is needed.
This can be achieved by expressing the parameter in terms of the autocorrelation
of the incoming signal, as
.LB
.EQ
a ~~ = ~~ R(1) over R(0) ~ ,
.EN
.LE
where $R(1)$ is the correlation of the signal with itself delayed by one sample,
and $R(0)$ is the correlation without delay (that is, the signal variance).
This is reasonable intuitively because high sample-to-sample correlation
is to be expected in voiced speech, so that $R(1)$ is very nearly as great as
$R(0)$ and the ratio becomes 1; whereas little or no sample-to-sample correlation
will be present in unvoiced speech, making the ratio close to 0.  Such a
scheme is reminiscent of ADPCM with adaptive prediction.
.pp
However, this sophisticated pre-emphasis method does not seem to be worthwhile
in practice.  Usually the breakpoint in an analogue pre-emphasis filter is
chosen to be rather greater than 100\ Hz to limit the amplification of fricative
energy.  In fact, the channel vocoder described by Holmes (1980) has the
breakpoint at 1\ kHz, limiting the gain to 12\ dB at 4\ kHz, two octaves above.
.[
Holmes 1980 JSRU channel vocoder
.]
.sh "4.3  Digital signal analysis"
.pp
You may be wondering how the frequency response for the digital pre-emphasis
filters, displayed in Figure 4.2, can be calculated.  Suppose a digitized
sinusoid is applied as input to the filter
.LB
.EQ
y(n) ~~ = ~~ x(n)~ - ~ax(n-1).
.EN
.LE
A sine wave of frequency $f$ has equation  $x(t) ~ = ~ sin ~ 2 pi ft$, and when
sampled at $t=0,~ T,~ 2T,~ ...$ (where $T$ is the sampling interval, 125\ msec for
an 8\ kHz sample rate), this becomes  $x(n) ~ = ~ sin ~ 2 pi fnT.$  It is much
more convenient to consider a complex exponential
input,  $e sup { j2 pi fnT}$  \(em the response to a sinusoid can then be derived
by taking imaginary parts, if necessary.  The output for this input is
.LB
.EQ
y(n) ~~ = ~~ e sup {j2 pi fnT} ~~-~ae sup {j2 pi f(n-1)T} ~~ = ~~
(1~-~ae sup {-j2 pi fT} )~e sup {j2 pi fnT} ,
.EN
.LE
a sinusoid at the same frequency as the input.  The
factor  $1~-~ae sup {-j2 pi fT}$  is complex, with both amplitude and phase
components.  Thus the output will be a phase-shifted and amplified version
of the input.  The amplitude response at frequency $f$ is therefore
.LB
.EQ
|1~ - ~ ae sup {-j2 pi fT} | ~~ = ~~
[1~ +~ a sup 2 ~-~ 2a~cos~2 pi fT ] sup 1/2 ,
.EN
.LE
or
.LB
.EQ
10 ~ log sub 10 (1~ +~ a sup 2 ~ - ~ 2a~ cos 2 pi fT)
.EN
dB.
.LE
Normalizing to 20\ dB at 1\ kHz, and assuming 8\ kHz sampling, yields
.LB
.EQ
20~ + ~~ 10~ log sub 10 (1~ +~ a sup 2 ~-~ 2a~ cos ~ { pi f} over 4000 )
~~ -~ 10~ log sub 10 (1~ +~ a sup 2 ~-~ 2a~ cos ~ pi over 4 )
.EN
dB.
.LE
With $a=0.9$ and 1 this gives the graphs of Figure 4.2.
.pp
Frequency responses for analogue filters are often plotted with a logarithmic
frequency scale, as well as a logarithmic amplitude one, to bring out the
asymptotes in dB/octave as straight lines.  For digital filters the response
is usually drawn on a
.ul
linear
frequency axis extending to half the sampling frequency.  The response is
symmetric about this point.
.pp
Analyses like the above are usually expressed in terms of the $z$-transform.
Denote the unit delay operation by $z sup -1$.  The choice of the inverse rather
than $z$ itself is of course an arbitrary matter, but the convention has stuck.
Then the filter can be characterized
by Figure 4.3, which signifies that the output is the input minus a delayed
and scaled version of itself.
.FC "Figure 4.3"
The transfer function of the filter is
.LB
.EQ
H(z) ~~ = ~~ 1~ -~ az sup -1 ,
.EN
.LE
and we have seen that the effect of the system on a (complex) exponential of
frequency $f$ is to multiply it by
.LB
.EQ
1~ -~ ae sup {-j2 pi fT}.
.EN
.LE
To get the frequency response from the transfer function, replace $z sup -1$
by $e sup {-j2 pi fT}$.  Amplitude and phase responses can then be found by
taking the modulus and angle of the complex frequency response.
.pp
If $z sup -1$ is treated as an
.ul
operator,
it is quite in order to summarize the action of the filter by
.LB
.EQ
y(n) ~~ = ~~ x(n)~ - ~az sup -1 x(n) ~~ = ~~ (1~ -~ az sup -1 )x(n).
.EN
.LE
However, it is usual to derive from the sequence $x(n)$ a
.ul
transform
$X(z)$ upon which $z sup -1$ acts as a
.ul
multiplier.
If the transform of $x(n)$ is defined as
.LB
.EQ
X(z) ~~ = ~~ sum from {n=- infinity} to infinity ~x(n) z sup -n ,
.EN
.LE
then on multiplication by $z sup -1$ we get a new transform, say $V(z)$:
.LB
.EQ
V(z) ~~ = ~~ z sup -1 X(z) ~~ =
~~ z sup -1 sum from {n=- infinity} to infinity ~x(n) z sup -n ~~ =
~~ sum ~x(n)z sup -n-1 ~~ =
~~ sum ~x(n-1)z sup -n .
.EN
.LE
$V(z)$ can also be expressed as the transform of a new sequence, say $v(n)$, by
.LB
.EQ
V(z) ~~ = ~~ sum from {n=- infinity} to infinity ~v(n) z sup -n ,
.EN
.LE
from which it becomes apparent that
.LB
.EQ
v(n) ~~ = ~~ x(n-1).
.EN
.LE
Thus $v(n)$ is a delayed version of $x(n)$, and we have accomplished what we
set out to do, namely to show that the delay
.ul
operator
$z sup -1$ can be treated as an ordinary
.ul
multiplier
in the $z$-transform domain, where $z$-transforms are defined as the infinite
sums given above.
.pp
In terms of $z$-transforms, the filter can be written
.LB
.EQ
Y(z) ~~ = ~~ (1~ -~ az sup -1 )X(z),
.EN
.LE
where $z sup -1$ is now treated as a multiplier.
The transfer function of the filter is
.LB
.EQ
H(z) ~~ = ~~ Y(z) over X(z) ~~ = ~~ 1 - az sup -1 ,
.EN
.LE
the ratio of the output to the input transform.
.pp
It may seem that little has been gained by inventing this rather abstract
notion of transform, simply to change an operator to a multiplier.  After
all, the equation of the filter is no simpler in the transform domain than
it was in the time domain using $z sup -1$ as an operator.  However, we will
need to go on to examine more complex filters.  Consider, for example, the
transfer function
.LB
.EQ
H(z) ~~ = ~~ {1~+~az sup -1 ~+~bz sup -2} over {1~+~cz sup -1 ~+~dz sup -2} ~ .
.EN
.LE
If $z sup -1$ is treated as an operator, it is not immediately obvious how
this transfer function can be realized by a time-domain recurrence relation.
However, with $z sup -1$ as an ordinary multiplier in the transform domain, we can
make purely mechanical manipulations with infinite sums to see what the transfer
function means as a recurrence relation.
.pp
It is worth noting the similarity between the $z$-transform in the discrete
domain and the Fourier and Laplace transforms in the continuous domains.
In fact, the $z$-transform plays an analogous role in digital signal processing
to the Laplace transform in continuous theory, for the delay operator
$z sup -1$
performs a similar service to the differentiation operator $s$.
Recall first the continuous Fourier transform,
.LB
$
G(f) ~~ = ~~
integral from {- infinity} to infinity ~g(t)~e sup {-j2 pi ft} dt
$,    where $f$ is real,
.LE
and the Laplace transform,
.LB
$
F(s) ~~ = ~~
integral from 0 to infinity ~f(t)~e sup -st dt
$,    where $s$ is complex.
.LE
The main difference between these two transforms is that the range of integration
begins at -$infinity$ for the Fourier transform and at 0 for the Laplace.
Advocates of the Fourier transform, which typically include people involved with
telecommunications, enjoy the freedom from initial conditions which is bestowed
by an origin way back in the mists of time.  Advocates of Laplace, including
most analogue filter theorists, invariably
consider systems where all is quiet before $t=0$ \(em altering the origin
of measurement of time to achieve this if necessary \(em and welcome the opportunity
to include initial conditions explicitly
.ul
without
having to worry about what happens in the mists of time.
Although there is a two-sided Laplace transform where the integration begins
at -$infinity$, it is not generally used because it causes some convergence
complications.  Ignoring this difference between the transforms (by considering
signals which are zero when $t<0$), the Fourier spectrum can be found from the
Laplace transform by writing  $s=j2 pi f$; that is, by considering values
of $s$ which lie on the imaginary axis.
.pp
The $z$-transform is
.LB
$
H(z) ~~ = ~~ sum from n=0 to infinity ~h(n)~z sup -n
$,    or    $
H(z) ~~ = ~~ sum from {n=- infinity} to infinity ~h(n)~z sup -n ,
$
.LE
depending on whether a one-sided or two-sided transform is used.  The advantages
and disadvantages of one- and two-sided transforms are the same as in the
analogue case.
$z$ plays the role of $e sup sT $, and so it is not surprising that the response
to a (sampled) sinusoid input can be found by setting
.LB
.EQ
z ~~ = ~~ e sup {j2 pi fT}
.EN
.LE
in $H(z)$, as we proved explicitly above for the pre-emphasis filter.
.pp
The above relation between $z$ and $f$ means that real-valued frequencies correspond
to points where $|z|=1$, that is, the unit circle in the complex $z$-plane.
As you travel anticlockwise around this unit circle, starting from the
point $z=1$, the corresponding frequency increases from 0, to $1/2T$ half-way
round ($z=-1$), to $1/T$ when you get back to the beginning ($z=1$) again.
Frequencies greater than the sampling frequency are aliased back into the
sampling band, corresponding to further circuits of $|z|=1$ with frequency
going from $1/T$ to $2/T$, $2/T$ to $3/T$, and so on.  In fact, this is the circle
of Figure 3.3 which was used earlier to explain how sampling affects the frequency
spectrum!
.sh "4.4  Discrete Fourier transform"
.pp
Let us return from this brief digression into techniques of digital signal
analysis to the problem of determining the frequency spectrum of speech.
Although a bank of bandpass filters such as is used in the channel vocoder
is the perhaps most straightforward way to obtain a frequency spectrum,
there are other techniques which are in fact more commonly used in digital speech
processing.
.pp
It is possible to define the Fourier transform of a discrete sequence of
points.  To motivate the definition, consider first the
ordinary Fourier transform (FT), which is
.LB
$
g(t) ~~ = ~~
integral from {- infinity} to infinity ~G(f)~e sup {+j2 pi ft} df
~~~~~~~~~~~~~~~~
G(f) ~~ = ~~
integral from {- infinity} to infinity ~g(t)~e sup {-j2 pi ft} dt .
$
.LE
This takes a continuous time domain into a continuous frequency domain.
Sometimes you see a normalizing factor $1/2 pi$ multiplying the integral in
either the forward or the reverse transform.  This is only needed
when the frequency variable is expressed in radians/s, and we will find it
more convenient to express frequencies in\ Hz.
.pp
The Fourier series (FS), which should also be familiar to you,
operates on a periodic time waveform (or, equivalently,
one that only exists for a finite period of time, which is notionally extended
periodically).  If a period lies in the time range $[0,b)$, then the transform is
.LB
$
g(t) ~~ = ~~
sum from {r = - infinity} to infinity ~G(r)~e sup {+j2 pi rt/b}
~~~~~~~~~~~~~~~~
G(r) ~~ = ~~ 1 over b ~ integral from 0 to b ~g(t)~e sup {-j2 pi rt/b} dt .
$
.LE
The Fourier series takes a periodic time-domain function into a discrete frequency-domain one.
Because of the basic duality between the time and frequency domains in the
Fourier transforms, it is not surprising that another version of the transform
can be defined which takes a periodic
.ul
frequency\c
-domain function into a
discrete
.ul
time\c
-domain one.
.pp
Fourier transforms can only deal with a finite stretch of a time signal
by assuming that the signal is periodic, for if $g(t)$ is evaluated from
its transform $G(r)$ according to the formula above, and $t$ is chosen outside
the interval $[0,b)$, then a periodic extension of the function $g(t)$ is obtained
automatically.
Furthermore, periodicity in one domain implies discreteness in the other.
Hence if we transform a
.ul
finite
stretch of a
.ul
discrete
time waveform,
we get a frequency-domain representation which is also finite (or, equivalently,
periodic), and discrete.
This is the discrete Fourier transform (DFT),
and takes a discrete periodic time-domain function into a discrete
periodic frequency-domain one as illustrated in Figure 4.4.
.FC "Figure 4.4"
It is defined by
.LB
$
g(n) ~~ = ~~
1 over N ~ sum from r=0 to N-1~G(r)~e sup { + j2 pi rn/N}
~~~~~~~~~~~~~~~~
G(r) ~~ = ~~ sum from n=0 to N-1 ~g(n)~e sup { - j2 pi rn/N} ,
$
.LE
or, writing  $W=e sup {-j2 pi /N}$,
.LB
$
g(n) ~~ = ~~
1 over N ~ sum from r=0 to N-1~G(r)~W sup -rn
~~~~~~~~~~~~~~~~
G(r) ~~ = ~~ sum from n=0 to N-1 ~g(n)~W sup rn .
$
.LE
.sp
The $1/N$ in the first equation is the same normalizing
factor as the $1/b$ in the Fourier series,
for the finite time domain is $[0,N)$
in the discrete case and $[0,b)$ in the Fourier series case.
It does not matter
whether it is written into the forward or the reverse transform, but it is usually
placed as shown above as a matter of convention.
.pp
As illustrated by Figure 4.5, discrete Fourier transforms
take an input of $N$ real values, representing equally-spaced time samples
in the interval $[0,b)$, and produce as output $N$ complex values, representing
equally-spaced frequency samples in the interval $[0,N/b)$.
.FC "Figure 4.5"
Note that the end-point of this frequency interval is the sampling frequency.
It seems odd that the input is real and the output is the same number of
.ul
complex
quantities:  we seem to be getting some numbers for nothing!
However, this isn't so, for it is easy to show that if the input sequence is
real, the output frequency
spectrum has a symmetry about its mid-point (half the sampling frequency).
This can be expressed as
.LB
DFT symmetry:\0\0\0\0\0\0 $
~ mark G( half N +r) ~=~ G( half N -r) sup *$  if $g$ is real-valued,
.LE
where $*$ denotes the conjugate of a complex quantity
(that is, $(a+jb) sup * = a-jb$).
.pp
It was argued above that the frequency spectrum in the DFT is periodic, with
the spectrum from 0 to the sampling frequency being repeated regularly up and
down the frequency axis.  It can easily be seen from the DFT equation that
this is so.  It can be written
.LB
DFT periodicity:$ lineup G(N+r) ~=~ G(r)$  always.
.LE
Figure 4.6 illustrates the properties of symmetry and periodicity.
.FC "Figure 4.6"
.sh "4.5  Estimating the frequency spectrum of speech using the DFT"
.pp
Speech signals are not exactly periodic.  Although the waveform in a particular
pitch period will usually resemble those in the preceding and following pitch
periods, it will certainly not be identical to them.
As the articulation of the speech changes, the formant positions will alter.
As we saw in Chapter 2, the pitch itself is certainly not constant.
Hence the fundamental assumption of the DFT, that the waveform is periodic,
is not really justified.  However, the signal is quasi-periodic, for changes
from period to period will not usually be very great.  One way of computing
the short-term frequency spectrum of speech is to use
.ul
pitch-synchronous
Fourier transformation, where single pitch periods are isolated from the
waveform and processed with the DFT.  This gives a rather accurate estimate
of the spectrum.  Unfortunately, it is difficult to determine the beginning
and end of each pitch cycle, as we shall see later in this chapter when
discussing pitch extraction techniques.
.pp
If a finite stretch of a speech waveform is isolated and Fourier transformed,
without regard to pitch of the speech, then the periodicity assumption will
be grossly violated.  Figure 4.7 illustrates that the effect is the same
as
multiplying the signal by a rectangular
.ul
window function,
which is 0 except during the period to be analysed, where it is 1.
.FC "Figure 4.7"
The windowed sequence will almost certainly have discontinuities at its edges,
and these will affect the resulting spectrum.  The effect can be analysed
quite easily, but we will not do so here.  It is enough to say that the
high frequencies associated with the edges of the window cause considerable
distortion of the spectrum.  The effect can be alleviated by
using a smoother window than a rectangular one,
and several have been investigated extensively.  The commonly-used windows of
Bartlett, Blackman, and Hamming are illustrated in Figure 4.8.
.FC "Figure 4.8"
.pp
Because the DFT produces the same number of frequency samples, equally spaced,
as there were points in the time waveform, there is a tradeoff between
frequency resolution and time resolution (for a given sampling rate).
For example, a 256-point transform with a sample rate of 8\ kHz gives the 256
equally-spaced frequency components between 0 and 8\ kHz that are shown in Table
4.2.
.RF
.nr x0 (\w'time domain'/2)
.nr x1 (\w'frequency domain'/2)
.in+1.0i
.ta 1.0i 3.0i 4.0i
\h'0.5i+2n-\n(x0u'time domain\h'|3.5i+2n-\n(x1u'frequency domain
.sp
sample	time	sample	\h'-3n'frequency
number		number
.nr x0 1i+\w'00000'
\l'\n(x0u\(ul'	\l'\n(x0u\(ul'
.sp
\0\0\00	\0\0\0\00 $mu$sec	\0\0\00	\0\0\0\00 Hz
\0\0\01	\0\0125	\0\0\01	\0\0\031
\0\0\02	\0\0250	\0\0\02	\0\0\062
\0\0\03	\0\0375	\0\0\03	\0\0\094
\0\0\04	\0\0500	\0\0\04	\0\0125
.nr x2 (\w'...'/2)
\h'0.5i+4n-\n(x2u'...\h'|3.5i+4n-\n(x2u'...
\h'0.5i+4n-\n(x2u'...\h'|3.5i+4n-\n(x2u'...
\h'0.5i+4n-\n(x2u'...\h'|3.5i+4n-\n(x2u'...
.sp
\0254	31750	\0254	\07938
\0255	31875 $mu$sec	\0255	\07969 Hz
\l'\n(x0u\(ul'	\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.MT 2
Table 4.2  Time domain and frequency domain samples for a 256-point DFT,
with 8\ kHz sampling
.TE
The top half of the frequency spectrum is of no interest, because
it contains the complex conjugates of the bottom half (in reverse order),
corresponding to frequencies greater than half the sampling frequency.
Thus for a 30\ Hz resolution in the frequency domain,
256 time samples, or a 32\ msec stretch of speech, needs to be transformed.
A common technique is to take overlapping periods in the time domain to
give a new frequency spectrum every 16\ msec.  From the acoustic point
of view this is a reasonable rate to re-compute the spectrum, for as noted
above when discussing channel vocoders the rate of change in the spectrum
is limited by the speed that the speaker can move his vocal organs, and
anything between 10 and 25\ msec is a reasonable figure for transmitting
or storing the spectrum.
.pp
The DFT is a complex transform, and speech is a real signal.  It is possible
to do two DFT's at once by putting one time waveform into the real parts
of the input and another into the imaginary parts.  This destroys the DFT
symmetry property, for it only holds for real inputs.  But given the DFT
of a complex sequence formed in this way, it is easy to separate out the
DFT's of the two real time sequences.  If the two time sequences are
$x(n)$ and $y(n)$, then the transform of the complex sequence
.LB
.EQ
g(n) ~~ = ~~ x(n) ~+~ jy(n)
.EN
.LE
is
.LB
.EQ
G(r) ~~ = ~~ sum from n=0 to N-1 ~[x(n)W sup rn ~+~ y(n)W sup rn ] .
.EN
.LE
It follows that the complex conjugate of the aliased parts of the spectrum,
in the upper frequency region, are
.LB
.EQ
G(N-r) sup * ~~ = ~~ sum from n=0 to N-1 ~[x(n)W sup -(N-r)n
~-~ y(n)W sup -(N-r)n ] ,
.EN
.LE
and this is the same as
.LB
.EQ
G(N-r) sup * ~~ = ~~ sum from n=0 to N-1 ~[x(n)W sup rn
~-~ y(n)W sup rn ] ,
.EN
.LE
because $W sup N$ is 1 (recall the definition of $W$),
and so $W sup -Nn$ is 1 for any $n$.
Thus
.LB
.EQ
X(r) ~~ = ~~ {G(r) ~+~ G(N-r) sup * } over 2
~~~~~~~~~~~~~~~~
Y(r) ~~ = ~~ {G(r) ~-~ G(N-r) sup * } over 2
.EN
.LE
extracts the transforms $X(r)$ and $Y(r)$ of the original sequences
$x$ and $y$.
.pp
With speech, this trick is frequently used to calculate two spectra at once.
Using 256-point transforms, a new estimate of the spectrum can be obtained
every 16\ msec by taking overlapping 32\ msec stretches of speech, with a
computational requirement of one 256-point transform every 32\ msec.
.sh "4.6  The fast Fourier transform"
.pp
Straightforward calculation of the DFT, expressed as
.LB
.EQ
G(r) ~~ = ~~ sum from n=0 to N-1 ~g(n)~W sup nr ,
.EN
.LE
for $r=0,~ 1,~ 2,~ ...,~ N-1$, takes $N sup 2$ operations, where each operation
is a complex multiply and add (for $W$ is, of course, a complex number).
There is a better way, invented in the early sixties, which reduces this to
$N ~ log sub 2 N$ operations \(em a very considerable improvement.
Dubbed the "fast Fourier transform" (FFT) for historical reasons, it would actually
be better called the "Fourier transform", with the straightforward method above
known as the "slow Fourier transform"!  There
is no reason nowadays to use the slow method, except for tiny transforms.
It is worth describing the basic principle of the FFT, for it is surprisingly
simple.  More details on actual implementations can be found in Brigham (1974).
.[
Brigham 1974
.]
.pp
It is important to realize that the FFT involves no approximation.
It is an
.ul
exact
calculation of the values that would be obtained by the slow method
(although it may be affected differently by round-off errors).
Problems of aliasing and windowing occur in all discrete Fourier transforms,
and they are neither alleviated nor exacerbated by the FFT.
.pp
To gain insight into the working of the FFT, imagine the sequence $g(n)$ split
into two halves, containing the even and odd points
respectively.
.LB
even half $e(n)$ is $g(0)~ g(2)~ .~ .~ .~ g(N-2)$
.br
odd  half $o(n)$ is $g(1)~ g(3)~ .~ .~ .~ g(N-1)$.
.LE
Then it is easy to show that if $G$ is the transform of $g$,
$E$ the transform of $e$,
and $O$ that of $o$, then
.LB
$
G(r) ~~ = ~~ E(r) ~+~ W sup r O(r)$  for  $r=0,~ 1,~ ...,~ half N -1$,
.LE
and
.LB
$
G( half N +r ) ~~ = ~~ E(r) ~+~ W sup { half N +r} O(r)$  for  $
r = 0,~ 1,~ ...,~ half N -1$.
.LE
Calculation of the $E$ and $O$ transforms involves $( half N) sup 2$ operations each,
while combining them together according to the above relationship occupies
$N$ operations.  Thus the total is  $N + half N sup 2 $  operations, which is considerably
less than $N sup 2$.
.pp
But don't stop there!  The even half can itself be broken down into
even and odd parts to expedite its calculation, and the same with the odd half.
The only constraint is that the number of elements in the sequences splits
exactly into two at each stage.
Providing $N$ is a power of 2, then, we are left at the end with some 1-point
transforms to do.  But transforming a single point leaves it unaffected!  (Check
the definition of the DFT.)  A quick calculation shows that the number of operations
needed is not  $N + half N sup 2$, but $N~ log sub 2 N$.
Figure 4.9 compares this with $N sup 2$, the number of operations for
straightforward DFT calculation, and it can be seen that the FFT is very much
faster.
.FC "Figure 4.9"
.pp
The only restriction on the use of the FFT is that $N$ must be a power of two.
If it is not, alternative, more complicated, algorithms can be used which
give comparable computational advantages.  However, for speech processing
the number of samples that are transformed is usually arranged to be a power
of two.  If a pitch synchronous analysis is undertaken, the
time stretch that is to be transformed is dictated by the length of the pitch
period, and will vary from time to time.  Then, it is usual to pad out the
time waveform with zeros to bring the number of samples up to a power of two;
otherwise, if different-length time stretches were transformed the scale
of the resulting frequency components would vary too.
.pp
The FFT provides very worthwhile cost savings over the use of a bank of
bandpass filters for spectral analysis.  Take the example of a 256-point
transform with 8\ kHz sampling, giving 128 frequency components spaced
by 31.25\ Hz from 0 up to almost 4\ kHz.  This can be computed on overlapping
32\ msec stretches of the time waveform, giving a new spectrum every 16\ msec,
by a single FFT calculation every 32\ msec (putting successive pairs of
time stretches in the real and imaginary parts of the complex input sequence,
as described earlier).  The FFT algorithm requires $N~ log sub 2 N$ operations,
which is 2048 when $N=256$.  An additional 512 operations are required
for the windowing calculation.  Repeated every 32\ msec, this gives
a rate of 80,000 operations per second.  To achieve a much lower frequency
resolution with 20 bandpass filters, each of which are fourth-order,
will need a great deal more operations.  Each filter will need between 4 and 8
multiplications per sample, depending on its exact digital implementation.  But new
samples appear every 125
.ul
micro\c
seconds, and so somewhere around a million
operations will be required every second.
If we increased the frequency resolution to that obtained by the FFT, 128
filters would be needed, requiring between 4 and 8 million operations!
.sh "4.7  Formant estimation"
.pp
Once the frequency spectrum of a speech signal has been calculated, it may
seem a simple matter to estimate the positions of the formants.  But it is
not!  Spectra obtained in practice are not usually like the idealized ones
of Figure 2.2.  One reason for this is that, unless the analysis is
pitch-synchronous, the frequency spectrum of the excitation source is mixed
in with that of the vocal tract filter.  There are other reasons, which will
be discussed later in this section.  But first, let us consider how to
extract the vocal tract filter characteristics from the combined spectrum
of source and filter.  To do so we must begin to explore the theory of linear
systems.
.rh "Discrete linear systems."
Figure 4.10 shows an input signal exciting a filter to produce an output
signal.
.FC "Figure 4.10"
For present purposes, imagine the input to be a glottal
waveform, the filter a vocal tract one, and the output a
speech signal (which is then subjected to high-frequency de-emphasis
by radiation from the lips).
We will consider here
.ul
discrete
systems, so that the input $x(n)$ and output $y(n)$ are sampled signals,
defined only when $n$ is integral.  The theory is quite similar for continuous
systems.
.pp
Assume that the system is
.ul
linear,
that is, if input $x sub 1 (n)$ produces output $y sub 1 (n)$ and
input $x sub 2 (n)$ produces output $y sub 2 (n)$,
then the sum of $x sub 1 (n)$ and
$x sub 2 (n)$ will produce the sum of $y sub 1 (n)$ and $y sub 2 (n)$.
It is easy to show from this that, for any constant multiplier $a$,
the input $ax(n)$ will produce output $ay(n)$ \(em it is pretty obvious
when $a=2$,
or indeed any positive integer; for then $ax(n)$ can be written as
$x(n)+x(n)+...$ .
Assume further that the system is
.ul
time-invariant,
that is, if input $x(n)$
produces output $y(n)$ then a time-shifted version of $x$,
say $x(n+n sub 0 )$ for
some constant $n sub 0$, will produce the same output, only time-shifted; namely
$y(n+n sub 0)$.
.pp
Now consider the discrete delta function $delta (n)$, which is 0 except at
$n=0$ when it is 1.
If this single impulse is presented as input to the system, the output is called
the
.ul
impulse response,
and will be denoted by $h(n)$.
The fact that the system is time-invariant guarantees that the response does
not depend upon the particular time at which the impulse occurred, so that,
for example, the impulsive input $delta (n+n sub 0 )$ will produce output
$h(n+n sub 0 )$.
A delta-function input and corresponding impulse response are shown in Figure
4.10.
.pp
The impulse response of a linear, time-invariant system is an extremely useful
thing to
know, for it can be used to calculate the output of the system for any input
at all!  Specifically, an input signal $x(n)$ can be written
.LB
.EQ
x(n)~ = ~~ sum from {k=- infinity} to infinity ~ x(k) delta (n-k) ,
.EN
.LE
because $delta (n-k)$ is non-zero only when $k=n$, and so for any
particular value of $n$, the summation contains only
one non-zero term \(em that is, $x(n)$.
The action of the system on each term of the sum is to produce an output
$x(k)h(n-k)$, because $x(k)$ is just a constant, and
the system is linear.
Furthermore, the complete input $x(n)$ is just the sum of such terms, and since
the system is linear, the output is the sum of $x(k)h(n-k)$.
Hence the response of the system to an arbitrary input is
.LB
.EQ
y(n)~ = ~~ sum from {k=- infinity} to infinity ~ x(k) h(n-k) .
.EN
.LE
This is called a
.ul
convolution sum,
and is sometimes written
.LB
.EQ
y(n)~ =~ x(n) ~*~ h(n).
.EN
.LE
.pp
Let's write this in terms of $z$-transforms.  The (two-sided) $z$-transform of y(n)
is
.LB
.EQ
Y(z)~ = ~~ sum from {n=- infinity} to infinity ~y(n)z sup -n ~~ =
~~ sum from n ~ sum from k ~x(k)h(n-k) ~z sup -n ,
.EN
.LE
Writing $z sup -n$ as  $z sup -(n-k) z sup -k$,  and interchanging the order
of summation, this becomes
.LB
.EQ
Y(z)~ mark = ~~ sum from k ~[~ sum from n ~ h(n-k)z sup -(n-k) ~]~x(k)z sup -k
.EN
.br
.EQ
lineup = ~~ sum from k ~H(z)~z sup -k ~~ = ~~ H(z)~ sum from k ~x(k)z sup
-k ~~=~~H(z)X(z) .
.EN
.LE
Thus convolution in the time domain is the same as multiplication in the
$z$-transform domain; a very important result.  Applied to the linear system of
Figure 4.10, this means that the output $z$-transform is the input $z$-transform
multiplied by the $z$-transform of the system's impulse response.
.pp
What we really want to do is to relate the frequency spectrum of
the output to the response of the system and the spectrum of the
input.
In fact, frequency spectra are very closely connected with $z$-transforms.  A
periodic signal $x(n)$ which repeats every $N$ samples has DFT
.LB
.EQ
sum from n=0 to N-1 ~x(n)~e sup {-j2 pi rn/N} ,
.EN
.LE
and its $z$-transform is
.LB
.EQ
sum from {n=- infinity} to infinity ~x(n) ~z sup -n .
.EN
.LE
Hence the DFT is the same as the $z$-transform of a single cycle of the signal,
evaluated at the points  $z= e sup {j2 pi r/N}$  for $r=0,~ 1,~ ...~ ,~ N-1$.
In other
words, the frequency components are samples of the $z$-transform at $N$
equally-spaced points around the unit circle.
Hence the frequency spectrum at the output of a linear system is the product of
the
input spectrum and the frequency response of the system itself (that is, the
transform of its impulse response function).
It should be admitted that this statement is somewhat questionable,
because to get from $z$-transforms to DFT's we have assumed that
a single cycle only is transformed \(em and the impulse response function of
a system is not necessarily periodic.  The real action of the system is
to multiply $z$-transforms, not DFT's.  However, it is useful in imagining
the behaviour of the system to think in terms of products of DFT's; and in
practice it is always these rather than $z$-transforms which are computed
because of the existence of the FFT algorithm.
.pp
Figure 4.11 shows the frequency spectrum of a typical voiced speech signal.
.FC "Figure 4.11"
The overall shape shows humps at the formant positions, like those in the
idealized Figure 2.2.  However, superimposed on this is an "oscillation"
(in the frequency domain!) at the pitch frequency.  This occurs because the
transform of the vocal tract filter has been multiplied by that of the
pitch pulse, the latter having components at harmonics of the pitch frequency.
The oscillation must be suppressed before the formants
can be estimated to any degree of accuracy.
.pp
One way of eliminating the oscillation is to perform pitch-synchronous
analysis.
This removes the influence of pitch from the frequency domain by dealing with
it in the time domain!  The snag is, of course, that it is not easy to estimate
the pitch frequency:  some techniques for doing so are discussed in the next
main section.
Another way is to use linear predictive analysis, which really does get rid
of pitch information without having to estimate the pitch period first.  A
smooth
frequency spectrum can be produced using the analysis techniques described in
Chapter 6, which provides
a suitable starting-point for formant frequency estimation.
The third method is to remove the pitch ripple from the frequency spectrum
directly.  This will be discussed in an intuitive rather than a
theoretical way, because linear predictive methods are becoming dominant
in speech processing.
.rh "Cepstral processing of speech."
Suppose the frequency spectrum of Figure 4.11 were actually a time waveform.
To remove the high-frequency pitch ripple is easy:  just filter it out!
However,
filtering removes
.ul
additive
ripples, whereas this is a
.ul
multiplicative
ripple.  To turn multiplication into addition, take logarithms.  Then the
procedure would be
.LB
.NP
compute the DFT of the speech waveform (windowed, overlapped);
.NP
take the logarithm of the transform;
.NP
filter out the high-frequency part, corresponding to pitch ripple.
.LE
.pp
Filtering is often best done using the DFT.  If the rippled waveform of Figure
4.11 is transformed, a strong component could be expected at the ripple
frequency, with weaker ones at its harmonics.  These components can be
simply removed by setting them to zero, and inverse-transforming the result
to give a smoothed version of the original frequency spectrum.
A spectrum of the logarithm of a frequency spectrum is often called a
.ul
cepstrum
\(em a sort of backwards spectrum.  The horizontal axis of the cepstrum,
having the dimension of time, is called "quefrency"!  Note that high-frequency
signals have low quefrencies and vice versa.  In practice,
because the pitch ripple is usually well above the quefrency of interest for
formants, the upper end of the cepstrum is often simply cut off from a fixed
quefrency which corresponds to the maximum pitch expected.  However, identifying
the pitch peaks of the cepstrum has the useful byproduct of giving the pitch
period of the original speech.
.pp
To summarize, then, the procedure for spectral smoothing by the cepstral method
is
.LB
.NP
compute the DFT of the speech waveform (windowed, overlapped);
.NP
take the logarithm of the transform;
.NP
take the DFT of this log-transform, calling it the cepstrum;
.NP
identify the lowest-quefrency peak in the spectrum as the pitch,
confirming it by examining its harmonics, which should be
equally spaced at the pitch quefrency;
.NP
remove pitch effects from the cepstrum by cutting off its high-quefrency
part above either the pitch quefrency or some constant representing the maximum
expected pitch (which is the minimum expected pitch quefrency);
.NP
inverse DFT the resulting cepstrum to give a smoothed spectrum.
.LE
.rh "Estimating formant frequencies from smoothed spectra."
The difficulties of formant extraction are not over even when a smooth frequency
spectrum has been obtained.  A simple peak-picking algorithm which identifies
a peak at the $k$'th frequency component whenever
.LB
$
X(k-1) ~<~ X(k)
$  and  $
X(k) ~>~ X(k+1)
$
.LE
will quite often identify formants incorrectly.
It helps to specify in advance minimum and maximum formant frequencies \(em say
100\ Hz and 3\ kHz for three-formant identification, and ignore peaks lying
outside these limits.  It helps to estimate
the bandwidth of the peaks and reject those with bandwidths greater than
500\ Hz \(em for real formants are never this wide.  However, if two formants are
very close, then they may appear as a single, wide, peak and be rejected by
this criterion.  It is usual to take account of formant positions identified
in previous frames under these conditions.
.pp
Markel and Gray (1976) describe in detail several estimation algorithms.
.[
Markel Gray 1976 Linear prediction of speech
.]
Their simplest uses the number of peaks identified in the raw spectrum
(under 3\ kHz, and with
bandwidths greater than 500\ Hz), to determine what to do.  If exactly three
peaks are found, they are used as the formant positions.  It is claimed that
this happens about 85% to 90% of the time.
If only one peak is found, the present frame is ignored and the
previously-identified
formant positions are used (this happens less than 1% of the time).
The remaining cases are two peaks \(em corresponding to omission of one formant \(em
and four peaks \(em corresponding to an extra formant being included.  (More
than
four peaks never occurred in their data.)  Under these conditions,
a nearest-neighbour measure is used for disambiguation.  The measure is
.LB
.EQ
v sub ij ~ = ~ |{ F sup * } sub i (k) ~-~ F sub j (k-1)| ,
.EN
.LE
where $F sub j sup (k-1)$ is the $j$'th formant frequency defined
in the previous frame
$k-1$ and ${ F sup * } sub i (k)$ is the $i$'th raw data frequency estimate
for frame $k$.
If two peaks only are found, this measure is used to identify
the closest peaks in the previous frame; and then the
third peak of that frame is taken to be the missing formant
position.  If four peaks are found, the measure is used to
determine which of them is furthest from the previous formant
values, and this one is discarded.
.pp
This procedure works forwards, using the previous frame to
disambiguate peaks given in the current one.  More sophisticated
algorithms work backwards as well, identifying
.ul
anchor points
in the data which have clearly-defined formant positions, and
moving in both directions from these to disambiguate
neighbouring frames of data.  Finally, absolute limits can be
imposed upon the magnitude of formant movements between frames
to give an overall smoothing to the formant tracks.
.pp
Very often, people will refine the result of such automatic formant
estimation procedures by hand, looking at the tracks, knowing
what was said, and making adjustments in the light of their
experience of how formants move in speech.  Unfortunately, it is difficult to
obtain high-quality formant tracks by completely automatic
means.
.pp
One of the most difficult cases in formant estimation is where
two formants are so close together that the individual peaks
cannot be resolved.  One simple solution to this problem is to
employ "analysis-by-synthesis", whereby once a formant is
identified, a standard formant shape at this position is
synthesized and
subtracted from the
logarithmic spectrum (Coker, 1963).
.[
Coker 1963
.]
Then, even if two formants
are right on top of each other, the second is not missed because
it remains after the first one has been subtracted.
.pp
Unfortunately, however, the single peak which appears when
two formants are close together usually does not correspond exactly with the
position of either one.
There is one rather advanced signal-processing technique that
can help in this case.
The frequency spectrum of
speech is determined by
.ul
poles
which lie in the complex $z$-plane inside the unit circle.  (They
must be inside the unit circle if the system is stable.  Those
familiar with Laplace analysis of analogue systems may like to note that the
left half of the $s$-plane corresponds with the inside of the unit
circle in the $z$-plane.)  As shown earlier, computing a DFT is tantamount to
evaluating the $z$-transform at equally-spaced points around the
unit circle.  However, better resolution is obtained by
evaluating around a circle which lies
.ul
inside
the unit circle, but
.ul
outside
the outermost pole position.  Such a circle is sketched in
Figure 4.12.
.FC "Figure 4.12"
.pp
Recall that the FFT is a fast way of calculating the DFT of a
sequence.  Is there a similarly fast way of evaluating the
$z$-transform inside the unit circle?  The answer is yes, and the
technique is known as the "chirp $z$-transform", because it
involves considering a signal whose frequency increases
linearly \(em just like a radar chirp signal.  The chirp method
allows the $z$-transform to be computed quickly at equally-spaced
points along spirally-shaped contours around the origin of the
$z$-plane \(em corresponding to signals of linearly increasing
complex frequency.  The spiral nature of these curves is not of
particular interest in speech processing.  What
.ul
is
of interest, though, is that the spiral can begin at any point
on
the $z=0$ axis, and its pitch can be set arbitrarily.
If we begin spiralling at $z=0.9$, say, and set the pitch
to zero, the contour becomes a circle inside the unit one, with
radius 0.9.  Such a circle is exactly what is needed to refine
formant resolution.
.sh "4.8  Pitch extraction"
.pp
The last section discussed how to characterize the vocal tract filter
in the source-filter model of speech production:  this one looks
at how the most important property of the source \(em that is, the
pitch period \(em can be derived.  In many ways pitch extraction
is more important from a practical point of view than is formant
estimation.  In a voice-output system, formant estimation is
only necessary if speech is to be stored in formant-coded form.
For linear predictive storage of speech, or for speech synthesis
from phonetics or text, formant extraction is unnecessary \(em
although of course general information about formant
frequencies and formant tracks in natural speech is needed
before a synthesis-from-phonetics system can be built.
However, knowledge of the pitch contour is needed for
many different purposes.  For example, compact encoding of
linearly predicted speech relies on the pitch being estimated and
stored as a parameter separate from the articulation.
Significant improvements in frequency analysis can be made by
performing pitch-synchronous Fourier transformations,
because the need to window is eliminated.
Many synthesis-from-phonetics systems require the pitch contour
for utterances to be stored rather computed from markers in the
phonetic text.
.pp
Another issue which is closely bound up with pitch extraction is
the voiced-unvoiced distinction.   A good pitch estimator ought to
fail when presented with aperiodic input such as an unvoiced
sound, and so give a reliable indication of whether the frame of
speech is voiced or not.
.pp
One method of pitch estimation, which uses the cepstrum, has been outlined
above.  It involves a substantial amount of computation,
and has a high degree of complexity.  However, if implemented
properly it gives excellent results, because the source-filter
structure of the speech is fully utilized.
Another method, using the
linear prediction residual, will be described in Chapter 6.
Again, this requires a great deal of computation of a fairly sophisticated
nature, and gives good results \(em although it relies on a
somewhat more
restricted version of the source-filter model than cepstral
analysis.
.rh "Autocorrelation methods."
The most reliable way of estimating the pitch of a periodic
signal which is corrupted by noise is to examine its
short-time autocorrelation function.
The autocorrelation of a signal $x(n)$ with lag $k$ is defined as
.LB
.EQ
phi (k) ~~ = ~~ sum from {n=- infinity} to infinity ~ x(n)x(n+k) .
.EN
.LE
If the signal is quasi-periodic, with slowly varying period,
a finite stretch of it can be isolated with a window
$w(i)$, which is 0 when $i$ is outside the range $[0,N)$.
Beginning this window at sample $m$ gives the windowed signal
.LB
.EQ
x(n)w(n-m),
.EN
.LE
whose autocorrelation,
the
.ul
short-time
autocorrelation of the signal $x$ at point $m$ is
.LB
.EQ
phi sub m (k)~ = ~~ sum from n ~ x(n)w(n-m)x(n+k)w(n-m+k) .
.EN
.LE
.pp
The autocorrelation function exhibits peaks at lags which correspond to
the pitch periods and multiples of it.  At such lags, the signal is in
phase with a delayed version of itself, giving high correlation.
The pitch of natural speech ranges about three octaves, from 50\ Hz (low-pitched men) to around
400\ Hz (children).  To ensure that at least two pitch cycles are seen, even at
the
low end, the window needs to be at least 40\ msec long, and the autocorrelation
function calculated for lags up to 20\ msec.  The peaks which occur at lags
corresponding to multiples of the pitch become smaller as the multiple
increases, because the speech waveform will change slightly and the pitch
period is not perfectly constant.  If signals at the high end of the pitch
range, 400\ Hz, are
viewed through a 40\ msec autocorrelation window, considerable smearing of
pitch resolution in the time domain is to be expected.  Finally, for unvoiced
speech, no substantial peaks of autocorrelation will occur.
.pp
If all deviations from perfect periodicity can be attributed to
additive, white, Gaussian noise, then it can be shown from
standard detection theory that autocorrelation methods are
appropriate for pitch identification.  Unfortunately, this is
certainly not the case for speech signals.  Although the
short-time autocorrelation of voiced speech exhibits peaks at
multiples of the pitch period, it is not clear that it is any
easier to detect these peaks in the autocorrelation function
than it is in the original time waveform!  To take a simple
example, if a signal contains a fundamental and in-phase first
and second harmonics,
.LB
.EQ
x(n)~ =~ a sin 2 pi fnT ~+~ b sin 4 pi fnT ~+~ c sin 6 pi fnT ,
.EN
.LE
then its autocorrelation function is
.LB
.EQ
phi (k) ~=~~ {a sup 2 ~cos~2 pi fkT~+~b sup 2 ~cos~2 pi
fkT~+~c sup 2 ~cos 2 pi fkT} over 2 ~ .
.EN
.LE
There is no reason to believe that detection of the fundamental
period of this signal will be any easier in the autocorrelation
domain than in the time domain.
.pp
The most common error of pitch detection by autocorrelation
analysis is that the periodicities of the formants are confused
with the pitch.  This typically leads to the repetition time
being identified as  $T sub pitch ~ +- ~ T sub formant1$,  where the
$T$'s are the periods of the pitch and first formant.  Fortunately,
there are simple ways of processing the signal non-linearly to
reduce the effect of formants on pitch estimation using autocorrelation.
.pp
One way
is to low-pass filter the
signal with a cut-off above the maximum pitch period, say 600
Hz.  However, formant 1 is often below this value.  A different
technique, which may be used in conjunction with filtering, is
to "centre-clip" the signal as shown in Figure 4.13.
.FC "Figure 4.13"
This
removes many of
the ripples which are associated with formants.  However, it
entails the use of an adjustable clipping threshold to cater for
speech of varying amplitudes.  Sondhi (1968), who introduced the
technique, set the clipping level at 30% of the maximum
amplitude.
.[
Sondhi 1968
.]
An alternative which achieves
much the same effect without the need to fiddle with thresholds,
is to cube the signal, or raise it to some other high (odd!)
power, before taking the autocorrelation.  This highlights the
peaks and suppresses the effect of low-amplitude parts.
.pp
For very accurate pitch detection, it is best to combine the evidence
from several different methods of analysis of the time waveform.
The autocorrelation function provides one source of evidence;
and the cepstrum provides another.
A third source comes from the time waveform itself.
McGonegal
.ul
et al
(1975) have described a semi-automatic method of pitch
detection which uses human judgement to make a final decision based upon these
three sources of evidence.
.[
McGonegal Rabiner Rosenberg 1975 SAPD
.]
This appears to provide highly accurate pitch contours at the expense of
considerable human effort \(em it takes an experienced user 30 minutes to
process each second of speech.
.rh "Speeding up autocorrelation."
Calculating the autocorrelation function is an
arithmetic-intensive procedure.  For large lags, it can best be
done using FFT methods; although there are simpler arithmetic
tricks which speed it up without going to such complexity.
However, with the availability of analogue delay lines using
charge-coupled devices, autocorrelation can now be done
effectively and cheaply by analogue, sampled-data, hardware.
.pp
Nevertheless, some techniques to speed up digital
calculation of short-time autocorrelations are in wide use.  It
is tempting to hard-limit the signal so that it becomes binary
(Figure 4.14(a)), thus eliminating multiplication.
.FC "Figure 4.14"
This can be
disastrous, however, because hard-limited speech is known to
retain considerable intelligibility and therefore the formant
structure is still there.  A better plan is to take
centre-clipped speech and hard-limit that to a ternary signal
(Figure 4.14(b)).  This simplifies the computation considerably
with essentially no degradation in performance (Dubnowski
.ul
et al,
1976).
.[
Dubnowski Schafer Rabiner 1976 Digital hardware pitch detector
.]
.pp
A different approach to reducing the amount of calculation is to
perform a kind of autocorrelation which does not use
multiplications.  The
"average magnitude difference function",
which is defined by
.LB
.EQ
d(k)~ = ~~ sum from {n=- infinity} to infinity ~ |x(n)-x(n+k)| ,
.EN
.LE
has been used for this purpose with some success (Ross
.ul
et al,
1974).
.[
Ross Schafer Cohen Freuberg Manley 1974
.]
It exhibits dips at pitch periods (instead of the peaks of the
autocorrelation function).
.rh "Feature-extraction methods."
Another possible way of extracting pitch in the time domain is to try to
integrate information from different sources to give reliable
pitch estimates.  Several features of the time
waveform can be defined, each of which provides an estimate of the pitch period,
and
an overall estimate can be obtained by majority vote.
.pp
For example, suppose that the only feature of the speech
waveform which is retained is the height and position of the
peaks, where a "peak" is defined by the simplistic criterion
.LB
$
x(n-1) ~<~ x(n)
$  and  $
x(n) $>$ x(n+1) .
$
.LE
Having found a peak which is thought to represent a pitch pulse,
one could define a "blanking period", based upon the current
pitch estimate, within which the next pitch pulse could not
occur.  When this period has expired, the next pitch pulse is
sought.  At first, a stringent criterion should be used for
identifying the next peak as a pitch pulse; but it can gradually be
relaxed if time goes on without a suitable pulse being
located.  Figure 4.15 shows a convenient way of doing this:  a
decaying exponential is begun at the end of the blanking period
and when a peak shows above, it is identified as a pitch pulse.
.FC "Figure 4.15"
One big advantage of this type of algorithm is that the data is
greatly reduced by considering peaks only \(em which can be
detected by simple hardware.  Thus it can permit real-time
operation on a small processor with minimal special-purpose
hardware.
.pp
Such a pitch pulse detector is exceedingly simplistic, and will
often identify the pitch incorrectly.  However, it can be used
in conjunction with other features to produce good pitch
estimates.  Gold and Rabiner (1969), who pioneered the
approach, used six features:
.[
Gold Rabiner 1969 Parallel processing techniques for pitch periods
.]
.LB
.NP
peak height
.NP
valley depth
.NP
valley-to-peak height
.NP
peak-to-valley depth
.NP
peak-to-peak height (if greater than 0)
.NP
valley-to-valley depth (if greater than 0).
.LE
The features are symmetric with regard to peaks and valleys.
The first feature is the one described above, and the second one works in
exactly the same way.
The third feature records the
height between each valley and the succeeding peak, and fourth
uses the depth between each peak and the succeeding valley.  The
purpose of the final two detectors is to eliminate secondary,
but rather large, peaks from consideration.  Figure 4.16 shows
the kind of waveform on which the other features might
incorrectly double the pitch, but the last two features identify
correctly.
.FC "Figure 4.16"
.pp
Gold and Rabiner also included the last two pitch estimates from each
feature detector.
Furthermore, for each feature, the present estimate
was added to the previous one to make a fourth, and the previous one to
the one before that to make a fifth, and all three were added together
to make a sixth; so that for each feature there were 6 separate estimates of
pitch.  The reason for this is that if three consecutive estimates of the
fundamental period are $T sub 0$, $T sub 1$ and $T sub 2$; then if some peaks are
being falsely identified, the actual period could be any of
.LB
.EQ
T sub 0 ~+~ T sub 1 ~~~~ T sub 1 ~+~ T sub 2 ~~~~
T sub 0 ~+~ T sub 1 ~+~ T sub 2 .
.EN
.LE
It is essential to do this, because
a feature of a given type can occur more than once in a pitch period \(em
secondary peaks usually exist.
.pp
Six features, each contributing six separate estimates, makes 36 estimates
of pitch in all.
An overall figure was obtained from this
set by selecting the most popular estimate (within some
pre-specified tolerance).  The complete scheme has been
evaluated extensively (Rabiner
.ul
et al,
1976) and compares
favourably with other methods.
.[
Rabiner Cheng Rosenberg McGonegal 1976
.]
.pp
However, it must be admitted that this procedure seems to be rather
.ul
ad hoc
(as are many other successful speech parameter estimation
algorithms!).  Specifically, it is not easy to predict what
kinds of waveforms it will fail on, and evaluation of it can
only be pragmatic.  When used to
estimate the pitch of musical
instruments and singers over a 6-octave range (40\ Hz to 2.5\ kHz),
instances were found where it failed dramatically (Tucker and Bates, 1978).
.[
Tucker Bates 1978
.]
This is, of
course, a much more difficult problem than pitch estimation for
speech, where the range is typically 3 octaves.
In fact, for speech the feature
detectors are usually preceded by
a low-pass filter to attenuate the myriad
of peaks
caused by higher formants, and this
is inappropriate for
musical applications.
.pp
There is evidence which shows that additional features can
assist with pitch identification.  The above features are all
based upon the signal amplitude, and could be described as
.ul
secondary
features derived from a single
.ul
primary
feature.  Other primary features can easily be defined.
Tucker and Bates (1978) used a centre-clipped waveform, and considered only
the peaks rising above the central region.
.[
Tucker Bates 1978
.]
They defined two
further primary features, in addition to the peak amplitude:  the
.ul
time width
of a peak (period for which it is
outside the clipping level), and its
.ul
energy
(again, outside the clipping level).  The primary
features are shown in Figure 4.17.
.FC "Figure 4.17"
Secondary features are
defined, based on these three primary ones, and pitch estimates
are made for each one.  A further innovation was to combine the
individual estimates on a way which is based upon
autocorrelation analysis, reducing to some degree the
.ul
ad-hocery
of the pitch detection process.
.sh "4.9  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "4.10  Further reading"
.pp
There are a lot of books on digital signal analysis, although in general
I find them rather turgid and difficult to read.
.LB "nn"
.\"Ackroyd-1973-1
.]-
.ds [A Ackroyd, M.H.
.ds [D 1973
.ds [T Digital filters
.ds [I Butterworths
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Here is the exception to prove the rule.
This book
.ul
is
easy to read.
It provides a good introduction to digital signal processing,
together with a wealth of practical design information on digital filters.
.in-2n
.\"Committee.I.D.S.P-1979-3
.]-
.ds [A IEEE Digital Signal Processing Committee
.ds [D 1979
.ds [T Programs for digital signal processing
.ds [I Wiley
.ds [C New York
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
This is a remarkable collection of tried and tested Fortran programs
for digital signal analysis.
They are all available from the IEEE in machine-readable form on magnetic
tape.
Included are programs for digital filter design, discrete Fourier transformation,
and cepstral analysis, as well as others (like linear predictive analysis;
see Chapter 6).
Each program is accompanied by a concise, well-written description of how
it works, with references to the relevant literature.
.in-2n
.\"Oppenheim-1975-4
.]-
.ds [A Oppenheim, A.V.
.as [A " and Schafer, R.W.
.ds [D 1975
.ds [T Digital signal processing
.ds [I Prentice Hall
.ds [C Englewood Cliffs, New Jersey
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is one of the standard texts on most aspects of digital signal processing.
It treats the $z$-transform, digital filters, and discrete Fourier transformation
in far more detail than we have been able to here.
.in-2n
.\"Rabiner-1975-5
.]-
.ds [A Rabiner, L.R.
.as [A " and Gold, B.
.ds [D 1975
.ds [T Theory and application of digital signal processing
.ds [I Prentice Hall
.ds [C Englewood Cliffs, New Jersey
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is the other standard text on digital signal processing.
It covers the same ground as Oppenheim and Schafer (1975) above,
but with a slightly faster (and consequently more difficult) presentation.
It also contains major sections on special-purpose hardware for
digital signal processing.
.in-2n
.\"Rabiner-1978-1
.]-
.ds [A Rabiner, L.R.
.as [A " and Schafer, R.W.
.ds [D 1978
.ds [T Digital processing of speech signals
.ds [I Prentice Hall
.ds [C Englewood Cliffs, New Jersey
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Probably the best single reference for digital speech analysis,
as it is for the time-domain encoding techniques of the last chapter.
Unlike the books cited above, it is specifically oriented to speech processing.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "5  RESONANCE SPEECH SYNTHESIZERS"
.ds RT "Resonance speech synthesizers
.ds CX "Principles of computer speech
.pp
This chapter considers the design of speech synthesizers which
implement a direct electrical analogue of
the resonance properties of the vocal tract by providing a filter for each
formant whose resonant frequency is to be controlled.  Another method is the
channel vocoder, with a bank of fixed filters whose gains are varied to match
the spectrum of the speech as described in Chapter 4.  This is not generally
used for synthesis from a written representation, however, because it is hard
to get good quality speech.  It
.ul
is
used sometimes for low-bandwidth
transmission and storage, for
it is fairly easy to analyse natural speech into fixed frequency bands.
A second alternative to the resonance synthesizer is the linear predictive
synthesizer, which at present is used quite extensively and is likely to become
even more popular.  This is covered in the next chapter.
Another alternative is the articulatory synthesizer, which
attempts to model the vocal tract directly, rather than
modelling the acoustic output from it.
Although, as noted in Chapter 2, articulatory synthesis holds a promise of
high-quality speech \(em for the coarticulation effects caused by tongue
and jaw inertia can be modelled directly \(em this has not yet been realized.
.pp
The source-filter model of speech production indicates that an electrical
analogue of the vocal tract can be obtained by considering the source
excitation and the filter that produces the formant frequencies separately.
This approach was pioneered by Fant (1960), and we shall present much of his
work in this chapter.
.[
Fant 1960 Acoustic theory of speech production
.]
There has been some discussion over whether the source-filter model really
is a good one, and some
synthesizers
explicitly introduce an element of
"sub-glottal coupling", which simulates the effect of the lung cavity
on the vocal tract transfer function during the periods when the glottis is
open (for an example see Rabiner, 1968).
.[
Rabiner 1968 Digital formant synthesizer JASA
.]
However, this is very much a low-order effect when considering
speech synthesized by rule from a written representation, for the software
which calculates parameter values to drive the synthesizer is a far greater
source of degradation in speech quality.
.sh "5.1  Overall spectral considerations"
.pp
Figure 5.1 shows the source-filter model of speech production.
.FC "Figure 5.1"
For voiced speech, the excitation source produces a waveform whose frequency
components decay at about 12\ dB/octave, as we shall see in a later section.
The excitation passes into the vocal tract filter.  Conceptually, this can best
be viewed as an infinite series of formant filters, although for implementation
purposes only the first few are modelled explicitly and the effect of the rest
is lumped together into a higher-formant compensation network.  In either case
the overall frequency profile of the filter is a flat one, upon which humps are
superimposed at the various formant frequencies.  Thus the output of the
vocal tract filter falls off at 12\ dB/octave just as the input does.
However, measurements of actual speech show a 6\ dB/octave decay with increasing
frequency.  This is explained by the effect of radiation of speech from the
lips, which in fact has a "differentiating" action, producing a 6\ dB/octave
rise in the frequency spectrum.  This 6\ dB/octave lift is similar to that
provided by a treble boost control on a radio or amplifier.  Speech synthesized
without it sounds unnaturally heavy and bassy.
.pp
These overall spectral shapes, which are derived from considering the human
vocal tract, are summarized in the upper annotations in Figure 5.1.  But there
is no real necessity for a synthesizer to model the frequency characteristics
of the human vocal tract at intermediate points:  only the output speech is of
any concern.  Because the system is a linear one, the filter blocks in the
figure can be shuffled around to suit engineering requirements.  One such
requirement is the desire to minimize internally-generated noise in the
electrical implementation, most of which will arise in the vocal tract filter
(because it is much more complicated than the other components).  For this
reason an excitation source with a flat spectrum is often preferred, as shown
in the lower annotations.  This can be generated either by taking the desired
glottal pulse shape, with its 12\ dB/octave fall-off, and passing it through a
filter giving 12\ dB/octave lift at higher frequencies; or, if the pulse shape
is to be stored digitally, by storing its second derivative instead.
Then the radiation compensation, which is now more properly called
"spectral equalization", will comprise a 6\ dB/octave fall-off to give the
required trend in the output spectrum.
.pp
For a given pitch period, this scheme yields exactly the same spectral
characteristics as the original system which modelled the human vocal tract.
However, when the pitch varies there will be a difference, for sounds with
higher excitation frequencies will be attenuated by \-6\ dB/octave in the new
system and +6\ dB/octave in the old by the final spectral equalization.
In practice, the pitch of the human voice lies quite low in the frequency
region \(em usually below 400\ Hz \(em and if all filter characteristics begin
their roll-off at this frequency the two systems will be the same.  This
simplifies the implementation with a slight compromise in its accuracy in
modelling the spectral trend of human speech, for the overall \-6\ dB/octave
decay actually begins at a frequency of around 100\ Hz.  If this is
implemented, some adjustment will need to be made to the amplitudes to ensure
that high-pitched sounds are not attenuated unduly.
.pp
The discussion so far pertains to voiced speech only.  The source spectrum of
the random excitation in unvoiced sounds is substantially flat, and combines
with the radiation from the lips to give a +6\ dB/octave rise in the output
spectrum.  Hence if spectral equalization is changed to \-6\ dB/octave to
accomodate a voiced excitation with flat spectrum, the noise source should
show a 12\ dB/octave rise to give the correct overall effect.
.sh "5.2  The excitation sources"
.pp
In human speech, the excitation source for voiced sounds is produced by two
flaps of skin called the "vocal cords".  These are blown apart by pressure from
the lungs.  When they come apart the pressure is relieved, and the muscles
tensioning the skin cause the flaps to come together again.  Subsequently, the
lung pressure \(em called "sub-glottal pressure" \(em builds up once more and the
process is repeated.  The factors which influence the rate and nature of
vibration are muscular tension of the cords and the sub-glottal pressure.  The detail
of the excitation has considerable importance to speech synthesis because it
greatly influences the apparent naturalness of the sound produced.  For example,
if you have inflamed vocal cords caused by laryngitis the sound quality
changes dramatically.  Old people who do not have proper muscular control over
their vocal cord tension produce a quavering sound.  Shouted speech can easily
be distinguished from quiet speech even when the volume cue is absent \(em you
can verify this by fiddling with the volume control of a tape recorder \(em because
when shouting, the vocal cords stay apart for a much smaller fraction of the
pitch cycle than at normal volumes.
.rh "Voiced excitation in natural speech."
There are two basic ways to examine the shape of the excitation source in
people.  One is to use a dentist's mirror and high-speed photography to observe
the vocal cords directly.  Although it seems a lot to ask someone to speak
naturally with a mirror stuck down the back of his throat, the method has been
used and photographs can be found, for example, in Flanagan (1972).
.[
Flanagan 1972 Speech analysis synthesis and perception
.]
The second
technique is to process the acoustic waveform digitally, identifying the
formant positions and deducting the formant contributions from the waveform by
filtering.  This leaves the basic excitation waveform, which can then be
displayed.  Such techniques lead to excitation shapes like those sketched in
Figure 5.2, in which the gradual opening and abrupt closure of the vocal cords
can easily be seen.
.FC "Figure 5.2"
.pp
It is a fact that if a periodic function has one or more discontinuities, its frequency
spectrum will decay at sufficiently high frequencies at the rate of 6\ dB/octave.
For example, the components of the square wave
.LB
$
g(t) ~~ = ~~ mark 0
$  for $
0 <= t < h
$
.br
$
lineup 1
$  for $
h <= t < b
$
.LE
can be calculated from the Fourier series
.LB
.EQ
G(r) ~~ = ~~ 1 over b ~ integral from 0 to b ~g(t)~e sup {-j2 pi rt/b} ~dt
~~ = ~~ j over {2 pi r} ~e sup {-j2 pi rh/b} ,
.EN
.LE
so $|G(r)|$ is proportional to $1/r$, and the change in one octave is
.LB
.EQ
20~log sub 10 ~ |G(2r)| over |G(r)|
~~=~~20~log sub 10 ~ 1 over 2
~~ = ~ 
.EN
\-6\ dB.
.LE
However, if the discontinuities are ones of slope only, then the asymptotic decay
at high frequencies is 12\ dB/octave.  Thus the glottal excitation of Figure 5.2
will decay at this rate.
Note that it is not the
.ul
number
but the
.ul
type
of discontinuities which are important in determining the asymptotic spectral
trend.
.rh "Voiced excitation in synthetic speech."
There are several ways that glottal excitation can be simulated in a synthesizer,
four of which are shown in Figure 5.3.
.FC "Figure 5.3"
The square pulse and the sawtooth pulse
both exhibit discontinuities, and so will have the wrong asymptotic rate of
decay (6\ dB/octave instead of 12\ dB/octave).  A better bet is the triangular
pulse.  This has the correct decay, for there are only discontinuities of slope.
However, although the asymptotic rate of decay is of first importance, the fine
structure of the frequency spectrum at the lower end is also significant, and
the fact that there are two discontinuities of slope instead of just one in the
natural waveform means that the spectra cannot match closely.
.pp
Rosenberg (1971) has investigated several different shapes using listening
tests, and he found that the polynomial approximation sketched in Figure 5.3
was preferred by listeners.
.[
Rosenberg 1971
.]
This has one slope discontinuity, and comprises
three sections:
.LB
$g(t) ~~ = ~~ 0$  for $0 <= t < t sub 1$    (flat during the period of closure)
.sp
$g(t) ~~ = ~~ A~ u sup 2 (3 - 2u) $,	where
$u ~=~ {t-t sub 1} over {t sub 2 -t sub 1} $ ,    for
$t sub 1 <= t < t sub 2$  (opening phase)
.sp
.sp
$g(t) ~~ = ~~ A~ (1 - v sup 2 )$,	where
$v ~=~ {t-t sub 2} over {b-t sub 2} $ ,    for
$t sub 2 <= t < b$    (closing phase).
.LE
It is easy to see that the joins between the first and second section, and
between the second and third section, are smooth; but that the slope of the third
section at the end of the cycle when $t=b$ is
.LB
.EQ
dg over dt ~~ = ~~ -~ 2A.
.EN
.LE
$A$ is the maximum amplitude of the pulse, and is reached when $t=t sub 2$.
.pp
A much simpler glottal pulse shape to implement is the filtered impulse.
Passing an impulse through a filter with characteristic
.LB
.EQ
1 over {(1+sT) sup 2}
.EN
.LE
imparts a 12\ dB/octave decay after frequency $1/T$.  This gives a pulse shape of
.LB
.EQ
g(t) ~~ = ~~ A~ t over T ~e sup {1-t/T} ,
.EN
.LE
which is sketched in Figure 5.4.
.FC "Figure 5.4"
The pulse is the wrong way round in time
when compared with the desired one; but this is not important under most
listening conditions because phase differences are not noticeable (this
point is discussed further below).
The maximum is reached when $t=T$ and has
height $A$.  The value zero is never actually attained, for the decay to it
is asymptotic, and if the slight discontinuity between pulses shown in the
Figure is left, the asymptotic rate of decay of the frequency spectrum will
be 6\ dB/octave rather than 12\ dB/octave.  However, in a real implementation
involving filtering an impulse there will be no such discontinuity, for the
next pulse will start off where the last one ended.
.pp
This seems to be an attractive scheme because of its simplicity,
and indeed is sometimes used in speech synthesis.  However, it does not have
the right properties when the pitch is varied, for in real glottal
waveforms the maximum occurs at a fixed
.ul
fraction
of the period, whereas the filtered impulse's maximum is at a fixed time, $T$.
If $T$ is chosen to make the system correct at high pitch frequencies (say
400\ Hz), then the pulse will be much too narrow at low pitches and sound rather
harsh.  The only solution is to vary the filter parameters with the pitch,
leading to complexity again.
.pp
Holmes (1973) has made an extensive study of the effect of the glottal
waveshape on the naturalness of high-quality synthesized speech.
.[
Holmes 1973 Influence of glottal waveform on naturalness
.]
He employed a rather special speech synthesizer, which provides far more
comprehensive and sophisticated control than most.  It was driven by parameters
which were extracted from natural utterances by hand \(em but the process of
generating and tuning them took many months of a skilled person's time.
By using the pulse shape
extracted from the natural utterance, he found that synthetic and natural
versions could actually be made indistinguishable to most people, even under high-quality
listening conditions using headphones.  Performance dropped quite drastically
when one of Rosenberg's pulse shapes, similar to the three-section one given
above, was used.  Holmes also investigated phase effects and found that whilst
different pulse shapes with identical frequency spectra could easily be
distinguished when listening over headphones, there was no perceptible difference
if the listener was placed at a comfortable distance from a loudspeaker in
a room.  This is attributable to the fact that the room itself imposes a
complex modification to the phase characteristics of the speech signal.
.pp
Although a great deal of care must be taken with the glottal pulse shape for very
high-quality synthetic speech, for speech synthesized by rule from a written
representation the degradation which stems from incorrect control of the
synthesizer parameters is much greater than that caused by using a slightly
inferior glottal pulse.  The triangular pulse illustrated in Figure 5.3
has been found quite satisfactory for speech synthesis by rule.
.rh "Unvoiced excitation."
Speech quality is much less sensitive to the characteristics of the unvoiced
excitation.  Broadband white noise will serve admirably.  It is quite
acceptable to generate this digitally, using a pseudo-random feedback shift
register.  This gives a bit sequence whose autocorrelation is zero except at
multiples of the repetition length.  The repetition length
can easily be made as long as the number of states in the shift
register (less one) \(em in this case, the configuration is called
"maximal length" (Gaines, 1969).
.[
Gaines 1969 Stochastic computing advances in information science
.]
For example, an 18-bit maximal-length shift register will repeat
every $2 sup 18 -1$ cycles.  If the bit-stream is used as a source of analogue
noise, the autocorrelation function will have triangular parts whose width is
twice the clock period, as shown in Figure 5.5.
.FC "Figure 5.5"
According to a well-known
result (the Weiner-Kinchine theorem; see for example Chirlian, 1973)
the power density of the frequency
spectrum is the same as the Fourier transform of the autocorrelation function.
.[
Chirlian 1973
.]
Since the feedback shift register gives a periodic autocorrelation function,
its transform is a Fourier series.  The $r$'th frequency component is
.LB
.EQ
G(r) ~~ = ~~ {R sup 2} over {4 pi sup 2 r sup 2 T}
~(1~-~~cos~{{2 pi rT} over R}) ~ .
.EN
.LE
Here, $T$ is the clock period and  $R=(2 sup N -1)T$  is the repetition time of
an $N$-bit shift register.
.pp
The spectrum is a bar spectrum, with components spaced
at
.LB
$
{1 over R}~~=~~{1 over {(2 sup N -1)T}}$   Hz.
.LE
These are very close together \(em with $N=18$ and
sampling at 20\ kHz (50\ $mu$sec)
the spacing becomes under 0.1\ Hz \(em and so it is reasonable to treat the
spectrum as continuous, with
.LB
.EQ
G(f) ~~ = ~~ 1 over {4 pi sup 2 f sup 2 T}~~(1~-~cos 2 pi fT) .
.EN
.LE
This spectrum is sketched in Figure 5.6(a), and the measured result of an actual
implementation in Figure 5.6(b).
.FC "Figure 5.6"
The 3\ dB point occurs when
.LB
.EQ
{G(f) over G(0)} ~~=~~{1 over 2} ~ ,
.EN
.LE
and $G(0)$ is $T/2$.  Hence, at the 3\ dB point,
.LB
.EQ
{1~-~cos 2 pi fT} over {2 pi sup 2 f sup 2 T sup 2}
~~ = ~~ 1 over 2 ~ ,
.EN
.LE
which has solution  $f=0.45/T$.
Thus a pseudo-random shift register generates
noise whose spectrum is substantially flat up to half the clock frequency.
Anything over 10\ kHz is therefore a suitable clocking rate for speech-quality
noise.  Choose 20\ kHz to err on the conservative side.  If the repetition occurs
in less than 3 or 4 seconds, it can be heard quite clearly; but above this figure
it is not noticeable.  An 18-bit shift register clocked at 20\ kHz repeats
every  $(2 sup 18 -1)/20000 ~ = ~ 13$ seconds, which is more than adequate.
.sh "5.3  Simulating vocal tract resonances"
.pp
The vocal tract, from glottis to lips, can be modelled as an unconstricted
tube of varying cross-section with no side branches and no sub-glottal coupling.
This has an all-pole transfer function, which can be written in the form
.LB
.EQ
H(s) ~~ = ~~
{w sub 1 sup 2} over {s sup 2 ~+~ b sub 1 s ~+~ w sub 1 sup 2}
~.~{w sub 2 sup 2} over {s sup 2 ~+~ b sub 2 s ~+~ w sub 2 sup 2} ~~ .~ .~ .
.EN
.LE
There is an unspecified (conceptually infinite) number of terms in the
product.  Each of them produces a peak in the energy spectrum,
and these are the formants we observed in Chapter 2.
.pp
Formants appear even in an over-simplified
model of the tract as a tube of uniform cross-section, with a sound source
at one end (the larynx) and open at the other (the lips).
This extremely crude model was discussed in Chapter 2, and surprisingly,
perhaps, it gives a good approximation to the observed formant frequencies
for a neutral, relaxed vowel such as that in
.ul
"a\c
bove".
.pp
Speech is made by varying the postures of the various organs of the vocal tract.
Different vowels, for example, result largely from different tongue positions
and lip postures.  Naturally, such physical changes alter the frequencies of the
resonances, and successful automatic speech synthesis depends upon
successful movement of the formants.  Fortunately, only the first three or
four resonances need to be altered even for extremely realistic synthesis, and
virtually all existing synthesizers provide control over these formants only.
.rh "Analysis of a single formant."
Each formant is modelled as a second-order resonance, with transfer function
.LB
.EQ
H(s) ~~ = ~~ {w sub c sup 2} over {s sup 2 ~+~ b s ~+~ w sub c sup 2} ~ .
.EN
.LE
As will be shown below, $w sub c$ is the nominal resonant frequency in
radians/s, and $b$ is the
approximate 3\ dB bandwidth of the resonance.  The term $w sub c sup 2$ in the
numerator adjusts the gain to be unity at DC ($s=0$).
.pp
To calculate the frequency response of the formant, write  $s=jw$.  Then the
energy spectrum is
.LB
.EQ
|H(jw)| sup 2 ~~ mark = ~~
{w sub c sup 4} over {(w sup 2 - w sub c sup 2 ) sup 2 ~+~ b sup 2 w sup 2}
.EN
.sp
.sp
.EQ
lineup = ~~
{w sub c sup 4} over
{[w sup 2 ~-~(w sub c sup 2 -~ {b sup 2} over 2 )] sup 2 ~~
+~~b sup 2 (w sub c sup 2~-~{{b sup 2} over 4})} ~ .
.EN
.sp
.LE
This reaches a maximum when the squared term in the denominator of the second
expression is zero, namely when  $w=(w sub c sup 2 ~-~ b sup 2 /2) sup 1/2$.
However,
formant bandwidths are low compared with their centre frequencies, and so to
a good approximation the peak occurs
at  $w=w sub c$  and is of amplitude  $w sub c /b$,  that
is,  $10~log sub 10 w sub c /b$\ dB above the DC gain.
At frequencies higher than the peak the energy falls off as $1/w sup 4$,
a factor of 1/16 for each doubling
in frequency, and so the asymptotic decay is 12\ dB/octave.
.pp
At the points which are 3\ dB below the peak,
.LB
.EQ
|H(jw sub 3dB )| sup 2 ~~ = ~~
1 over 2 ~|H(jw sub max )| sup 2 ~~ = ~~
1 over 2 ~ times ~ {w sub c sup 2} over {b sup 2} ~ ,
.EN
.LE
and it is easy to show that
this is satisfied by  $w sub 3dB ~ = ~ w sub c ~ +- ~ b/2$  to a
good approximation (neglecting higher powers of $b/w sub c )$.  Figure 5.7
summarizes the shape of an individual formant resonance.
.FC "Figure 5.7"
.pp
The bandwidth of a formant is fairly constant, regardless of the formant
frequency.  This makes the formant filter a slightly unusual one:  most
engineering applications which use variable-frequency resonances require
the bandwidth to be a constant proportion of the resonant
frequency \(em the ratio
$w sub c /b$, often called the "$Q$" of the filter, is to be constant.
For formants, we wish the Q to increase linearly with resonant frequency.
Since the amplitude gain of the formant at resonance is $w sub c /b$,
this peak gain increases as the formant frequency is increased.
.pp
Although it is easy to measure formant frequencies on a spectrogram
(cf Chapter 2),
it is not so easy to measure bandwidths accurately.  One rather unusual method
was reported by van den Berg (1955), who took a subject who had had a partial
laryngectomy, an operation which left an opening into the vocal tract near
the larynx position.  Into this he inserted a sound source and made a
swept-frequency calibration of the vocal tract!
.[
Berg van den 1955
.]
Almost as bizarre is a
technique which involves setting off a spark inside the mouth of a subject
as he holds his articulators in a given position.
.pp
The results of several different kinds of experiment are reported by Dunn (1961),
and are summarized in Table 5.1, along with the formant frequency ranges.
.[
Dunn 1961
.]
.RF
.in+0.5i
.ta 1.7i +2.5i
.nr x1 (\w'range of formant'/2)
.nr x2 (\w'range of bandwidths'/2)
	\h'-\n(x1u'range of formant	\h'-\n(x2u'range of bandwidths
.nr x1 (\w'frequencies (Hz)'/2)
.nr x2 (\w'as measured in different'/2)
	\h'-\n(x1u'frequencies (Hz)	\h'-\n(x2u'as measured in different
.nr x1 (\w'experiments (Hz)'/2)
		\h'-\n(x1u'experiments (Hz)
.nr x1 (\w'0000 \- 0000'/2)
.nr x2 (\w'000 \- 000'/2)
.nr x0 2.5i+(\w'range of formant'/2)+(\w'as measured in different'/2)
.nr x3 (\w'range of formant'/2)
	\h'-\n(x3u'\l'\n(x0u\(ul'
.sp
formant 1	\h'-\n(x1u'\0100 \- 1100	\h'-\n(x2u'\045 \- 130
formant 2	\h'-\n(x1u'\0500 \- 2500	\h'-\n(x2u'\050 \- 190
formant 3	\h'-\n(x1u'1500 \- 3500	\h'-\n(x2u'\070 \- 260
	\h'-\n(x3u'\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in-0.5i
.MT 2
Table 5.1  Different estimates of formant bandwidths, with range of
formant frequencies for reference
.TE
Note that the bandwidths really are narrow compared with the resonant frequencies
of the filters, except at the lower end of the formant 1 range.  Choosing the
lowest bandwidth estimate leads to an amplification factor at resonance of 50 for formant 2
when its frequency is at the top of its range; and formant 3 happens to give
the same value.
.rh "Series synthesizers."
The simplest realization of the vocal tract filter is a chain of formant
filters in series, as illustrated in Figure 5.8.
.FC "Figure 5.8"
This leads to particular difficulties if the frequencies of two formants
stray close together.  The worst case occurs if formants 2 and 3 have the
same resonant frequencies, at the top of the range of formant 2, namely 2500\ Hz.
In this case, and if the bandwidths of the formants are set to the lowest
estimates, a combined amplification factor
of  $(2500/50) times (2500/70)=1800$  is
obtained at the point of resonance \(em that is,
65\ dB above the DC value.  This is enough
to tax most analogue implementations, and can evoke clipping in the formant
filters, with a very noticeable effect on speech quality.  This
extreme case will not occur during synthesis of realistic speech, for
although the formant
.ul
ranges
overlap, the values for any particular (human) sound will not coincide exactly.  However,
it illustrates the difficulty of designing a series synthesizer which copes
sensibly with arbitrary parameter settings, and explains why designers often
choose formant bandwidths in the top half of the ranges given in Table 5.1.
.pp
The problem of excessive amplification within a series synthesizer can be
alleviated to a small extent by choosing carefully the order in which the
filters are placed in the chain.  In a linear system, of course, the order in
which the components occur does not matter.
In physical implementations, however, it is advantageous to minimize extreme
amplification at intermediate points.  By placing the formant 1 filter between
formants 2 and 3, the formant 2 resonance is attenuated somewhat before it
reaches formant 3.  Continuing with the extreme example above, where both
formants 2 and 3 were set to 2500\ Hz; assume that formant 1 is at its
nominal value of 500\ Hz.  It provides attenuation at approximately 12\ dB/octave
above this, and so at the formant 2 peak, 2.3\ octaves higher, the attenuation
is 28\ dB.  Thus the gain at 2500\ Hz,
which is $20 ~ log sub 10 ~ 2500/50 ~ = ~ 34$\ dB after
passing through the formant 2 filter, is reduced to 6\ dB by formant 1, only
to be increased by $20 ~ log sub 10 ~ 2500/70 ~ = ~ 31$\ dB to
a value of 37\ dB by formant 3.
This avoids the extreme 65\ dB gain of formants 2 and 3 combined.
.pp
Figure 5.8 shows only three formant filters modelled explicitly.
The effect of the rest \(em and they do have an effect, although it is small
at low frequencies \(em is
incorporated by lumping them together into the "higher-formant correction" filter.
To calculate the characteristics of this filter, assume that the lumped
formants have the values given by the simple uniform-tube model of Chapter 2,
namely 3500\ Hz for formant 4, 4500\ Hz for formant 5, and, in general,
$500(2n-1)$\ Hz for formant $n$.  The effect of each of these on the spectrum is
.LB
.EQ
10~ log sub 10  {w sub n sup 4} over {(w sup 2 ~-~w sub n sup 2 ) sup 2
~~+~~b sub n sup 2 w sup 2}
~~ = ~~ -~ 10~ log sub 10 ~[(1~-~~{{w sup 2} over {w sub n sup 2}}) sup 2
~~+~~ {{b sub n sup 2 w sup 2} over {w sub n sup 4}}]
.EN
dB,
.LE
following from what was calculated above.
We will have to approximate this by assuming that
$b sub n sup 2 /w sub n sup 2$ is
negligible \(em this is quite reasonable for these higher formants because
Table 5.1 shows that the bandwidth does not increase in proportion to the
formant frequency range \(em and approximate the logarithm by the first
term of its series expansion:
.LB
.EQ
-10 ~ log sub 10 ~ (1~-~~{{w sup 2} over {w sub n sup 2}}) sup 2
~~ = ~~ -20~ log sub 10 ~ e ~ log sub e 
(1~-~~{{w sup 2} over {w sub n sup 2}})
~~ = ~~ 20~ log sub 10 ~ e ~ times ~ {w sup 2} over {w sub n sup 2} ~ .
.EN
.LE
.pp
Now the total effect of formants 4, 5, ... at frequency $f$\ Hz (as distinct
from $w$\ radians/s) is
.LB
.EQ
20~ log sub 10 ~ e ~ times ~ sum from n=4 to infinity
~{{f sup 2} over {500 sup 2 (2n-1) sup 2}} ~ .
.EN
.LE
This expression is
.LB
.EQ
20~ log sub 10 ~ e ~ times ~
{{f sup 2} over {500 sup 2}}~~(~sum from n=1 to infinity
~{1 over {(2n-1) sup 2}} ~~-~~ sum from n=1 to 3 ~{1 over {(2n-1) sup 2}}~)
~ .
.EN
.LE
The infinite sum can actually be calculated in closed form, and is equal
to  $pi sup 2 /8$.  Hence the total correction is
.LB
.EQ
20~ log sub 10 ~ e ~ times {{f sup 2} over {500 sup 2}}
~~(~{pi sup 2} over 8 ~~-~~ sum from n=1 to 3 ~{1 over {(2n-1) sup 2}}~)
~~ = ~~ 2.87 times 10 sup -6 f sup 2
.EN
dB.
.LE
.pp
Although this may at first seem to be a rather small correction,
it is in fact 72\ dB when
$f=5$\ kHz!  On further reflection this is not an unreasonable figure, for the
12\ dB/octave decays contributed by formants 1, 2, and 3 must all be annihilated
by the higher-formant correction to give an overall flat spectral trend.
In fact, formant 1 will contribute
12\ dB/octave from 500\ Hz (3.3\ octaves to 5\ kHz, representing 40\ dB); formant
2 will contribute 12\ dB/octave from 1500\ Hz (1.7\ octaves to 5\ kHz, representing
21\ dB); and formant 3 will contribute 12\ dB/octave from 2500\ Hz (1\ octave to 5\ kHz,
representing 12\ dB).
These sum to 73\ dB.
.pp
If the first five formants are synthesized explicitly instead of just the
first three, the correction is
.LB
.EQ
20~ log sub 10 ~ e ~ times ~ {{f sup 2} over {500 sup 2}}
~~(~{pi sup 2} over 8 ~-~~ sum from n=1 to 5 ~{1 over {(2n-1) sup 2}}~)
~~ = ~~ 1.73 times 10 sup -6  f sup 2
.EN
dB,
.LE
giving a rather more reasonable value of 43\ dB when $f=5$\ kHz.  In actual
implementations, fixed filters are sometimes included explicitly for
formants 4 and 5.  Although this lowers the gain of the higher-formant
correction filter, the total amplification at 5\ kHz of the combined correction
is still 72\ dB.  If one is less demanding and aims for a synthesizer that
produces a correct spectrum only up to 3.5\ kHz, it is 35\ dB.
This places quite stringent requirements on the preceding formant filters if
the stray noise that they generate internally is not to be amplified to
perceptible magnitudes by the correction filter at high frequencies.
.pp
Explicit inclusion of fixed filters for formants 4 and 5 undoubtedly improves
the accuracy of the higher-formant correction.  Recall that the above derivation
of the correction filter characteristic used the first-order approximation
.LB
.EQ
log sub e (1~-~{{w sup 2} over {w sub n sup 2}})
~~ = ~~ -~ {w sup 2} over {w sub n sup 2} ~ ,
.EN
.LE
which is only valid if $w << w sub n$.
Thus it only holds at frequencies less than
the highest explicitly synthesized formant,
and so with formants 4 (3.5\ kHz) and
5 (4.5\ kHz) included a reasonable correction should be obtained for
telephone-quality speech.  However, detailed analysis with a second-order
approximation shows that the coefficient of the neglected term is in fact
small (Fant, 1960).
.[
Fant 1960 Acoustic theory of speech production
.]
A second, perhaps more compelling, reason for explicitly
including a couple of fixed formants is that the otherwise enormous amplification
provided by the correction can be distributed throughout the formant chain.
We saw earlier why there is reason to prefer the
order F3\(emF1\(emF2 over F1\(emF2\(emF3.
With explicit formants 4 and 5, a suitable order which helps
to keep the amplification at intermediate points in the chain within reasonable
bounds is F3\(emF5\(emF2\(emF4\(emF1.
.rh "Parallel synthesizers."
A series synthesizer models the vocal tract resonances by a chain of formant
filters in series.  A parallel synthesizer utilizes a parallel connection of
filters as illustrated in Figure 5.9.
.FC "Figure 5.9"
.pp
Consider a parallel combination of two formants with individually-controllable
amplitudes.  The combined transfer function is
.LB
.EQ
H(s) ~~ mark = ~~ {A sub 1 w sub 1 sup 2} over
{s sup 2 ~+~ b sub 1 s ~+~ w sub 1 sup 2}
~~+~~{A sub 2 w sub 2 sup 2} over {s sup 2 ~+~ b sub 2 s ~+~ w sub 2 sup 2}
.EN
.sp
.sp
.EQ
lineup = ~~ { (A sub 1 w sub 1 sup 2 + A sub 2 w sub 2 sup 2 )s sup 2
~+~(A sub 1 b sub 2 w sub 1 sup 2 + A sub 2 b sub 1 w sub 2 sup 2 )s
~+~ (A sub 1 +A sub 2 )w sub 1 sup 2 w sub 2 sup 2 }
over
{ (s sup 2 ~+~b sub 1 s~+~w sub 1 sup 2 )
(s sup 2 ~+~b sub 2 s~+~w sub 2 sup 2 ) }
.EN
.LE
If the formant bandwidths $b sub 1$ and $b sub 2$
are equal and the amplitudes are
chosen as
.LB
.EQ
A sub 1 ~~=~~ {w sub 2 sup 2} over {w sub 2 sup 2 -w sub 1 sup 2}
~~~~~~~~
A sub 2 ~~=~~-~ {w sub 1 sup 2} over {w sub 2 sup 2 -w sub 1 sup 2} ~ ,
.EN
.LE
then the transfer function becomes the same as that of a two-formant series synthesizer,
namely
.LB
.EQ
H(s) ~~ = ~~ {w sub 1 sup 2} over {s sup 2 ~+~ b sub 1 s ~+~ w sub 1 sup 2}
~ . ~{w sub 2 sup 2} over {s sup 2 ~+~ b sub 2 s ~+~ w sub 2 sup 2} ~ .
.EN
.LE
The argument can be extended to any number of formants, under the assumption
that the formant bandwidths are equal.  Note that the signs of $A sub 1$
and $A sub 2$
differ:  in general the formant amplitudes for a parallel synthesizer alternate
in sign.
.pp
In theory, therefore, it would be possible to use five parallel formants to
model a five-formant series synthesizer exactly.  Then the same higher-formant
correction filter would be needed for the parallel synthesizer as for the
series one.  If the formant amplitudes were set slightly incorrectly, however,
the five filters would not combine to give a total of 60\ dB/octave high-frequency
decay above the resonances.  It is easy to see this in the context of the
simplified two-formant combination above:  if the amplitudes were not chosen
exactly right then the $s sup 2$
term in the numerator would not be quite zero.
Then, the decay in the two-formant combination would be \-12\ dB/octave instead
of \-24\ dB/octave, and in the five-formant case the decay would in fact still be
\-12\ dB/octave.  Advantage can be taken of this to equalize the levels
within the synthesizer so that large amplitude variations do not occur.
This can best be done by associating relatively low-gain fixed correction filters
with each formant instead of providing one comprehensive correction to the
combined spectrum:  these are shown in Figure 5.9.
Suitable correction filters
have been determined empirically by Holmes (1972).
.[
Holmes 1972 Speech synthesis
.]
They provide a 6\ dB/octave
lift above 640\ Hz for formant 1, and 6\ dB/octave lift above 300\ Hz for formant
2.  Formants 3 and 4 are uncorrected, whilst for formant 5 the correction begins
as a 6\ dB/octave decay above 600\ Hz and increases to an 18\ dB/octave decay
above 5.5\ kHz.
.pp
The disadvantage of a parallel synthesizer is that the amplitudes of the
formants must be specified as well as their frequencies.  (Furthermore, the
formant bandwidths should all be equal, but they are often chosen to be such
in series synthesizers because of the uncertainty as to their exact
values.)  However, the extra amplitude parameters clearly give greater
control over the frequency spectrum of the synthesized speech.
.pp
A good example of how this extra control can usefully be exploited is the
synthesis of nasal sounds.
Nasalization introduces a cavity parallel to the oral tract, as illustrated
in Figure 5.10, and this causes zeros in the transfer function.
.FC "Figure 5.10"
It is as if two different copies of the vocal tract transfer function, one for
the oral and the other for the nasal passage, were added
together.  We have seen the effect of this above when considering parallel
synthesis.  The combination
.LB
.EQ
H(s) ~~ = ~~ {A sub 1 w sub o sup 2} over
{s sup 2 ~+~ b sub o s ~+~ w sub o sup 2}
~~+~~{A sub 2 w sub n sup 2}
over {s sup 2 ~+~ b sub n s ~+~ w sub n sup 2} ~ ,
.EN
.LE
where the subscript "$o$" stands for oral and "$n$" for nasal,
produces zeros in the
numerator (unless the amplitudes are carefully adjusted to avoid them).
These cannot be modelled by a series synthesizer, but they obviously can be
by a parallel one.
.pp
Although they are certainly needed for accurate imitation of human speech,
transfer function zeros to simulate nasal sounds are not essential for
synthesis of intelligible English.  It is not difficult to get a sound
like a nasal consonant
(\c
.ul
n,
or
.ul
m\c
)
with an all-pole synthesizer.
Nevertheless, it is certainly true that a parallel synthesizer gives better
.ul
potential
control over the spectrum than a series one.  Whether the added flexibility
can be used properly by a synthesis-by-rule computer program is another matter.
.rh "Implementation of formant filters."
Formant filters can be built in either analogue or digital form.  A
second-order resonance is needed, whose centre frequency can be controlled
but whose bandwidth is fixed.  If the control can be arranged as two
tracking resistors, then the simple analogue configuration of Figure 5.11,
with two operational amplifiers, will suffice.
.FC "Figure 5.11"
.pp
The transfer function of this arrangement is
.LB
.EQ
- ~~ { 1/C sub 1 R sub 1 C sub 2 R sub 2 } over
{ s sup 2 ~~+~~ {1 over {C sub 2 R sub 2}}~s
~~+~~{1 over {C sub 1 R' sub 1 C sub 2 R sub 2 }}} ~ ,
.EN
.LE
which characterizes it as a low-pass resonator with DC gain
of  $- R' sub 1 /R sub 1 $,  bandwidth of  $1/2 pi C sub 2 R sub 2$\ Hz,  and
centre frequency of  $1/2 pi (C sub 1 R' sub 1 C sub 2 R sub 2 ) sup 1/2$\ Hz.
Tracking $R' sub 1$ with $R sub 1$ ensures that the DC gain remains constant,
and that the centre frequency follows  $R sub 1 sup -1/2$.  Moreover,
neither is especially sensitive to slight departures from exact tracking
of $R' sub 1$ with $R sub 1$.
Such a filter has been used in a simple hand-controlled speech synthesizer,
built for demonstration and amusement (Witten and Madams, 1978).
.[
Witten Madams 1978 Chatterbox
.]
However, the need for tracking resistors, and the inverse square root variation
of the formant frequency with $R sub 1$, makes it rather unsuitable for serious
applications.
.pp
A better analogue filter is the ring-of-three configuration
shown in Figure 5.12.
.FC "Figure 5.12"
(Ignore the secondary output for now.)  Control
is achieved over the centre frequency by two multipliers, driven from
the same control input $k$.  These have a high-impedance output, producing a
current $kx$ if the input voltage is $x$.
It is not too difficult to show that the transfer function of the circuit is
.LB
.EQ
- ~~ { {k sup 2} over {C sup 2} } over
{ s sup 2 ~~+~~ 2 over RC ~s
~~+~~{1+k sup 2 R sup 2} over {R sup 2 C sup 2} } ~ .
.EN
.LE
Suppose that $R$ is chosen so that  $k sup 2 R sup 2 ~ >>~ 1$.  Then this is a
unity-gain resonator with constant bandwidth  $1/ pi RC$\ Hz  and centre
frequency  $k/2 pi C$\ Hz.  Note that it is the combination of both multipliers that
makes the centre frequency grow linearly with $k$:  with one multiplier there
would be a square-root relationship.
.pp
The ring-of-three filter of Figure 5.12 is arranged in a slightly unusual
way, with an inverting stage at the beginning and the two resonant stages
following it.  This ensures that the signal level at intermediate
points in the filter does not exceed that at the output, and gives the filter
the best chance of coping with a wide range of input amplitudes without
clipping.  This contrasts markedly with the resonator of Figure 5.11, where
the voltage at the output of the first integrator is $w/b$ times the final output \(em a
factor of 50 in the worst case.
.pp
For a digital implementation of a formant, consider the recurrence relation
.LB
.EQ
y(n)~ = ~~ a sub 1 y(n-1) ~-~ a sub 2 y(n-2) ~+~ a sub 0 x(n) ,
.EN
.LE
where $x(n)$ is the input and $y(n)$ the output at time $n$,
$y(n-1)$ and $y(n-2)$ are the previous two values of the output,
and $a sub 0$, $a sub 1$, and $a sub 2$ are (real) constants.
The minus sign is in front of the second term because it makes $a sub 2$
turn out to be
positive.  To calculate the $z$-transform version of this relationship, multiply
through by $z sup -n$ and sum from $n=- infinity$ to $infinity$ :
.LB "nn"
.EQ
sum from {n=- infinity} to infinity ~y(n)z sup -n ~~ mark =~~
a sub 1 sum from {n=- infinity} to infinity ~y(n-1)z sup -n ~~-~
a sub 2 sum from {n=- infinity} to infinity ~y(n-2)z sup -n ~~+~
a sub 0 sum from {n=- infinity} to infinity ~x(n)z sup -n
.EN
.sp
.EQ
lineup = ~~ a sub 1 z sup -1 ~ sum ~y(n-1)z sup -(n-1) ~~-~~
a sub 2 z sup -2 ~ sum ~y(n-2)z sup -(n-2)
~~+~~ a sub 0 ~ sum ~x(n)x sup -n ~ .
.EN
.LE "nn"
Writing this in terms of $z$-transforms,
.LB
.EQ
Y(z)~ = ~~ a sub 1 z sup -1 Y(z) ~-~ a sub 2 z sup -2 Y(z) ~+~ a sub 0 X(z) .
.EN
.LE
Thus the input-output transfer function of the system is
.LB
.EQ
H(z)~ = ~~ Y(z) over X(z)
~~=~~ {a sub 0 } over {1~-~a sub 1 z sup -1 ~+~a sub 2 z sup -2} ~ .
.EN
.LE
.pp
We learned in the previous chapter that the frequency response is obtained
from the $z$-transform of a system by replacing $z sup -1$
by  $e sup {-j2 pi fT}$,  where $f$ is the frequency variable in\ Hz.
Hence the amplitude response of the digital formant filter is
.LB
.EQ
|H(e sup {j2 pi fT} )| sup 2
~~ = ~~ left [ {a sub 0} over {1~-~a sub 1 e sup {-j2 pi fT}
~+~a sub 2 e sup {-j4 pi fT} } ~ right ] sup 2 ~ .
.EN
.sp
.LE
It is fairly obvious from this that a DC gain of 1 is obtained if
.LB
.EQ
a sub 0 ~ = ~~ 1 ~-~ a sub 1  ~+~ a sub 2 ,
.EN
.LE
for  $e sup {-j2 pi fT}$  is 1 at a frequency of 0\ Hz.  Some manipulation is
required to show that, under the usual assumption that the bandwidth is
small, the centre frequency is
.LB
.EQ
1 over {2 pi T} ~~ cos sup -1 ~ {a sub 1} over {2 a sub 2 sup 1/2} ~
.EN
Hz.
.LE
Furthermore, the 3\ dB bandwidth of the resonance is given approximately by
.LB
.EQ
-~ 1 over {2 pi T} ~~ log sub e a sub 2 ~
.EN
Hz.
.LE
.pp
As an example, Figure 5.13 shows an amplitude response for this digital filter.
.FC "Figure 5.13"
The parameters $a sub 0$, $a sub 1$ and $a sub 2$
were generated from the above
relationships for a sampling frequency of 8\ kHz, centre frequency of 1\ kHz,
and bandwidth of 75\ Hz.
It exhibits a peak of approximately the right bandwidth at the correct
frequency, 1\ kHz.  Note that the response is flat at half the sampling
frequency, for the frequency response from 4\ kHz to 8\ kHz is just a reflection of
that up to 4\ kHz.
This contrasts sharply with that of an analogue formant filter, also shown
in Figure 5.13, which slopes
at \-12\ dB/octave at frequencies above resonance.
.pp
The behaviour of a digital formant filter at frequencies above
resonance actually makes it preferable to an analogue implementation.
We saw earlier that considerable trouble must be taken with the latter to
compensate for the cumulative effect of \-12\ dB/octave at higher frequencies for
each of the formants.
This is not necessary with digital implementations, for the response of
a digital formant filter is flat at half the sampling frequency.  In fact, further
study shows that digital synthesizers without any higher-pole correction
give a closer approximation to the vocal tract than analogue ones with higher-pole
correction (Gold and Rabiner, 1968).
.[
Gold Rabiner 1968 Analysis of digital and analogue formant synthesizers
.]
.rh "Time-domain methods."
An interesting alternative to frequency-domain speech synthesis is to construct
the formants in the time domain.  When a second-order resonance is excited by
an impulse, an exponentially decaying sinusoid is produced, as illustrated by
Figure 5.14.
.FC "Figure 5.14"
The oscillation occurs at the resonant frequency of the filter,
while the decay is related to the bandwidth.  In fact, if the formant filter
has transfer function
.LB
.EQ
{w sup 2} over {s sup 2 ~+~ b s ~+~ w sup 2} ~ ,
.EN
.LE
the time waveform for impulsive excitation is
.LB
.EQ
x(t)~ = ~~ w~ e sup -bt/2 ~ sin ~ wt ~~~~~~~~
.EN
(neglecting  $b sup 2 /w sup 2$).
.LE
It is the combination of several such time waveforms, coupled with the regular
reappearance of excitation at the pitch period, that produces the characteristic
wiggly waveform of voiced speech.
.pp
Now suppose we take a sine wave of frequency $w$ and multiply it by a
decaying exponential  $e sup -bt/2$.  This gives a signal
.LB
.EQ
x(t)~ = ~~ e sup -bt/2 ~ sin ~ wt ,
.EN
.LE
which is identical with the filtered impulse except for a factor $w$.
If there are several formants in parallel, all with the same bandwidth,
the exponential factor is the same for each:
.LB
.EQ
x(t)~ = ~~ e sup -bt/2 ~ (A sub 1 ~ sin ~ w sub 1 t
~~+ ~~ A sub 2 ~ sin ~ w sub 2 t ~~ + ~~ A sub 3 ~  sin ~ w sub 3 t) .
.EN
.LE
$A sub 1$, $A sub 2$, and $A sub 3$ control the formant amplitudes,
as in an ordinary parallel synthesizer;
except that they need adjusting to account for the missing
factors $w sub 1$, $w sub 2$, and $w sub 3$.
.pp
A neat way of implementing such a synthesizer digitally is to store one cycle of a
sine wave in a read-only memory (ROM).  Then, the formant frequencies can be
controlled by reading the ROM at different rates.  For example, if twice the
basic frequency is desired, every second value should be read.
Multiplication is needed for amplitude control of each formant:  this can be
accomplished by shifting the digital word (each place shifted accounts for
6\ dB of attenuation).  Finally, the exponential damping factor can be
provided in analogue hardware by a single capacitor after the D/A converter.
This implementation gives a system for hardware-software synthesis which
involves an absolutely minimal amount of extra hardware apart from the computer,
and does not need hardware multiplication for real-time operation.
It could easily be made to work in real time with a microprocessor coupled
to a D/A converter, damping capacitor, and fixed tone-control filter to give
the required spectral equalization.
.pp
Because the overall spectral decay of an impulse exciting a second-order
formant filter is 12\ dB/octave, the appropriate equalization is +6\ dB/octave
lift at high frequencies, to give an overall \-6\ dB/octave spectral trend.
.pp
Note, however, that this synthesis model is an extremely basic one.  Only
impulsive excitation can be accomodated.  For fricatives, which we will
discuss in more detail below, a different implementation is needed.  A
hardware noise generator, with a few fixed filters \(em one
for each fricative type \(em will suffice for a simple system.  More damaging
is the lack of aspiration, where random noise excites the vocal tract resonances.
This cannot be simulated in the model.  The
.ul
h
sound can be provided by
treating it as a fricative, and although it will not sound completely realistic,
because there will be no variation with the formant positions of adjacent phonemes,
this can be tolerated because
.ul
h
is not too important for speech intelligibility.
A bigger disadvantage is the lack of proper aspiration control for producing
unvoiced stops, which as mentioned in Chapter 2 consist of an silent phase
followed by a burst of aspiration.
Experience has shown that although it is difficult to drive such a synthesizer
from a software synthesis-by-rule system, quite intelligible output can
be obtained if parameters are derived from real speech and tweaked by hand.
Then, for each aspiration burst the most closely-matching fricative sound
can be used.
.sh "5.4  Aspiration and frication"
.pp
The model of the vocal tract as a filter which affects the frequency spectrum
of the basic voiced excitation breaks down if there are constrictions in it,
for these introduce new sound sources caused by turbulent air.
The generation of unvoiced excitation has been discussed earlier in this
chapter:  now we must consider how to simulate the filtering action of
the vocal tract for unvoiced sounds.
.pp
Aspiration and frication need to be dealt with separately.  The former
is caused by excitation at the vocal cords \(em the cords are held
so close together that turbulent noise is produced.
This noise passes through the same vocal tract filter that modifies voiced
sounds, and the same kind of formant structure can be observed.
All that is needed to simulate it is to replace the voiced excitation
source by white noise, as shown in the upper part of Figure 5.15.
.FC "Figure 5.15"
.pp
Speech can be whispered by substituting aspiration for voicing throughout.
Of course, there is no fundamental frequency associated with aspiration.
An interesting way of assessing informally the degradation caused by inadequate
pitch control in a speech synthesis-by-rule system is to listen to
whispered speech, in which pitch variations play no part.
.pp
Voiced and aspirative excitation are rarely produced at the same time
in natural speech (but see the discussion in Chapter 2 about breathy voice).
However, the excitation can change from one to the other quite quickly, and
when this happens there is no discontinuity in the formant structure.
.pp
Fricative, or sibilant, excitation is quite different from aspiration,
because it introduces a new sound source at a different place from the vocal
cords.  The constriction which produces the sound may be at the lips,
the teeth, the hard ridge just behind the top front teeth, or further
back along the palate.
These positions each produce a different sound
(\c
.ul
f,
.ul
th,
.ul
s,
and
.ul
sh
respectively).  However, smooth transitions from one of these sounds to another
do not occur in natural speech; and dynamical movement of the frequency
spectrum during a fricative is unnecessary for speech synthesis.
.pp
It is necessary, however, to be able to produce an approximation to the
noise spectrum for each of these sound types.  This is commonly achieved
by a single high-pass resonance whose centre frequency can be controlled.
This is the purpose of the secondary output
of the formant filter of Figure 5.12.
Taking the output from this point gives a high-pass instead of a low-pass
resonance, and this same filter configuration is quite acceptable for
fricatives.  Figure 5.15 shows the fricative sound path as a noise generator
followed by such a filter.
.pp
Unlike aspiration, fricative excitation is frequently combined with voicing.
This gives the voiced fricative sounds
.ul
v,
.ul
dh,
.ul
z,
and
.ul
zh.
It is possible to produce frication and aspiration together, and although
there are no examples of this in English, speech synthesis-by-rule
programs often use a short burst of aspiration
.ul
and
frication when simulating the opening of unvoiced stops.
Separate amplitude controls are therefore needed for voicing and frication,
but the former can be used for aspiration as well, with a "glottal excitation
type" switch to indicate aspiration rather than voicing.
.sh "5.5  Summary"
.pp
A resonance speech synthesizer consists of a vocal tract filter, excited by
either a periodic pitch pulse or aspiration noise.  In addition, a set of
sibilant sounds must be provided.  The vocal tract filter is dynamic, with
three controllable resonances.  These, coupled with some fixed spectral
compensation, give it a fairly high order \(em about 10 complex poles are
needed.  Although several different sibilant sound types must be simulated,
dynamical movement is less important in fricative sound spectra than
for voiced and aspirated sounds because
smooth transitions between one fricative and another are not important
in speech.
However, fricative timing and amplitude must be controlled rather precisely.
.pp
The speech synthesizer is controlled by several parameters.
These include fundamental frequency (if voiced), amplitude of voicing,
frequency of the first few \(em typically three \(em formants,
aspiration amplitude, sibilance amplitude, and frequency of one (or more)
sibilance filters.
Additionally, if the synthesizer is a parallel one, parameters for the
amplitudes of individual formants will need to be included.
It may be that some control over formant bandwidths is provided too.
Thus synthesizers have from eight up to about 20 parameters (Klatt, 1980,
describes one with 20 parameters).
.[
Klatt 1980 Software for a cascade/parallel formant synthesizer
.]
.pp
The parameters are supplied to the synthesizer at regular intervals of time.
For a 10-parameter synthesizer, the control can be thought of as a set of
10 graphs, each representing the time evolution of one parameter.
They are usually called parameter
.ul
tracks,
the terminology dating from the days when a track was painted on a glass
slide for each parameter to provide dynamic control of the synthesizer
(Lawrence, 1953).
.[
Lawrence 1953
.]
The pitch track is often called a pitch
.ul
contour;
this is a common phonetician's usage.
Do not confuse this with the everyday meaning of "contour"
as a line joining points of equal height on a map \(em a pitch contour is
just the time evolution of the pitch frequency.
.pp
For computer-controlled synthesizers, of course, the parameter tracks
are sampled, typically every 5 to 20\ msec.
The rate is determined by the need to generate fast amplitude transitions
for nasals and stop consonants.
Contrast it with the 125\ $mu$sec sampling period needed to digitize
telephone-quality speech.
The raw data rate for a 10-parameter synthesizer updated every 10 msec
is 1,000 parameters/sec, or 6\ Kbit/s if each parameter is represented
by 6\ bits.
This is a substantial reduction over the 56\ Kbit/s needed for PCM representation.
For speech synthesis by rule (Chapter 7), these parameter tracks
are generated by a computer program from a phonetic (or English)
version of the utterance, lowering the data rate by a further one or two
orders of magnitude.
.pp
Filters for speech
synthesizers can be implemented in either analogue or digital form.
High-order filters are usually broken down into second-order sections in
parallel or in series.  A third possibility, which has not been discussed
above, is to implement a single high-order filter directly.  Finally, the
action of formant filters can be synthesized in the time domain.  This gives
eight possibilities which are summarized in Table 5.2.
.RF
.in +0.5i
.ta 2.1i +2.0i
.nr x1 (\w'Analogue'/2)
.nr x2 (\w'Digital'/2)
	\h'-\n(x1u'Analogue	\h'-\n(x2u'Digital
.nr x0 2.0i+(\w'Liljencrants (1968)'/2)+(\w'Morris and Paillet (1972)'/2)
.nr x3 (\w'Liljencrants (1968)'/2)
	\h'-\n(x3u'\l'\n(x0u\(ul'
.sp
.nr x1 (\w'Rice (1976)'/2)
.nr x2 (\w'Rabiner \fIet al\fR'/2)
Series	\h'-\n(x1u'Rice (1976)	\h'-\n(x2u'Rabiner \fIet al\fR
.nr x1 (\w'Liljencrants (1968)'/2)
.nr x2 (\w'Holmes (1973)'/2)
Parallel	\h'-\n(x1u'Liljencrants (1968)	\h'-\n(x2u'Holmes (1973)
.nr x1 (\w'unpublished'/2)
.nr x2 (\w'unpublished'/2
Time-domain	\h'-\n(x1u'unpublished	\h'-\n(x2u'unpublished
.nr x1 (\w'\(em'/2)
.nr x2 (\w'Morris and Paillet (1972)'/2)
High-order filter	\h'-\n(x1u'\(em	\h'-\n(x2u'Morris and Paillet (1972)
	\h'-\n(x3u'\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in-0.5i
.FG "Table 5.2  Implementation options for resonance speech synthesizers"
.[
Rice 1976 Byte
.]
.[
Rabiner Jackson Schafer Coker 1971
.]
.[
Liljencrants 1968
.]
.[
Holmes 1973 Influence of glottal waveform on naturalness
.]
.[
Morris and Paillet 1972
.]
All but one have certainly been used as the basis for synthesis, and
the table includes reference to published descriptions.
.pp
Each method has advantages and disadvantages.  Series decomposition obviates
the need for control over the amplitudes of individual formants, but does
not allow synthesis of sounds which use the nasal tract as well as the oral
one; for these are in parallel.  Analogue implementation of series synthesizers
is complicated by the need for higher-pole correction, and the fact that
the gains at different frequencies can vary widely throughout the system.
Higher-pole correction is not so important for digital synthesizers.
Parallel decomposition eliminates some of these problems:  higher-pole correction
can be implemented individually for each formant.  However, the formant
amplitudes must be controlled rather precisely to simulate the vocal tract,
which is essentially serial.
Time-domain synthesis is associated with low hardware costs but does not
easily allow proper control over the excitation sources.  In particular,
it cannot simulate dynamical movement of the spectrum during aspiration.
Implementation of the entire vocal tract model as a single high-order filter,
without breaking it down into individual formants in series or parallel,
is attractive from the computational point of view because less arithmetic
operations are required.  It is best analysed in terms of linear predictive
coding, which is the subject of the next chapter.
.sh "5.6  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "5.7  Further reading"
.pp
Historically-minded readers should look at the early speech synthesizer
designed by Lawrence (1953).
This and other classic papers on the subject
are reprinted in Flanagan and Rabiner (1973).
A good description of a quite sophisticated parallel synthesizer can
be found in Holmes (1973), above, and another of a switchable
series/parallel one in Klatt (1980), who even includes a listing of
the Fortran program that implements it.
Here are some useful books on speech synthesizers.
.LB "nn"
.\"Fant-1960-1
.]-
.ds [A Fant, G.
.ds [D 1960
.ds [T Acoustic theory of speech production
.ds [I Mouton
.ds [C The Hague
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Fant really started the study of the vocal tract as an acoustic system,
and this book marks the beginning of modern speech synthesis.
.in-2n
.\"Flanagan-1972-1
.]-
.ds [A Flanagan, J.L.
.ds [D 1972
.ds [T Speech analysis, synthesis, and perception (2nd, expanded, edition)
.ds [I Springer Verlag
.ds [C Berlin
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This book is the speech researcher's bible, and like the bible, it's not
all that easy to read.
However, it is an essential reference source for speech acoustics and
speech synthesis (as well as for human speech perception).
.in-2n
.\"Flanagan-1973-2
.]-
.ds [A Flanagan, J.L.
.as [A " and Rabiner, L.R.(Editors)
.ds [D 1973
.ds [T Speech synthesis
.ds [I Dowsen, Hutchinson and Ross
.ds [C Stroudsburg, Pennsylvania
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
I recommended this book at the end of Chapter 1 as a collection of
classic papers on the subject of speech synthesis and synthesizers.
.in-2n
.\"Holmes-1972-3
.]-
.ds [A Holmes, J.N.
.ds [D 1972
.ds [T Speech synthesis
.ds [I Mills and Boom
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This little book, by one of Britain's foremost workers in the field,
introduces the subject of speech synthesis and speech synthesizers.
It has a particularly good discussion of parallel synthesizers.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "6  LINEAR PREDICTION OF SPEECH"
.ds RT "Linear prediction of speech
.ds CX "Principles of computer speech
.pp
The speech coding techniques which were discussed in Chapter 3 operate
in the time domain, while the analysis and synthesis techniques
of Chapters 4 and 5 are
based in the frequency domain.  Linear prediction is a relatively
new method of speech analysis-synthesis,
introduced in the early 1970's and used
extensively since then, which is primarily a time-domain coding method
but can be used to give frequency-domain parameters like formant
frequency, bandwidth, and amplitude.
.pp
It has several advantages over other speech analysis techniques, and is
likely to become increasingly dominant in speech output systems.
As well as bridging the gap between time- and frequency-domain techniques, it
is of equal value for both speech storage and speech synthesis, and forms
an extremely convenient basis for speech-output systems which use high-quality
stored speech for routine messages and synthesis from phonetics or text
for unusual or exceptional conditions.  Linear prediction can be used to
separate the excitation source properties of pitch and amplitude from the
vocal tract filter which governs phoneme articulation, or, in other words,
to separate much of the prosodic from the segmental information.
Hence it makes it easy to use stored segmentals with synthetic prosody,
which is just what is needed to enhance the flexibility of stored speech by
providing overall intonation contours for utterances formed by word
concatenation (see Chapter 7).
.pp
The frequency-domain analysis technique
of Fourier transformation necessarily involves approximation because it
applies only to periodic waveforms, and so the artificial operation
of windowing is required to suppress the aperiodicity of real
speech.  In contrast, the linear predictive technique, being a time-domain
method, can \(em in certain forms \(em deal more rationally with aperiodic
signals.
.pp
The basic idea of linear predictive coding is exactly the same as
one form of adaptive differential pulse code modulation which
was introduced briefly in Chapter 3.  There it was noted that a speech
sample $x(n)$ can be predicted quite closely by the previous sample
$x(n-1)$.  The prediction can be improved by multiplying the previous
sample by a number, say $a sub 1$, which is adapted on a syllabic
time-scale.  This can be utilized for speech coding by transmitting
only the prediction error
.LB
.EQ
e(n)~=~~x(n)~-~a sub 1 x(n-1),
.EN
.LE
and using it (and the value of $a sub 1$) to reconstitute the signal
$x(n)$ at the receiver.  It is worthwhile noting that
exactly the same relationship was used for digital
preemphasis in Chapter 4, with the value of $a sub 1$
being constant at about 0.9 \(em although
the possibility of adapting it to take into account the difference
between voiced and unvoiced speech was discussed.
.pp
An obvious extension is to use several past values of the signal to form
the prediction, instead of just one.  Different multipliers for each would
be needed, so that the prediction error could be written as
.LB
.EQ
e(n)~~ mark =~~x(n)~-~a sub 1 x(n-1)~-~a sub 2 x(n-2)~-~...~-~a sub p x(n-p)
.EN
.sp
.EQ
lineup =~~x(n)~-~~sum from k=1 to p ~a sub k x(n-k).
.EN
.LE
The multipliers $a sub k$ should be adapted to minimize the error signal,
and we will consider how to do this in the next section.  It turns out
that they must be re-calculated and transmitted on a time-scale that is
rather faster than syllabic but much slower than
the basic sampling rate:  intervals
of 10\-25\ msec are usually used (compare this with the 125\ $mu$sec sampling
rate for telephone-quality speech).
A configuration for high-order adaptive differential
pulse code modulation is shown in Figure 6.1.
.FC "Figure 6.1"
.pp
Figure 6.2 shows typical time waveforms for each of the ten coefficients
over a 1-second stretch of speech.
.FC "Figure 6.2"
Notice that they vary much more slowly than, say, the speech waveform of
Figure 3.5.
.pp
Turning the above relationship into $z$-transforms gives
.LB
.EQ
E(z)~~=~~X(z)~-~~sum from k=1 to p ~a sub k z sup -k ~X(z)~~=~~(1~-~~
sum from k=1 to p ~a sub k z sup -k )~X(z).
.EN
.LE
Rewriting the speech signal in terms of the error,
.LB
.EQ
X(z)~~=~~1 over {1~-~~ sum ~a sub k z sup -k }~.~E(z) .
.EN
.LE
.pp
Now let us bring together some facts from the previous chapter which will
allow the time-domain technique of linear prediction to be interpreted
in terms of the frequency-domain formant model of speech.  Recall that speech
can be viewed as an excitation source passing through a vocal tract filter,
followed by another filter to model the effect of radiation from the lips.
The overall spectral levels can be reassigned as in Figure 5.1 so that
the excitation source has a 0\ dB/octave spectral profile, and hence is
essentially impulsive.
Considering the vocal tract filter as a series connection
of digital formant filters, its transfer function is the product of terms like
.LB
.EQ
1 over {1~-~b sub 1 z sup -1 ~+~b sub 2 z sup -2}~ ,
.EN
.LE
where $b sub 1$ and $b sub 2$ control the position and bandwidth of the formant resonances.
The \-6\ dB/octave spectral compensation can be modelled by the
first-order digital filter
.LB
.EQ
1 over {1~-~bz sup -1}~ .
.EN
.LE
The product of all these terms, when multiplied out, will have the
form
.LB
.EQ
1 over {1~-~c sub 1 z sup -1 ~-~c sub 2 z sup -2 ~-~...~-~
c sub q z sup -q }~ ,
.EN
.LE
where $q$ is twice the number of formants plus one, and the $c$'s are calculated
from the positions and bandwidths of the formant resonances and the spectral
compensation parameter.  Hence
the $z$-transform of the speech is
.LB
.EQ
X(z)~=~~1 over {1~-~~ sum from k=1 to q ~c sub k z sup -k }~.~I(z) ,
.EN
.LE
where $I(z)$ is the transform of the impulsive excitation.
.pp
This is remarkably similar to the linear prediction relation given earlier!  If
$p$ and $q$ are the same, then the linear predictive coefficients $a sub k$
form a $p$'th order polynomial which is the same as that obtained by multiplying
together the second-order polynomials representing the individual formants
(together with the first-order one for spectral compensation).
Furthermore, the predictive error $E(z)$ can be identified with the
impulsive excitation $I(z)$.  This raises the very interesting
possibility of parametrizing the error signal by its frequency and
amplitude \(em two relatively slowly-varying quantities \(em instead of
transmitting it sample-by-sample (at an 8\ kHz rate).  This is how
linear prediction separates out the excitation properties of the source
from the vocal tract filter:  the source parameters can be derived
from the error signal and the vocal tract filter is represented by
the linear predictive coefficients.
Figure 6.3 shows how this can be used for speech transmission.
.FC "Figure 6.3"
Note that
.ul
no
signals need now be transmitted at the speech sampling rate; for the
source parameters vary relatively slowly.  This leads to an extremely
low data rate.
.pp
Practical linear predictive coding schemes operate with a value of $p$ between
10 and 15, corresponding approximately to 4-formant and 7-formant synthesis
respectively.  The $a sub k$'s are re-calculated every 10 to 25\ msec, and
transmitted to the receiver.  Also, the pitch and amplitude
of the speech are estimated and transmitted at the same rate.
If the speech
is unvoiced, there is no pitch value:  an "unvoiced flag" is
transmitted instead.
Because the linear predictive coefficients are intimately related to
formant frequencies and bandwidths, a "frame rate" in the region
of 10 to 25\ msec is appropriate because this approximates the maximum rate
at which acoustic events happen in speech production.
.pp
At the receiver, the excitation waveform
is reconstituted.
For voiced speech, it is impulsive at the specified
frequency and with the specified amplitude, while for unvoiced speech it
is random, with the specified amplitude.  This signal $e(n)$, together
with the transmitted parameters $a sub 1$, ..., $a sub p$, is used
to regenerate the speech waveform by
.LB
.EQ
x(n)~=~~e(n)~+~~sum from k=1 to p ~a sub k x(n-k) ,
.EN
.LE
\(em which is the inverse of the transmitter's formula for calculating $e(n)$,
namely
.LB
.EQ
e(n)~=~~x(n)~-~~sum from k=1 to p ~a sub k x(n-k) .
.EN
.LE
This relies on knowing the past $p$ values of the speech samples.
Many systems set these past values to zero at the beginning of each pitch
cycle.
.pp
Linear prediction can also be used for speech analysis, rather than
for speech coding, as shown in Figure 6.4.
.FC "Figure 6.4"
Instead of transmitting the coefficients $a sub k$,
they are used to determine the formant positions and bandwidths.
We saw above that the polynomial
.LB
.EQ
1~-~a sub 1 z sup -1 ~-~a sub 2 z sup -2 ~-~...~-~a sub p z sup -p ,
.EN
.LE
when factored into a product of second-order terms, gives the formant
characteristics (as well as the spectral compensation term).
Factoring is equivalent to finding the complex roots of the polynomial,
and this is fairly demanding computationally \(em especially if done at
a high rate.  Consequently, peak-picking algorithms are sometimes
used instead.  The absolute value of the polynomial gives the
frequency spectrum of the vocal tract filter, and the formants
appear as peaks \(em just as they do in cepstrally smoothed speech
(see Chapter 4).
.pp
The chief deficiency in the linear predictive method, whether it
is used for speech coding or for speech analysis, is that \(em like a series
synthesizer \(em it
implements an all-pole model of the vocal tract.
We mentioned in Chapter 5 that this is rather simplistic,
especially for nasalized sounds which involve a cavity in parallel
with the oral one.  Some research has been done on incorporating zeros
into a linear predictive model, but it complicates the problem of
calculating the parameters enormously.  For most purposes people seem
to be able to live with the limitations of the all-pole model.
.sh "6.1  Linear predictive analysis"
.pp
The key problem in linear predictive coding is to determine the values
of the coefficients $a sub 1$, ..., $a sub p$.
If the error signal is to be transmitted on a sample-by-sample basis,
as it is in adaptive differential pulse code modulation, then it can be most
economically encoded if its mean power is as small as possible.
Thus the coefficients are chosen to minimize
.LB
.EQ
sum ~e(n) sup 2
.EN
.LE
over some period of time.
The period of time used is related to the frame rate at which the
coefficients are transmitted or stored, although there is no need
to make it exactly the same as one frame interval.  As mentioned above,
the frame size
is usually chosen to be in the region of 10 to 25\ msec.  Some
schemes minimize the error signal over as few as 30 samples
(corresponding to 3\ msec at a 10\ kHz sampling rate).  Others take
longer; up to 250 samples (25\ msec).
.pp
However, if the error signal is to be considered as impulsive and
parametrized by its frequency and amplitude before transmission,
or if the coefficients $a sub k$ are to be used for spectral calculations,
then it is not immediately obvious how the coefficients should be
calculated.
In fact, it is still best to choose them to minimize the above sum.
This is at least plausible, for an impulsive excitation will have a
rather small mean power \(em most of the samples are zero.
It can be justified theoretically in terms of
.ul
spectral whitening,
for it can be shown that minimizing the mean-squared error
produces an error signal whose spectrum is maximally flat.
Now the only two waveforms whose spectra are absolutely flat
are a single impulse and white noise.  Hence if
the speech is voiced, minimizing the mean-squared error
will lead to an error signal which is as nearly impulsive
as possible.  Provided the time-frame for minimizing is short enough,
the impulse will correspond to a single excitation pulse.
If the speech is unvoiced, minimization will lead to an error
signal which is as nearly white noise as possible.
.pp
How does one choose the linear predictive coefficients to minimize
the mean-squared error?  The total squared prediction error is
.LB
.EQ
M~=~~sum from n ~e(n) sup 2~~=~~sum from n
~[x(n)~-~ sum from k=1 to p ~a sub k x sub n-k ] sup 2 ,
.EN
.LE
leaving the range of summation unspecified for the moment.
To minimize $M$ by choice of the coefficients $a sub j$, differentiate
with respect to each of them and set the resulting derivatives
to zero.
.LB
.EQ
dM over {da sub j} ~~=~~-2 sum from n ~x(n-j)[x(n)~-~~
sum from k=1 to p ~a sub k x(n-k)]~~=~0~,
.EN
.LE
so
.LB
.EQ
sum from k=1 to p ~a sub k ~ sum from n ~x(n-j)x(n-k)~~=~~
sum from n ~x(n)x(n-j)~~~~j~=~1,~2,~...,~p.
.EN
.LE
.pp
This is a set of $p$ linear equations for the $p$ unknowns $a sub 1$, ...,
$a sub p$.
Solving it is equivalent to inverting a $p times p$ matrix.
This job must be repeated at the frame rate, and so if
real-time operation is desired quite a lot of calculation is needed.
.rh "The autocorrelation method."
So far, the range of the $n$-summation has been left open.  The
coefficients of the matrix equation have the form
.LB
.EQ
sum from n ~x(n-j)x(n-k).
.EN
.LE
If a doubly-infinite summation were made, with $x(n)$ being defined
as zero whenever $n<0$, we could make use of the fact that
.sp
.ce
.EQ
sum from {n=- infinity} to infinity ~x(n-j)x(n-k)~=~~
sum from {n=- infinity} to infinity ~x(n-j+1)x(n-k+1)~=~...~=~~
sum from {n=- infinity} to infinity ~x(n)x(n+j-k)
.EN
.sp
to simplify the matrix equation.  This just states that the
autocorrelation of an infinite sequence depends only on the lag at which
it is computed, and not on absolute time.
.pp
Defining $R(m)$ as the
autocorrelation at lag $m$, that is,
.LB
.EQ
R(m)~=~ sum from n ~x(n)x(n+m),
.EN
.LE
the matrix equation becomes
.LB
.ne7
.nf
.EQ
R(0)a sub 1 ~+~R(1)a sub 2 ~+~R(2)a sub 3 ~+~...~~=~R(1)
.EN
.EQ
R(1)a sub 1 ~+~R(0)a sub 2 ~+~R(1)a sub 3 ~+~...~~=~R(2)
.EN
.EQ
R(2)a sub 1 ~+~R(1)a sub 2 ~+~R(0)a sub 3 ~+~...~~=~R(3)
.EN
.EQ
etc
.EN
.fi
.LE
An elegant method due to Durbin and Levinson exists for solving this
special system of equations.  It requires much less computational
effort than is generally needed for symmetric matrix equations.
.pp
Of course, an infinite range of summation can not be used in
practice.  For one thing, the power spectrum is changing, and
only the data from a short time-frame should be used for
a realistic estimate of the optimum linear predictive coefficients.
Hence a windowing procedure,
.LB
.EQ
x(n) sup * ~=~w sub n x(n),
.EN
.LE
is used to reduce the signal to zero outside a finite range of
interest.  Windows were discussed in Chapter 4 from the
point of view of Fourier analysis of speech signals, and the same
sort of considerations apply to choosing a window for linear
prediction.
.pp
This is known as the
.ul
autocorrelation method
of computing prediction parameters.  Typically a window of
100 to 250 samples is used for analysis of one frame of speech.
.rh "Algorithm for the autocorrelation method."
The algorithm for obtaining linear prediction coefficients
by the autocorrelation method is quite simple.  It is
straightforward to compute the matrix coefficients
$R(m)$ from the speech samples and window coefficients.
The Durbin-Levinson method of solving matrix equations operates
directly on this $R$-vector to produce the coefficient vector $a sub k$.
The complete procedure is given as Procedure 6.1, and is shown
diagrammatically in Figure 6.5.
.FC "Figure 6.5"
.RF
.fi
.na
.nh
.ul
const
N=256; p=15;
.ul
type
svec =
.ul
array
[0..N\-1]
.ul
of
real;
cvec =
.ul
array
[1..p]
.ul
of
real;
.sp
.ul
procedure
autocorrelation(signal: vec; window: svec;
.ul
var
coeff: cvec);
.sp
{computes linear prediction coefficients by autocorrelation method
in coeff[1..p]}
.sp
.ul
var
R, temp:
.ul
array
[0..p]
.ul
of
real;
n: [0..N\-1]; i,j: [0..p]; E: real;
.sp
.ul
begin
{window the signal}
.in+6n
.ul
for
n:=0
.ul
to
N\-1
.ul
do
signal[n] := signal[n]*window[n];
.sp
{compute autocorrelation vector}
.br
.ul
for
i:=0
.ul
to
p
.ul
do begin
.in+2n
R[i] := 0;
.br
.ul
for
n:=0
.ul
to
N\-1\-i
.ul
do
R[i] := R[i] + signal[n]*signal[n+i]
.in-2n
.ul
end;
.sp
{solve the matrix equation by the Durbin-Levinson method}
.br
E := R[0];
.br
coeff[1] := R[1]/E;
.br
.ul
for
i:=2
.ul
to
p
.ul
do begin
.in+2n
E := (1\-coeff[i\-1]*coeff[i\-1])*E;
.br
coeff[i] := R[i];
.br
.ul
for
j:=1
.ul
to
i\-1
.ul
do
coeff[i] := coeff[i] \- R[i\-j]*coeff[j];
.br
coeff[i] := coeff[i]/E;
.br
.ul
for
j:=1
.ul
to
i\-1
.ul
do
temp[j] := coeff[j] \- coeff[i]*coeff[i\-j];
.br
.ul
for
j:=1
.ul
to
i\-1
.ul
do
coeff[j] := temp[j]
.in-2n
.ul
end
.in-6n
.ul
end.
.nf
.FG "Procedure 6.1  Pascal algorithm for the autocorrelation method"
.pp
This algorithm is not quite as efficient as it might be, for some
multiplications are repeated during the calculation of the
autocorrelation vector.  Blankinship (1974) shows how
the number of multiplications can be reduced by about half.
.[
Blankinship 1974
.]
.pp
If the algorithm is performed in fixed-point arithmetic
(as it often is in practice because of speed considerations),
some scaling must be done.  The maximum and minimum values of
the windowed signal can be determined within the window
calculation loop, and one extra pass over the vector will
suffice to scale it to maximum significance.
(Incidentally, if all sample values are the same the procedure
cannot produce a solution because $E$ becomes zero, and this
can easily be checked when scaling.)
.pp
The absolute value of the $R$-vector has no significance, and since
$R(0)$ is always the greatest element, this can be set to the largest
fixed-point number and the other $R$'s scaled down appropriately
after they have been calculated.
These scaling operations are shown as dashed boxes in Figure 6.5.
$E$ decreases monotonically
as the computation proceeds, so it is safe to initialize it to $R(0)$
without extra scaling.  The remainder of the scaling is straightforward,
with the linear prediction coefficients $a sub k$ appearing as fractions.
.rh "The covariance method."
One of the advantages of linear predictive methods that was
promised earlier was that it allows us to escape from
the problem of windowing.  To do this, we must abandon the
requirement that the coefficients of the matrix equation have
the symmetry property of autocorrelations.  Instead, suppose
that the range of $n$-summation uses a fixed number of
elements, say N, starting at $n=h$, to estimate the prediction
coefficients between sample number $h$ and sample number $h+N$.
.pp
This leads to the matrix equation
.LB
.EQ
sum from k=1 to p ~a sub k sum from n=h to h+N-1 ~x(n-j)x(n-k) ~~=~~
sum from n=h to h+N-1 ~x(n)x(n-j)~~~~j~=~1,~2,~...,~p.
.EN
.LE
Alternatively, we could write
.LB
.EQ
sum from k=1 to p ~a sub k ~ Q sub jk sup h~~=~~Q sub 0j sup h
~~~~j~=~1,~2,~...,~p;
.EN
.LE
where
.LB
.EQ
Q sub jk sup h~~=~~sum from n=h to h+N-1 ~x(n-j)x(n-k).
.EN
.LE
Note that some values of $x(n)$ outside the range  $h ~ <= ~ n ~ < ~ h+N$  are
required:  these are shown diagrammatically in Figure 6.6.
.FC "Figure 6.6"
.pp
Now  $Q sub jk sup h ~=~ Q sub kj sup h$,  so the equation has
a diagonally symmetric matrix; and in fact the matrix $Q sup h$ can
be shown to be positive semidefinite \(em and is almost always positive
definite in practice.  Advantage can be taken of these facts
to provide a computationally efficient method for solving the
equation.  According to a result called Cholesky's theorem, a
positive definite symmetric matrix $Q$ can be factored into the form
$Q ~ = ~ LL sup T$, where $L$ is a lower triangular matrix.
This leads to an efficient
solution algorithm.
.pp
This method of computing prediction coefficients has become known
as the
.ul
covariance method.
It does not use windowing of the speech signal, and can give accurate
estimates of the prediction coefficients with a smaller analysis
frame than the autocorrelation method.  Typically, 50 to 100 speech samples
might be used to estimate the coefficients, and they are re-calculated
every 100 to 250 samples.
.rh "Algorithm for the covariance method."
An algorithm for the covariance method is given in Procedure 6.2,
.RF
.fi
.na
.nh
.ul
const
N=100; p=15;
.ul
type
svec =
.ul
array
[\-p..N\-1]
.ul
of
real;
cvec =
.ul
array
[1..p]
.ul
of
real;
.sp
.ul
procedure
covariance(signal: svec;
.ul
var
coeff: cvec);
.sp
{computes linear prediction coefficients by covariance method
in coeff[1..p]}
.sp
.ul
var
Q:
.ul
array
[0..p,0..p]
.ul
of
real;
n: [0..N\-1]; i,j,r: [0..p]; X: real;
.sp
.ul
begin
{calculate upper-triangular covariance matrix in Q}
.in+6n
.ul
for
i:=0
.ul
to
p
.ul
do
.in+2n
.ul
for
j:=i
.ul
to
p
.ul
do begin
.in+2n
Q[i,j]:=0;
.br
.ul
for
n:=0
.ul
to
N\-1
.ul
do
.in+2n
Q[i,j] := Q[i,j] + signal[n\-i]*signal[n\-j]
.in-2n
.in-2n
.ul
end;
.in-2n
.sp
{calculate the square root of Q}
.br
.ul
for
r:=2
.ul
to
p
.ul
do
.in+2n
.ul
begin
.in+2n
.ul
for
i:=2
.ul
to
r\-1
.ul
do
.in+2n
.ul
for
j:=1
.ul
to
i\-1
.ul
do
.in+2n
Q[i,r] := Q[i,r] \- Q[j,i]*Q[j,r];
.in-2n
.ul
for
j:=1
.ul
to
r\-1
.ul
do
.in+2n
.ul
begin
.in+2n
X := Q[j,r];
.br
Q[j,r] := Q[j,r]/Q[j,i];
.br
Q[r,r] := Q[r,r] \- Q[j,r]*X
.in-2n
.ul
end
.in-2n
.in-2n
.in-2n
.ul
end;
.in-2n
.sp
{calculate coeff[1..p]}
.br
.ul
for
r:=2
.ul
to
p
.ul
do
.in+2n
.ul
for
i:=1
.ul
to
r\-1
.ul
do
Q[0,r] := Q[0,r] \- Q[i,r]*Q[0,i];
.in-2n
.ul
for
r:=1
.ul
to
p
.ul
do
Q[0,r] := Q[0,r]/Q[r,r];
.br
.ul
for
r:=p\-1
.ul
downto
1
.ul
do
.in+2n
.ul
for
i:=r+1
.ul
to
p
.ul
do
Q[0,r] := Q[0,r] \- Q[r,i]*Q[0,i];
.in-2n
.ul
for
r:=1
.ul
to
p
.ul
do
coeff[r] := Q[0,r]
.in-6n
.ul
end.
.nf
.FG "Procedure 6.2  Pascal algorithm for the covariance method"
and is shown diagrammatically in Figure 6.7.
.FC "Figure 6.7"
The algorithm shown is not terribly efficient from a computation
and storage point of view, although it is workable.  For one thing,
it uses the obvious method for computing the covariance matrix
by calculating
.EQ
Q sub 01 sup h ,
.EN
.EQ
Q sub 02 sup h , ~ ...,
.EN
.EQ
Q sub 0p sup h ,
.EN
.EQ
Q sub 11 sup h , ...,
.EN
in turn, which repeats most of the multiplications $p$ times \(em not
an efficient procedure.  A simple alternative is to precompute the necessary
multiplications and store them in a  $(N+h) times (p+1)$ diagonally symmetric
table, but even apart from the extra storage required for this, the number
of additions which must be performed subsequently to give the $Q$'s is far
larger than necessary.  It is possible, however, to write a procedure which is
both time- and space-efficient (Witten, 1980).
.[
Witten 1980 Algorithms for linear prediction
.]
.pp
The scaling problem is rather more tricky for the covariance
method than for the autocorrelation method.  The $x$-vector
should be scaled initially in the same way as before, but now there
are $p+1$ diagonal elements of the covariance matrix, any of which could
be the greatest element.  Of course,
.LB
.EQ
Q sub jk ~~ <= ~~ Max ( Q sub 11 , Q sub 22 , ..., Q sub pp ),
.EN
.LE
but despite the considerable communality in the summands of the diagonal
elements, there are no
.ul
a priori
bounds on the ratios between them.
.pp
The only way to scale the $Q$ matrix properly is to calculate each of its $p$
diagonal elements and use the greatest as a scaling factor.
Alternatively, the fact that
.LB
.EQ
Q sub jk ~~ <= ~~ N times Max( x sub n sup 2 )
.EN
.LE
can be used to give a bound for scaling purposes; however, this
is usually a rather conservative bound, and as $N$ is often around 100, several
bits of significance will be lost.
.pp
Scaling difficulties do not cease when $Q$ has been determined.  It is possible
to show that the elements of the lower-triangular matrix $L$ which represents
the square root of $Q$ are actually
.ul
unbounded.
In fact there is a slightly different variant of the Cholesky decomposition
algorithm which guarantees bounded coefficients but suffers from the
disadvantage that it requires square roots to be taken (Martin
.ul
et al,
1965).
.[
Martin Peters Wilkinson 1965
.]
However, experience with the method indicates that it is rare for the elements
of $L$ to exceed 16 times the maximum element of $Q$, and the possibility of
occasional failure to adjust the coefficients may be tolerable in a practical
linear prediction system.
.rh "Comparison of autocorrelation and covariance analysis."
There are various factors which should be taken into account when
deciding whether to use the autocorrelation or covariance method for linear
predictive analysis.  Furthermore, there is a rather different technique,
called the "lattice method", which will be discussed shortly.
The autocorrelation method involves windowing, which means that in
practice a rather longer stretch of speech should be used
for analysis.  We have illustrated this by setting $N$=256 in the
autocorrelation algorithm and 100 in the covariance one.
Offsetting the extra calculation that this entails is the
fact that the Durbin-Levinson method of inverting a matrix is much more
efficient than Cholesky decomposition.  In practice, this means
that similar amounts of computation are needed for each method \(em a
detailed comparison is made in Witten (1980).
.[
Witten 1980 Algorithms for linear prediction
.]
.pp
A factor which weighs against the covariance method is the
difficulty of scaling intermediate quantities within the algorithm.
The autocorrelation method can be implemented quite satisfactorily
in fixed-point arithmetic, and this makes it more suitable for
hardware implementation.  Furthermore, serious instabilities sometimes
arise with the covariance method, whereas it can be shown that
the autocorrelation one is always stable.  Nevertheless, the approximations
inherent in the windowing operation, and the smearing effect of taking a
larger number of sample points, mean that covariance-method coefficients
tend to represent the speech more accurately, if they can be obtained.
.pp
One way of using the covariance method which has proved to be rather
satisfactory in practice is to synchronize the analysis frame with
the beginning of a pitch period, when the excitation is strongest.
Pitch synchronous techniques were discussed in Chapter 4 in the context
of discrete Fourier transformation of speech.  The snag, of course, is that
pitch peaks do not occur uniformly in time, and furthermore it is difficult
to estimate their locations precisely.
.sh "6.2  Linear predictive synthesis"
.pp
If the linear predictive coefficients and the error signal are available,
it is easy to regenerate the original speech by
.LB
.EQ
x(n)~=~~e(n)~+~~ sum from k=1 to p ~a sub k x(n-k) .
.EN
.LE
If the error signal is parametrized into the sound source type
(voiced or unvoiced), amplitude, and pitch (if voiced), it can be
regenerated by an impulse repeated at the appropriate pitch
frequency (if voiced), or white noise (if unvoiced).
.pp
However, it may be that the filter represented by the coefficients $a sub k$ is
unstable, causing the output speech signal to oscillate wildly.
In fact, it is only possible for the covariance method to produce an
unstable filter, and not the autocorrelation method \(em although even
with the latter, truncation of the $a sub k$'s for transmission may turn
a stable filter into an unstable one.  Furthermore, the coefficients
$a sub k$ are not suitable candidates for quantization, because small
changes in them can have a dramatic effect on the characteristics of
the synthesis filter.
.pp
Both of these problems can be solved by using a different set of numbers,
called
.ul
reflection coefficients,
for quantization and transmission.  Thus, for example, in Figures 6.1
and 6.3 these reflection coefficients could be derived at the
transmitter, quantized, and used by the receiver to reproduce
the speech waveform.  They can be related to reflection and transmission
parameters at the junctions of an acoustic tube model of the vocal tract;
hence the name.  Procedure 6.3 shows an algorithm for calculating the
reflection coefficients from the filter coefficients $a sub k$.
.RF
.fi
.na
.nh
.ul
const
p=15;
.ul
type
cvec =
.ul
array
[1..p]
.ul
of
real;
.sp
.ul
procedure
reflection(coeff: cvec;
.ul
var
refl: cvec);
.sp
{computes reflection coefficients in refl[1..p] corresponding
to linear prediction coefficients in coeff[1..p]}
.sp
.ul
var
temp: cvec;  i, m: 1..p;
.sp
.ul
begin
.in+6n
.ul
for
m:=p
.ul
downto
1
.ul
do begin
.in+2n
refl[m] := coeff[m];
.br
.ul
for
i:=1
.ul
to
m\-1
.ul
do
temp[i] := coeff[i];
.br
.ul
for
i:=1
.ul
to
m\-1
.ul
do
.ti+2n
coeff[i] :=
.ti+4n
(coeff[i] + refl[m]*temp[m\-i]) / (1 \- refl[m]*refl[m]);
.in-2n
.ul
end
.in-6n
.ul
end.
.nf
.MT 2
Procedure 6.3  Pascal algorithm for producing reflection coefficients
from filter coefficients
.TE
.pp
Although we will not go into the theoretical details here,
reflection coefficients are bounded by $+-$1 for stable filters,
and hence form a useful test for stability.  Having a limited
range makes them easy to quantize for transmission, and in fact
they behave better under quantization than do the filter coefficients.
One could resynthesize speech from reflection coefficients by first
converting them to filter coefficients and using the synthesis
method described above.  However, it is natural to seek a single-stage
procedure which can regenerate speech directly from reflection
coefficients.
.pp
Such a procedure does exist, and is called a
.ul
lattice filter.
Figure 6.8 shows one form of lattice for speech synthesis.
.FC "Figure 6.8"
The error signal (whether transmitted or synthesized)
enters at the upper left-hand corner, passes along the top forward
signal path, being modified on the way, to give the output signal
at the right-hand side.
Then it passes back through a chain of delays along the bottom,
backward, path, and is used to modify subsequent forward signals.
Finally it is discarded at the lower left-hand corner.
.pp
There are $p$ stages in the lattice structure of Figure 6.8, where $p$ is the
order of the linear predictive filter.
Each stage involves two multiplications by the appropriate
reflection coefficients, one by the backward signal \(em the
result of which is added into the forward path \(em and the other by
the forward signal \(em the result of which is subtracted from the
backward path.  Thus the number of multiplications is twice
the order of the filter, and hence twice as many as for the
realization using coefficients $a sub k$.  If the labour necessary
to turn the reflection coefficients into $a sub k$'s is included,
the computational load becomes the same.  Moreover, since the
reflection coefficients need fewer quantization bits than the $a sub k$'s
(for a given speech quality), the word lengths are smaller in the
lattice realization.
.pp
The advantages of the lattice method of synthesis over direct evaluation
of the prediction using filter coefficients $a sub k$, then, are:
.LB
.NP
the reflection coefficients are used directly
.NP
the stability of the filter is obvious from the reflection coefficient
values
.NP
the system is more tolerant to quantization errors in fixed-point
implementations.
.LE
Although it may seem unlikely that an unstable filter would be produced
by linear predictive analysis, instability is in fact a real problem
in non-lattice implementations.  For example,
coefficients are often interpolated at the receiver, to allow longer
frame times and smooth over sudden transitions, and it is quite likely that
an unstable configuration is obtained when interpolating filter coefficients
between two stable configurations.
This cannot happen with reflection coefficients, however, because a
necessary and sufficient condition for stability is that all
coefficients lie in the interval $(-1,+1)$.
.sh "6.3  Lattice filtering"
.pp
Lattice filters are an important new method of linear predictive
.ul
analysis
as well as synthesis, and so
it is worth considering the theory behind them a little further.
.rh "Theory of the lattice synthesis filter."
Figure 6.9 shows a single stage of the synthesis lattice given earlier.
.FC "Figure 6.9"
There are two signals at each side of the lattice, and the $z$-transforms
of these have been labelled $X sup +$ and $X sup -$ at the left-hand side
and $Y sup +$ and $Y sup -$ at the right-hand side.
The direction of signal flow is forwards along the upper ("positive") path
and backwards along the lower ("negative") one.
.pp
The signal flows show that the following two relationships hold:
.LB
.EQ
Y sup + ~=~~ X sup + ~+~ k z sup -1 Y sup - ~~~~~~
.EN
for the forward (upper) path
.br
.EQ
X sup - ~ =~ -kY sup + ~+~ z sup -1 Y sup - ~~~~~~~
.EN
\h'-\w'\-'u'for the backward (lower) path.
.LE
Re-arranging the first equation yields
.LB
.EQ
X sup + ~ =~~ Y sup + ~-~ k z sup -1 Y sup - ,
.EN
.LE
and so we can describe the function of the lattice by a single matrix
equation:
.LB
.ne4
.EQ
left [ matrix {ccol {X sup + above X sup -}} right ] ~~=~~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {Y sup + above Y sup -}} right ] ~ .
.EN
.LE
It would be nice to be able to
call this an input-output equation, but it is not;
for the input signals to the lattice stage are $X sup +$ and $Y sup -$,
and the outputs are $X sup -$ and $Y sup +$.
We have written it in this form because it allows a multi-stage lattice to
be described by cascading these matrix equations.
.pp
A single-stage lattice filter has $Y sup +$ and $Y sup -$ connected together,
forming its output (call this $X sub output$), while the input is $X sup +$
($X sub input$).
Hence the input is related to the output by
.LB
.EQ
left [ matrix {ccol {X sub input above \(sq }} right ] ~~ =
~~ left [ matrix {ccol {1 above -k} ccol {-k z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {X sub output above X sub output}} right ] ~ ,
.EN
.LE
so
.LB
.EQ
X sub input ~ = ~~ (1~-~ k z sup -1 )~X sub output ,
.EN
.LE
or
.LB
.EQ
{X sub output} over {X sub input} ~~=~~ 1 over {1~-~ k sub 1 z sup -1} ~ .
.EN
.LE
(The symbol \(sq is used here and elsewhere
to indicate an unimportant element of a vector
or matrix.)  This certainly has the form of a linear predictive
synthesis filter, which is
.LB
.EQ
X(z) over E(z) ~~=~~ 1 over {1~-~~ sum from k=1 to p ~a sub k
z sup -k}~~=~~ 1 over {1~-~a sub 1 z sup -1 } ~~~~~~
.EN
when $p=1$.
.LE
.pp
The behaviour of a second-order lattice filter, shown in Figure 6.10,
can be described by
.LB
.ne4
.EQ
left [ matrix {ccol {X sub 3 sup + above X sub 3 sup -}} right ] ~~ =
~~ left [ matrix {ccol {1 above -k sub 2 } ccol {-k sub 2 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {X sub 2 sup + above X sub 2 sup -}} right ]
.EN
.sp
.ne4
.EQ
left [ matrix {ccol {X sub 2 sup + above X sub 2 sup -}} right ] ~~ =
~~ left [ matrix {ccol {1 above -k sub 1 } ccol {-k sub 1 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {X sub 1 sup + above X sub 1 sup -}} right ]
.EN
.LE
with
.LB
.ne3
.EQ
X sub 3 sup + ~=~X sub input
.EN
.br
.EQ
X sub 1 sup + ~=~ X sub 1 sup - ~=~ X sub output .
.EN
.LE
.FC "Figure 6.10"
$X sub 2 sup +$ and $X sub 2 sup -$ can be eliminated by substituting the
second equation into the first, which yields
.LB
.EQ
left [ matrix {ccol {X sub input above \(sq }} right ] ~~ mark =
~~ left [ matrix {ccol {1 above -k sub 2 } ccol {-k sub 2 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {1 above -k sub 1 } ccol {-k sub 1 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {X sub output above X sub output}} right ]
.EN
.sp
.sp
.EQ
lineup = ~~ left [ matrix {ccol {1+k sub 1 k sub 2 z sup -1 above \(sq }
ccol { -k sub 1 z sup -1 -k sub 2 z sup -2 above \(sq }} right ]
~ left [ matrix {ccol {X sub output above X sub output}} right ] ~ .
.EN
.LE
This leads to an input-output relationship
.LB
.EQ
{X sub output} over {X sub input} ~~ = ~~
1 over {1~+~k sub 1 (k sub 2 -1)z sup -1 ~-~k sub 2 z sup -2} ~ ,
.EN
.LE
which has the required form, namely
.LB
.EQ
1 over {1~-~~ sum from k=1 to p ~a sub k z sup -k } ~~~~~~ (p=2)
.EN
.LE
when
.LB
.EQ
a sub 1 ~=~-k sub 1 (k sub 2 -1)
.EN
.br
.EQ
a sub 2 ~=~k sub 2.
.EN
.LE
.pp
A third-order filter is described by
.LB
.EQ
left [ matrix {ccol {X sub input above \(sq }} right ] ~~ =
~~ left [ matrix {ccol {1 above -k sub 3 } ccol {-k sub 3 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {1 above -k sub 2 } ccol {-k sub 2 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {1 above -k sub 1 } ccol {-k sub 1 z sup -1
above z sup -1}} right ]
~ left [ matrix {ccol {X sub output above X sub output}} right ] ~ ,
.EN
.LE
and brave souls can verify that this gives an input-output
relationship
.LB
.EQ
{X sub output} over {X sub input} ~~ = ~~ 
1 over {1~+~[k sub 2 k sub 3 + k sub 1 (1-k sub 2 )] z sup -1 ~+~
[k sub 1 k sub 3 (1-k sub 2 ) -k sub 2 ] z sup -2 ~-~ k sub 3 z sup -3 } ~ .
.EN
.LE
It is fairly obvious that a $p$'th order lattice filter will give the
required all-pole $p$'th order synthesis form,
.LB
.EQ
1 over { 1~-~~ sum from k=1 to p ~a sub k z sup -k } ~ .
.EN
.LE
.pp
We have not shown that the algorithm given in Procedure 6.3 for producing
reflection coefficients from filter coefficients gives those values
for $k sub i$ which are necessary to make the lattice filter equivalent
to the ordinary synthesis filter.  However, this is the case, and it is
easy to verify by hand for the first, second, and third-order cases.
.rh "Different lattice configurations."
The lattice filters of Figures 6.8, 6.9, and 6.10 have two multipliers
per section.
This is called a "two-multiplier" configuration.
However, there are other configurations which achieve
the same effect, but require different numbers of multiplies.
Figure 6.11 shows one-multiplier and four-multiplier configurations,
along with the familiar two-multiplier one.
.FC "Figure 6.11"
It is easy to verify that the three configurations can be modelled in
matrix terms by
.LB
.ne4
$
left [ matrix {ccol {X sup + above X sup -}} right ] ~~ = ~~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {Y sup + above Y sup -}} right ]
$		two-multiplier configuration
.sp
.sp
.ne4
$
left [ matrix {ccol {X sup + above X sup -}} right ] ~~ = ~~
left [ {1-k over 1+k} right ] sup 1/2 ~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {Y sup + above Y sup -}} right ]
$	one-multiplier configuration
.sp
.sp
.ne4
$
left [ matrix {ccol {X sup + above X sup -}} right ] ~~ = ~~
1 over {(1-k sup 2) sup 1/2} ~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {Y sup + above Y sup -}} right ]
$	four-multiplier configuration.
.LE
Each of the three has the same frequency-domain response, although
a different constant factor is involved in each case.
The effect of this can be annulled by performing a single multiply
operation on the output of a complete lattice chain.
The multiplier has the form
.LB
.EQ
left [ {1 - k sub p} over {1 + k sub p} ~.~
{1 - k sub p-1} over {1 + k sub p-1} ~.~...~.~
{1 - k sub 1} over {1 + k sub 1} right ] sup 1/2
.EN
.sp
.LE
for single-multiplier lattices, and
.LB
.EQ
left [ 1 over {1 - k sub p sup 2} ~.~
1 over {1 - k sub p-1 sup 2} ~.~...~.~
1 over {1 - k sub 1 sup 2} right ] sup 1/2
.EN
.LE
for four-multiplier lattices, where the reflection coefficients
in the lattice are $k sub p$, $k sub p-1$, ..., $k sub 1$.
.pp
There are important differences between these three configurations.
If multiplication is time-consuming, the one-multiplier model has obvious
computational advantages over the other two methods.
However, the four-multiplier structure behaves substantially better
in finite word-length implementations.  It is easy to show that, with this
configuration,
.LB
.EQ
(X sup - ) sup 2 ~+~ (Y sup + ) sup 2 ~~ = ~~
(X sup + ) sup 2 ~+~ (z sup -1 Y sup - ) sup 2 ,
.EN
.LE
\(em a relationship which suggests that the "energy" in the
the input signals, namely  $X sup +$ and $Y sup -$,  is preserved in the output
signals,  $X sup -$ and $Y sup +$.
Notice that care must be taken with the $z$-transforms, since squaring is a
non-linear operation.  $(z sup -1 Y sup - ) sup 2$  means the square of
the previous value of  $Y sup -$,  which is not the same
as  $z sup -2 (Y sup - ) sup 2$.
.pp
It has been shown (Gray and Markel, 1975) that the four-multiplier
configuration has some stability properties which are not shared by other
digital filter structures.
.[
Gray Markel 1975 Normalized digital filter structure
.]
When a linear predictive filter is used for synthesis, the parameters
of the filter \(em the $k$-parameters in the case of lattice filters,
and the $a$-parameters in the case of direct ones \(em change with time.
It is usually rather difficult to guarantee stability in the case of
time-varying filter parameters, but some guarantees can be made for a
chain of four-multiplier lattices.  Furthermore, if the input is a
discrete delta function, the cumulative energies at each stage of the
lattice are the same, and so maximum dynamic range will be achieved
for the whole filter if each section is implemented with the same
word size.
.rh "Lattice analysis."
It is quite easy to construct a filter which is inverse to
a single-stage lattice.
The structure of Figure 6.12(a) does the job.
(Ignore for a moment
the dashed lines connecting Figure 6.12(a) and (b).)  Its matrix transfer
function is
.FC "Figure 6.12"
.LB
.ne4
$
left [ matrix {ccol {Y sup + above Y sup -}} right ] ~~=~~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {X sup + above X sup -}} right ]
$	analysis lattice (Figure 6.12(a)).
.LE
Notice that this is exactly the same as the transfer function of the
synthesis lattice of Figure 6.9, which is reproduced
in Figure 6.12(b), except that the $X$'s and $Y$'s are reversed:
.LB
.ne4
$
left [ matrix {ccol {X sup + above X sup -}} right ] ~~=~~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}} right ]
~ left [ matrix {ccol {Y sup + above Y sup -}} right ]
$	synthesis lattice (Figure 6.12(b)),
.LE
or, in other words,
.LB
.ne4
$
left [ matrix {ccol {Y sup + above Y sup -}} right ] ~~ = ~~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}}
right ] sup -1
~ left [ matrix {ccol {X sup + above X sup -}} right ]
$	synthesis lattice (Figure 6.12(b)).
.LE
Hence if the filters of Figures 6.12(a) and (b) were connected together
as shown by the dashed lines, they
would cancel each other out, and the overall transfer would be unity:
.LB
.ne4
.EQ
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}}
right ] ~
left [ matrix {ccol {1 above -k} ccol {-kz sup -1 above z sup -1}}
right ] sup -1 ~~ = ~~
left [ matrix {ccol {1 above 0} ccol {0 above 1}} right ] ~ .
.EN
.LE
Actually, such a connection is not possible in physical terms,
for although the upper paths can be joined together the lower ones can not.
The right-hand lower point of Figure 6.12(a) is an
.ul
output
terminal, and so is the left-hand lower one of Figure 6.12(b)!  However,
there is no need to envisage a physical connection of the lower paths.
It is sufficient for cancellation just to assume that the signals at both
of the points turn out to be the same.
.pp
And they do.
The general case of a $p$-stage analysis lattice
connected to a $p$-stage synthesis
lattice is shown in Figure 6.13.
.FC "Figure 6.13"
Notice that the forward and backward paths are connected together at both
of the extreme ends of the system.
It is not difficult to show that under these
conditions the signal at the lower righthand
terminal of the analysis chain will equal that at the lower lefthand
terminal of the synthesis chain, even though they are not connected,
provided the upper terminals are connected together as shown by the dashed
line.
Of course, the reflection coefficients  $k sub 1$, $k sub 2$, ...,
$k sub p$  in the analysis lattice must equal those in the synthesis
lattice, and as Figure 6.13 shows the order is reversed in the synthesis
lattice.
Successive analysis and synthesis sections pair off, working from
the middle outwards.  At each stage the sections cancel each other out,
giving a unit transfer function as demonstrated above.
.rh "Estimating reflection coefficients."
As stated earlier in this chapter, the key problem in linear prediction is to
determine the values of the predictive coefficients \(em in this case, the
reflection coefficients.
If this is done correctly, we have shown using Procedure 6.3 that
the the synthesis part of Figure 6.13 performs the same calculation that
a conventional direct-form linear predictive synthesizer would, and hence
the signal that excites it \(em that is, the signal represented by the
dashed line \(em must be the prediction residual, or error signal, discussed
earlier.  The system is effectively the same as the high-order adaptive
differential pulse code modulation one of Figure 6.1.
.pp
One of the most interesting features of the lattice structure for
analysis filters is that calculation of suitable values for the
reflection coefficients can be done locally at each stage of the lattice.
For example, consider the $i$'th section of the analysis lattice in
Figure 6.13.  It is possible to determine a suitable value of $k sub i$
simply by performing a calculation on the inputs to the $i$'th
section (ie $X sup +$ and $X sup -$ in Figure 6.12).
No longer need the complicated global optimization technique of matrix
inversion be used, as in the autocorrelation and covariance methods discussed
earlier.
.pp
A suitable value for $k$ in the single lattice section of Figure 6.12 is
.LB
.EQ
k~ = ~~ {E[ x sup + (n) x sup - (n-1)]} over
{( E[ x sup + (n) sup 2 ] E[ x sup - (n-1) sup 2 ] ) sup 1/2} ~~ ;
.EN
.LE
that is, the statistical correlation between $x sup + (n)$ and
$x sup - (n-1)$.
Here, $x sup + (n)$ and $x sup - (n)$ represent the input signals to the
upper and lower paths (recall that $X sup +$ and $X sup -$
are their $z$-transforms).
$x sup - (n-1)$ is just $x sup - (n)$ delayed by one time unit, that is,
the output of the $z sup -1$ box in the Figure.
.pp
The criterion of optimality for the autocorrelation and covariance methods
was that the prediction error, that is, the signal which emerges from
the right-hand end of the upper path of a lattice analysis filter,
should be minimized in a mean-square sense.
The reflection coefficients obtained from the above formula do not necessarily
satisfy any such global minimization criterion.
Nevertheless, they do keep the error signal small, and have been used with
success in speech analysis systems.
.pp
It is easy to minimize the output from either the upper or the lower path
of the lattice filter at each stage.  For example, the $z$-transform of the
upper output is given by
.LB
.EQ
Y sup + ~~=~~ X sup + ~-~ k z sup -1 X sup - ,
.EN
.LE
or
.LB
.EQ
y sup + (n) ~~=~~ x sup + (n) ~-~ k x sup - (n-1) .
.EN
.LE
Hence
.LB
.EQ
E[y sup + (n) sup 2 ] ~~ = ~~ E[x sup + (n) sup 2 ] ~-~
2kE[x sup + (n) x sup - (n-1) ] ~+~ k sup 2 E [x sup - (n-1) sup 2 ] ,
.EN
.LE
where $E$ stands for expected value, and this reaches a minimum when the
derivative with respect to $k$ becomes zero:
.LB
.EQ
-2E[x sup + (n) x sup - (n-1) ] ~+~ 2kE[x sup - (n-1) sup 2 ] ~~=~0 ,
.EN
.LE
that is, when
.LB
.EQ
k~ = ~~ {E[x sup + (n) x sup - (n-1) ]} over {E[x sup - (n-1) sup 2 ]
} ~ .
.EN
.LE
A similar calculation shows that the output of the lower path is minimized
when
.LB
.EQ
k~ = ~~ {E[x sup + (n) x sup - (n-1) ]} over {E[x sup + (n-1) sup 2 ]
} ~ .
.EN
.LE
Unfortunately, either of these expressions can exceed 1, leading to an
unstable filter.
The value of $k$ cited earlier is the geometric mean of these two
expressions, and since it is a correlation coefficient, must be less than 1.
.pp
Another possibility is to minimize the expected value of the sum of the
squares of the upper and lower outputs:
.LB
.EQ
y sup + (n) sup 2 ~+~ y sup - (n) sup 2 ~~ = ~~
(1+k sup 2 )x sup + (n) sup 2 ~-~ 2kx sup + (n) x sup - (n-1) ~+~
(1+k sup 2 )x sup - (n) sup 2 .
.EN
.LE
Taking expected values and setting the derivative with respect to k to zero
leads to
.LB
.EQ
k~ = ~~ {E[x sup + (n) x sup - (n-1) ]} over
{ half ~ E[x sup + (n) sup 2 ~+~ x sup - (n-1) sup 2 ]} ~.
.EN
.LE
This also is guaranteed to be less than 1, and has given good results
in speech analysis systems.
.pp
Figure 6.14 shows the implementation of a single section of an analysis
lattice.
.FC "Figure 6.14"
The signals $x sup + (n)$ and $x sup - (n-1)$ are fed to a
correlator, which produces a suitable value for $k$.
This value is used to calculate the output of the lattice section,
and hence the input to the next lattice section.
The reflection coefficient needs to be low-pass filtered, because it will
only be transmitted to the synthesizer occasionally (say every 20\ msec) and so a
short-term average is required.
.pp
One implementation of the correlator is shown in Figure 6.15 (Kang, 1974).
.[
Kang 1974
.]
.FC "Figure 6.15"
This calculates the value of $k$ given by the last equation above, and does it
by summing and differencing the two
signals $x sup + (n)$ and $x sup - (n-1)$, squaring the results to give
.LB
.EQ
x sup + (n) sup 2 + 2x sup + (n mark ) x sup - (n-1) +x sup - (n-1) sup 2
~~~~~~~~ x sup + (n) sup 2 - 2x sup + (n) x sup - (n-1) +x sup - (n-1) sup 2
~ ,
.EN
.LE
and summing and differencing these, to yield
.LB
.EQ
lineup 2x sup + (n) sup 2 + 2x sup - (n-1) sup 2 ~~~~~~~~
4x sup + (n) x sup - (n-1) ~ .
.EN
.LE
.sp
Before these are divided to give the final coefficient $k$, they are
individually low-pass filtered.
While some rather complex schemes have been proposed,
based upon Kalman filter theory (eg Matsui
.ul
et al,
1972),
.[
Matsui Nakajima Suzuki Omura 1972
.]
a simple exponential weighted past average has been found to be
satisfactory.  This has $z$-transform
.LB
.EQ
1 over {64 - 63 z sup -1} ~ ,
.EN
.LE
that is, in the time domain,
.LB
.EQ
y(n)~ = ~~ 63 over 64 ~ y(n-1) ~+~ 1 over 64 ~ y(n) ~ .
.EN
.LE
This filter exponentially averages past sample values
with a time-constant of 64 sampling intervals
\(em that is, 8\ msec at an 8\ kHz sampling rate.
.sh "6.4  Pitch estimation"
.pp
It is sometimes useful to think of linear prediction as a kind of
curve-fitting technique.
Figure 6.16 illustrates how four samples of a speech signal can predict
the next one.
.FC "Figure 6.16"
In essence, a curve is drawn through four points
to predict the position of the fifth, and only the prediction error
is actually transmitted.  Now if the order of linear prediction
is high enough (at least 10), and if the coefficients are chosen
correctly, the prediction will closely model the resonances of the
vocal tract.  Thus the error will actually be zero, except at pitch
pulses.
.pp
Figure 6.17 shows a segment of voiced speech together with the prediction
error (often called the prediction residual).
.FC "Figure 6.17"
It is apparent that the
error is indeed small, except at pitch pulses.
This suggests that a good way to determine the pitch period is to examine
the error signal, perhaps by looking at its autocorrelation function.
As with all pitch detection methods, one must be
careful:  spurious peaks can occur, especially in nasal sounds when
the all-pole model provided by linear prediction fails.  Continuity
constraints, which use previous values of pitch period when determining
which peak to accept as a new pitch impulse, can eliminate many of these
spurious peaks.  Unvoiced speech should produce an error signal with no
prominent peaks, and this needs to be detected.
Voiced fricatives are a difficult case:  peaks should be present
but the general noise level of the error signal will be greater than
it is in
purely voiced speech.
Such considerations have been taken into account in a practical pitch
estimation system based upon this technique (Markel, 1972).
.[
Markel 1972 SIFT
.]
.pp
This method of pitch detection highlights another advantage of the lattice
analysis technique.  When using autocorrelation or covariance analysis to
determine the filter (or reflection) coefficients, the error signal is not
normally produced.  It can, of course, be found by taking the speech samples
which constitute the current frame and running them through an analysis
filter whose parameters are those determined by the analysis, but this
is a computationally demanding exercise, for the filter must run at the
speech sampling rate (say 8\ kHz) instead of at the frame rate (say 50\ Hz).
Usually, pitch is estimated by other methods, like those discussed in
Chapter 4, when using autocorrelation or covariance linear prediction.
However, we have seen above that with the lattice method, the error
signal is produced as a byproduct:  it appears at the right-hand end
of the  upper path of the lattice chain.  Thus it is already available
for use in determining pitch periods.
.sh "6.5  Parameter coding for linear predictive storage or transmission"
.pp
In this section, the coding requirements of linear predictive parameters
will be examined.  The parameters that need to be stored or transmitted
are:
.LB
.NP
pitch
.NP
voiced-unvoiced flag
.NP
overall amplitude level
.NP
filter coefficients or reflection coefficients.
.LE
The first three are parameters of the excitation source.
They can be derived directly from the error signal as indicated above, if
it is generated (as it is in lattice implementations); or by other
methods if no error signal is calculated.
The filter or reflection coefficients are, of course, the main product
of linear predictive analysis.
.pp
It is generally agreed that around 60 levels, logarithmically spaced,
are needed to represent pitch for telephone quality speech.
The voiced-unvoiced indication requires one bit, but since pitch is
irrelevant in unvoiced speech it can be coded as one of the pitch
levels.  For example, with 6-bit coding of pitch, the value 0 can be
reserved to indicate unvoiced speech, with values 1\-63 indicating the
pitch of voiced speech.
The overall gain has not been discussed above:  it is simply the average
amplitude of the error signal.  Five bits on a logarithmic scale
are sufficient to represent it.
.pp
Filter coefficients are not very amenable to quantization.  At least
8\-10\ bits are required for each one.  However, reflection coefficients
are better behaved, and 5\-6\ bits each seems adequate.  The number of
coefficients that must be stored or transmitted is the same as the
order of the linear prediction:  10 is commonly used for low-quality
speech, with as many as 15 for higher qualities.
.pp
These figures give around 100\ bits/frame for a 10'th order system using
filter coefficients, and around 65\ bits/frame for a 10'th order system
using reflection coefficients.  Frame lengths vary between 10\ msec
and 25\ msec, depending on the quality desired.  Thus for 20\ msec frames,
the data rates work out at around 5000\ bit/s using filter coefficients,
and 3250\ bit/s using reflection coefficients.
.pp
Substantially lower data rates can be achieved by more careful
coding of parameters.  In 1976, the US Government defined a standard
coding scheme for 10-pole linear prediction with a data rate of
2400\ bit/s \(em conveniently chosen as one of the
commonly-used rates for serial data transmission.
This standard, called LPC-10, tackles the difficult problem of
protection against transmission errors (Fussell
.ul
et al,
1978).
.[
Fussell Boudra Abzug Cowing 1978
.]
.pp
Whenever data rates are reduced, redundancy inherent in the signal is
necessarily lost and so the effect of transmission errors becomes
greatly magnified.
For example, a single corrupted sample in PCM transmission of speech
will probably not be noticed, and even a short burst of errors will be
perceived as a click which can readily be distinguished from the speech.
However, any error in LPC transmission will last for one entire
frame \(em say 20\ msec \(em and worse still, it will be integrated into the
speech signal and not easily discriminated from it by the listener's brain.
A single corruption may, for example, change a voiced frame into an
unvoiced one, or vice versa.  Even if it affects only 
a reflection coefficient it will change the resonance characteristics
of that frame, and change them in a way that does not simply sound like
superimposed noise.
.pp
Table 6.1 shows the LPC-10 coding scheme.
.RF
.in+0.1i
.ta 2.0i +1.8i +0.6i
.nr x1 (\w'voiced sounds'/2)
.nr x2 (\w'unvoiced sounds'/2)
.ul
	\h'-\n(x1u'voiced sounds	\h'-\n(x2u'unvoiced sounds
.sp
pitch/voicing	7	7	60 pitch levels, Hamming
			\h'\w'00 'u'and Gray coded
energy	5	5	logarithmically coded
$k sub 1$	5	5	coded by table lookup
$k sub 2$	5	5	coded by table lookup
$k sub 3$	5	5
$k sub 4$	5	5
$k sub 5$	4	\-
$k sub 6$	4	\-
$k sub 7$	4	\-
$k sub 8$	4	\-
$k sub 9$	3	\-
$k sub 10$	2	\-
synchronization	1	1	alternating 1,0 pattern
error detection/	\-	\h'-\w'0'u'21
correction
	\h'-\w'__'u+\w'0'u'__	\h'-\w'__'u+\w'0'u'__
.sp
	\h'-\w'0'u'54	\h'-\w'0'u'54
.sp
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
	frame rate: 44.4\ Hz (22.5\ msec frames)
.in 0
.FG "Table 6.1  Bit requirements for each parameter in LPC-10 coding scheme"
Different coding is used for voiced and unvoiced frames.
Only four reflection coefficients are transmitted for unvoiced frames,
because it has been determined that no perceptible increase in speech quality
occurs when more are used.
The bits saved are more fruitfully employed to provide error detection
and correction for the other parameters.
Seven bits are used for pitch and the voiced-unvoiced flag, and they are
redundant in that only 60 possible pitch values are
allowed.
Most transmission errors in this field will be detected by the receiver;
which can then use an estimate of pitch based on previous values and
discard the erroneous one.  Pitch values are also Gray coded so that
even if errors are not detected, there is a good chance that an adjacent
pitch value is read instead.
Different numbers of bits are allocated to the various reflection
coefficients:  experience shows that the lower-numbered ones contribute
most highly to intelligibility and so these are quantized most finely.
In addition, a table lookup operation is performed on the code
generated for the first two, providing a non-linear quantization which is
chosen to minimize the error on a statistical basis.
.pp
With 54\ bits/frame and 22.5\ msec frames, LPC-10 requires a 2400\ bit/s
data rate.  Even lower rates have been used successfully for lower-quality
speech.  The Speak 'n Spell toy, described in Chapter 11, has an
average data rate of 1200\ bit/s.  Rates as low as 600\ bit/s have
been achieved (Kang and Coulter, 1976) by pattern recognition techniques operating
on the reflection coefficients:  however, the speech quality is not good.
.[
Kang Coulter 1976
.]
.sh "6.6  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "6.7  Further reading"
.pp
Most recent books on digital signal processing contain some information
on linear prediction (see Oppenheim and Schafer, 1975; Rabiner and Gold, 1975;
and Rabiner and Schafer, 1978; all referenced at the end of Chapter 4).
.LB "nn"
.\"Atal-1971-1
.]-
.ds [A Atal, B.S.
.as [A " and Hanauer, S.L.
.ds [D 1971
.ds [T Speech analysis and synthesis by linear prediction of the acoustic wave
.ds [J JASA
.ds [V 50
.ds [P 637-655
.nr [P 1
.ds [O August
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
This paper is of historical importance because it introduced the idea
of linear prediction to the speech processing community.
.in-2n
.\"Makhoul-1975-2
.]-
.ds [A Makhoul, J.I.
.ds [D 1975
.ds [K *
.ds [T Linear prediction: a tutorial review
.ds [J Proc IEEE
.ds [V 63
.ds [N 4
.ds [P 561-580
.nr [P 1
.ds [O April
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
An interesting, informative, and readable survey of linear prediction.
.in-2n
.\"Markel-1976-3
.]-
.ds [A Markel, J.D.
.as [A " and Gray, A.H.
.ds [D 1976
.ds [T Linear prediction of speech
.ds [I Springer Verlag
.ds [C Berlin
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is the only book which is entirely devoted to linear prediction of speech.
It is an essential reference work for those interested in the subject.
.in-2n
.\"Wiener-1947-4
.]-
.ds [A Wiener, N.
.ds [D 1947
.ds [T Extrapolation, interpolation and smoothing of stationary time series
.ds [I MIT Press
.ds [C Cambridge, Massachusetts
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Linear prediction is often thought of as a relatively new technique,
but it is only its application to speech processing that is novel.
Wiener develops all of the basic mathematics used in linear prediction
of speech, except the lattice filter structure.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "7  JOINING SEGMENTS OF SPEECH"
.ds RT "Joining segments of speech
.ds CX "Principles of computer speech
.pp
The obvious way to provide speech output from computers
is to select the basic acoustic units to be used; record them;
and generate utterances by concatenating together appropriate segments
from this pre-stored inventory.
The crucial question then becomes, what are the basic units?
Should they be whole sentences, words, syllables, or phonemes?
.pp
There are several trade-offs to be considered here.
The larger the units, the more utterances have to be stored.
It is not so much the length of individual utterances that is of concern,
but rather their variety, which tends to increase exponentially instead
of linearly with the size of the basic unit.  Numbers provide an
easy example:  there are $10 sup 7$ 7-digit telephone numbers, and it is
certainly infeasible to record each one individually.
Note that as storage technology improves the limitation is becoming
more and more one of recording the utterances in the first place rather
than finding somewhere to store them.
At a PCM data rate of 50\ Kbit/s, a 100\ Mbyte disk can hold over 4\ hours
of continuous speech.
With linear predictive coding at 1\ Kbit/s it holds 0.8 of a
megasecond \(em well over a week.  And this is a 24-hour 7-day week,
which corresponds to a working month; and continuous speech \(em without
pauses \(em which probably requires another factor of five for
production by a person.
Setting up a recording session to fill the disk would be a formidable
task indeed!
Furthermore, the use of videodisks \(em which will be common domestic items
by the end of the decade \(em could increase these figures by a factor of 50.
.pp
The word seems to be a sensibly-sized basic unit.
Many applications use a rather limited vocabulary \(em 190 words
for the airline reservation system described in Chapter 1.
Even at PCM data rates, this will consume less than 0.5\ Mbyte of
storage.
Unfortunately, coarticulation and prosodic factors now come into play.
.pp
Real speech is connected \(em there are few gaps between words.
Coarticulation, where sounds are affected by those on either side,
naturally operates across word boundaries.
And the time constants of coarticulation are associated with the
mechanics of the vocal tract and hence measure tens or hundreds
of msec.  Thus the effects straddle several pitch periods (100\ Hz pitch
has 10\ msec period) and cannot be simulated by simple interpolation of the
speech waveform.
.pp
Prosodic features \(em notably pitch and rhythm \(em span much longer
stretches of speech than single words.  As far as most speech output
applications are concerned, they operate at the utterance level of
a single, sentence-sized, information unit.  They cannot be
accomodated if speech waveforms of individual words of
the utterance are stored,
for it is rarely feasible to alter the fundamental
frequency or duration of a time waveform without changing all the formant
resonances as well.
However, both word-to-word coarticulation and the essential features
of rhythm and intonation can be incorporated if the stored words are
coded in source-filter form.
.pp
For more general applications of speech output, the limitations of
word storage soon become apparent.  Although people's daily
vocabularies are not large, most words have a variety
of inflected forms which need to be treated separately if a strict
policy is adopted of word storage.  For instance, in this book
there are 84,000 words, and 6,500 (8%) different ones (counting
inflected forms).
In Chapter 1 alone, there are 6,800 words and 1,700 (25%) different ones.
.pp
It seems crazy to treat a simple inflection like "$-s$" or its voiced
counterpart, "$-z$" (as in "inflection\c
.ul
s\c
"),
as a totally different word from the base form.
But once you consider storing roots and endings separately,
it becomes apparent
that there is a vast number of different endings, and it is difficult to know
where to draw the line.  It is natural to think instead of simply
using the syllable as the basic unit.
.pp
A generous estimate of the number of different syllables in English is 10,000.
At three a second, only about an
hour's storage is required for them all.  But waveform storage
will certainly not do.
Although coarticulation effects between words are needed to make
speech sound fluent, coarticulation between syllables is necessary
for it even to be
.ul
comprehensible.
Adopting a source-filter form of representation is essential, as is
some scheme of interpolation between syllables which simulates
coarticulation.
Unfortunately, a great deal of acoustic action occurs at syllable
boundaries \(em stops are exploded, the sound source changes
between voicing and frication, and so on.  It may be more appropriate
to consider inverse syllables, comprising a vowel-consonant-vowel sequence
instead of consonant-vowel-consonant.
(These have jokingly been dubbed "lisibles"!)
.pp
There is again some considerable practical difficulty in creating
an inventory of syllables, or lisibles.
Now it is not so much the recording that is impractical, but
the editing needed to ensure that the cuts between syllables are made
at exactly the right point.  As units get smaller, the exact
placement of the boundaries becomes ever more critical; and several thousand
sensitive editing jobs is no easy task.
.pp
Since quite general effects of coarticulation must be accomodated
with syllable synthesis, there will not necessarily be significant
deterioration if smaller, demisyllable, units are employed.
This reduces the segment inventory to an estimated 1000\-2000 entries,
and the tedious job of editing each one individually becomes at
least feasible, if not enviable.
Alternatively, the segment inventory could be created by artificial
means involving cut-and-try experiments with resonance parameters.
.pp
The ultimate in economy of inventory size, of course, is to use
phonemes as the basic unit.  This makes the most critical
part of the task interpolation between units, rather than their
construction or recording.  With only about 40 phonemes
in English, each one can be examined in many different contexts to
ascertain the best data to store.
There is no need to record them directly from a human voice \(em it
would be difficult anyway for most cannot be produced in isolation.
In fact, a phoneme is an abstract unit, not a particular sound
(recall the discussion of phonology in Chapter 2), and so it is
most appropriate that data be abstracted from several different
realizations rather than an exact record made of any one.
.pp
If information is stored about phonological units of
speech \(em phonemes \(em the difficult task of phonological-to-phonetic
conversion must necessarily be performed automatically.
Allophones are created by altering the transitions between units,
and to a lesser extent by modifying the central parts of the units
themselves.
The rules for making transitions will have a big effect on the
quality of the resulting speech.
Instead of trying to perform this task automatically by a computer
program, the allophones themselves could be stored.  This will
ease the job of generating transitions between segments, but
will certainly not eliminate it.
The total number of allophones will depend on the narrowness of the
transcription system:  60\-80 is typical, and it is unlikely to exceed
one or two hundred.  In any case there will not be a storage problem.
However, now the burden of producing an allophonic transcription
has been transferred to the person who codes the utterance prior
to synthesizing it.  If he is skilful and patient, he should
be able to coax the system into producing fairly understandable
speech, but the effort required for this on a per-utterance basis
should not be underestimated.
.RF
.nr x0 \w'sentences  '
.nr x1 \w'  '
.nr x2 \w'depends on  '
.nr x3 \w'generalized or  '
.nr x4 \w'natural speech  '
.nr x5 \w'author of segment'
.nr x6 \n(x0u+\n(x1u+\n(x2u+\n(x3u+\n(x4u+\n(x5u
.nr x7 (\n(.l-\n(x6)/2
.in \n(x7u
.ta \n(x0u +\n(x1u +\n(x2u +\n(x3u +\n(x4u
	|	size of	storage	source of	principal
	|	utterance	method	utterance	burden is
	|	inventory		inventory	placed on
	|\h'-1.0i'\l'\n(x6u\(ul'
	|
sentences	|	depends on	waveform or	natural speech	recording artist,
	|	application	source-filter		storage medium
	|		parameters
	|
words	|	depends on	source-filter	natural speech	recording artist
	|	application	parameters		and editor,
	|				storage medium
	|
syllables/	|	\0\0\010000	source-filter	natural speech	recording editor
  lisibles	|		parameters
	|
demi-	|	\0\0\0\01000	source-filter	natural speech	recording editor
  syllables	|		parameters	or artificially	or inventory
	|			generated	compiler
	|
phonemes	|	\0\0\0\0\0\040	generalized	artificially	author of segment
	|		parameters	generated	concatenation
	|				program
	|
allophones	|	\0\050\-100	generalized or	artificially	coder of
	|		source-filter	generated or	synthesized
	|		parameters	natural speech	utterances
	|\h'-1.0i'\l'\n(x6u\(ul'
.in 0
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 7.1  Some issues relevant to choice of basic unit"
.pp
Table 7.1 summarizes in broad brush-strokes the issues which relate to the
choice of basic unit for concatenation.
The sections which follow provide more detail about the different
methods of joining segments of speech together.
Only segmental aspects are considered, for the important problems of
prosody will be treated in the next chapter.
All of the methods rely to some extent on the acoustic properties of speech,
and as smaller basic units are considered the role of speech acoustics
becomes more important.
It is impossible in a book like this to give a detailed account of acoustic
phonetics, for it would take several volumes!
What I aim to do in the following pages is to highlight some salient features
which are relevant to segment concatenation, without attempting to be
complete.
.sh "7.1  Word concatenation"
.pp
For general speech output, word concatenation is an inherently limited
technique because of the large number of phonetically different words.
Despite this fact, it is at present the most widely-used synthesis
method, and is likely to remain so for several years.
We have seen that the primary problems are word-to-word
coarticulation and prosody; and both can be overcome, at least to a useful
approximation, by coding the words in source-filter form.
.rh "Time-domain techniques."
Nevertheless, a surprising number of applications simply store
the time waveform, coded, usually, by one of the techniques described in
Chapter 3.
From an implementation point of view there are many advantages to this.
Speech quality can easily be controlled by selecting a suitable sampling
rate and coding scheme.
A natural-sounding voice is guaranteed; male or female as desired.
The equipment required is minimal \(em a digital-to-analogue
converter and post-sampling filter will do for synthesis if
PCM coding is used, and
DPCM, ADPCM, and delta modulation decoders are not much more complicated.
.pp
From a speech point of view, the resulting utterances can never be made
convincingly fluent.
We discussed the early experiments of Stowe and Hampton (1961)
at the beginning of Chapter 3.
.[
Stowe Hampton 1961
.]
A major drawback to word concatenation in the
analogue domain is the introduction of clicks and other interference
between words:  it is difficult to prevent the time waveform transitions
from adding extraneous sounds.
This poses no problem with digital storage, however, for the waveforms
can be edited accurately prior to storage so that they start
and finish at an exactly
zero level.
Rather, the lack of fluency stems from the absence of proper control
of coarticulation and prosody.
.pp
But this is not necessarily a serious drawback if the application is
a sufficiently limited one.  Complete, invariant utterances can be
stored as one unit.  Often they must contain data-dependent
slot-fillers, as in
.LB
This flight makes \(em stops
.LE
and
.LB
Flight number \(em leaves \(em at \(em , arrives in \(em at \(em
.LE
(taken from the airline reservation system of Chapter 1
(Levinson and Shipley, 1980)).
.[
Levinson Shipley 1980
.]
Then, each slot-filling word is recorded in an intonation consistent
both with its position in the template utterance and with the
intonation of that utterance.
This could be done by embedding the word in the utterance
for recording, and excising it by digital editing before storage.
It would be dangerous to try to take into account coarticulation effects,
for the coarticulation could not be made consistent with both the
several slot-fillers and the single template.
This could be overcome if several versions of the template were stored,
but then the scheme becomes subject to combinatorial explosion
if there is more than one slot in a single utterance.
But it is not really necessary, for the lack of fluency will probably
be interpreted by a benevolent listener as an attempt to convey the
information as clearly as possible.
.pp
Difficulties will occur if the same slot-filler is used in different
contexts.  For instance, the first gap in each of the sentences above
contains a number; yet the intonation of that number is different.
Many systems simply ignore this problem.
Then one does notice anomalies, if one is attentive:  the words come,
as it were, from different mouths, without fluency.
However, the problem is not necessarily acute.  If it is, two or more
versions of each slot-filler can be recorded, one for each context.
.pp
As an example, consider the synthesis of 7-digit telephone numbers,
like 289\-5371.  If one version only of each digit is stored,
it should be recorded in a level tone of voice.  A pause should be
inserted after the third digit of the synthetic number, to accord
with common elocution.  The result will certainly be unnatural, although
it should be clear and intelligible.
Any pitch errors in the recordings will make certain numbers
audibly anomalous.
At the other extreme, 70 single digits could be stored, one version of
each digit for each position in the number.  The recording will be
tedious and error-prone, and the synthetic utterances will still not
be fluent \(em for coarticulation is ignored \(em but instead
unnaturally clearly enunciated.  A compromise is to record only
three versions of each digit, one for any of the
five positions
.nr x1 \w'\(ul'
.nr x2 (8*\n(x1)
.nr x3 0.2m
\zx\h'\n(x1u'\zx\h'\n(x1u'\h'\n(x1u'\z\-\h'\n(x1u'\zx\h'\n(x1u'\zx\h'\n(x1u'\c
\zx\h'\n(x1u'\h'\n(x1u'\v'\n(x3u'\l'-\n(x2u\(ul'\v'-\n(x3u' ,
another one for the third position
\h'\n(x1u'\h'\n(x1u'\zx\h'\n(x1u'\z\-\h'\n(x1u'\h'\n(x1u'\c
\h'\n(x1u'\h'\n(x1u'\h'\n(x1u'\v'\n(x3u'\l'-\n(x2u\(ul'\v'-\n(x3u' ,
and the last for the final position
\h'\n(x1u'\h'\n(x1u'\h'\n(x1u'\z\-\h'\n(x1u'\h'\n(x1u'\c
\h'\n(x1u'\h'\n(x1u'\zx\h'\n(x1u'\v'\n(x3u'\l'-\n(x2u\(ul'\v'-\n(x3u' .
The first version will be in a level voice, the second an
incomplete, rising tone; and the third a final, dropping pitch.
.rh "Joining formant-coded words."
The limitations of the time-domain method are lack of
fluency caused by unnatural transitions between words, and the
combinatorial explosion created by recording slot-fillers several times
in different contexts.
Both of these problems can be alleviated by storing formant tracks,
concatenating them with suitable interpolation, and applying a complete
pitch contour suitable for the whole utterance.
But one can still not generate conversational speech, for natural speech
rhythms cause non-linear warpings of the time axis which cannot reasonably
be imitated by this method.
.pp
Solving problems often creates others.
As we saw in Chapter 4, it is not easy to obtain reliable formant tracks
automatically.  Yet hand-editing of formant parameters adds a whole new
dimension to the problem of vocabulary construction, for it is
an exceedingly tiresome and time-consuming task.
Even after such tweaking, resynthesized utterances will be degraded
considerably from the original, for the source-filter model is by no means
a perfect one.
A hardware or real-time software formant synthesizer must be added
to the system, presenting design problems and creating extra cost.
Should a serial or parallel synthesizer be used? \(em the latter offers
potentially better speech (especially in nasal sounds), but requires
additional parameters, namely formant amplitudes, to be estimated.
Finally, as we will see in the next chapter, it is not an easy matter to
generate a suitable pitch contour and apply it to the utterance.
.pp
Strangely enough, the interpolation itself does not present any great
difficulty, for there is not enough information in the formant-coded
words to make possible sophisticated coarticulation.
The need for interpolation is most pressing when one word ends with
a voiced sound and the next begins with one.
If either the end of the first or the beginning of the second word
(or both) is unvoiced, unnatural formant transitions do not matter
for they will not be heard.
Actually, this is only strictly true for fricative transitions:  if
the juncture is aspirated then formants will be perceived in the
aspiration.  However,
.ul
h
is the only fully aspirated sound in English,
and it is relatively uncommon.
It is not absolutely necessary to interpolate the fricative filter resonance,
because smooth transitions from one fricative sound to another are rare
in natural speech.
.pp
Hence unless both sides of the junction are voiced, no interpolation
is needed:  simple abuttal of the stored parameter tracks will do.
Note that this is
.ul
not
the same as joining time waveforms, for the synthesizer
will automatically ensure a relatively smooth transition from one
segment to another because of energy storage in the filters.
A new set of resonance parameters for the formant-coded words will be stored
every 10 or 20 msec (see Chapter 5), and so the transition will automatically
be smoothed over this time period.
.pp
For voiced-to-voiced transitions, some interpolation is needed.
An overlap period of duration, say, 50\ msec, is established, and
the resonance parameters in the final 50\ msec of the first word are
averaged with those in the first 50\ msec of the second.
The average is weighted, with the first word's formants dominating
at the beginning and their effect progressively dying out
in favour of the second word.
.pp
More sophisticated than a simple average is to weight the components
according to how rapidly they are changing.
If the spectral change in one word is much greater than that in the
other, we might expect that this will dominate the transition.
A simple measure of spectral derivative at any given time can be found
by adding the magnitude of the discrepancies in each formant frequency
between one sample and the next.
The spectral change in the transition region can be obtained by summing
the spectral derivatives at each sample in the region.
Such a measure can perhaps be made more accurate by taking into
account the relative importance of the formants, but will probably
never be more than a rough and ready yardstick.
At any rate, it can be used to load the average in favour of the
dominant side of the junction.
.pp
Much more important for naturalness of the speech are the effects
of rhythm and intonation, discussed in the next chapter.
.pp
Such a scheme has been implemented and tested on \(em guess what! \(em 7-digit
telephone numbers (Rabiner
.ul
et al,
1971).
.[
Rabiner Schafer Flanagan 1971
.]
Significant improvement (at the 5% level of statistical
significance) in people's
ability to recall numbers was found for this method over direct
abuttal of either natural or synthetic versions of the digits.
Although the method seemed, on balance, to produce utterances that were
recalled less accurately than completely natural spoken
telephone numbers, the difference was not significant (at the 5% level).
The system was also used to generate wiring instructions by computer
directly from the connection list, as described in Chapter 1.
As noted there, synthetic speech was actually preferred to natural speech
in the noisy environment of the production line.
.rh "Joining linear predictive coded words."
Because obtaining accurate formant tracks for natural utterances
by Fourier transform methods is difficult, it is worth considering
the use of linear prediction as the source-filter model.
Actually, formant resonances can be extracted from linear predictive
coefficients quite easily, but there is no need to do this because
the reflection coefficients themselves are quite suitable
for interpolation.
.pp
A slightly different interpolation scheme from that described in the
previous section has been reported (Olive, 1975).
.[
Olive 1975
.]
The reflection coefficients were spliced during an overlap region of
only 20\ msec.
More interestingly, attempts were made to suppress the plosive bursts
of stop sounds in cases where they were followed by another stop at
the beginning of the next word.
This is a common coarticulation, occurring, for instance, in the phrase
"stop burst".  In running speech, the plosion on the
.ul
p
of "stop" is
normally suppressed because it is followed by another stop.
This is a particularly striking case because the place of articulation
of the two stops
.ul
p
and
.ul
b
is the same:  complete suppression is not as likely
to happen in "stop gap", for example (although it may occur).
Here is an instance of how extra information could improve the
quality of the synthetic transitions considerably.
However, automatically identifying the place of articulation of stops is
a difficult job, of a complexity far above what is appropriate for
simply joining words stored in source-filter form.
.pp
Another innovation was introduced into the transition between two
vowel sounds, when the second word began with an accented syllable.
A glottal stop was placed at the juncture.
Although the glottal stop was not described in Chapter 2, it is a sound
used in many dialects of English.  It frequently occurs
in the utterance "uh-uh", meaning "no".  Here it
.ul
is
used to separate two vowel sounds, but in fact this is not particularly
common in most dialects.
One could say "the apple", "the orange", "the onion" with a neutral vowel
in "the" (to rhyme with "\c
.ul
a\c
bove") and a glottal stop as separator,
but it is much more usual to rhyme "the" with "he" and introduce a
.ul
y
between the words.
Similarly, even speakers who do not normally pronounce an
.ul
r
at the
end of words will introduce one in "bigger apple", rather than
using a glottal stop.
Note that it would be wrong to put an
.ul
r
in "the apple", even
for speakers who usually terminate "the" and "bigger" with the same sound.
Such effects occur at a high level of processing, and are practically
impossible to simulate with word-interpolation rules.
Hence the expedient of introducing a glottal stop is a good one, although
it is certainly unnatural.
.sh "7.2  Concatenating whole or partial syllables"
.pp
The use of segments larger than a single phoneme or allophone but smaller
than a word as the basic unit for speech synthesis has an interesting
history.
It has long been realized that transitions between phonemes are
extremely sensitive and critical components of speech, and thus are
essential for successful synthesis.
Consider the unvoiced stop sounds
.ul
p, t,
and
.ul
k.
Their central portion is actually silence!  (Try saying a word like
"butter" with a very long
.ul
t.\c
)  Hence
in this case it is
.ul
only
the transitional information which can distinguish these sounds from
each other.
.pp
Sound segments which comprise the transition from the centre of one phoneme
to the centre of the next are called
.ul
dyads
or
.ul
diphones.
The possibility of using them as the basic units for concatenation
was first mooted in the mid 1950's.
The idea is attractive because there is relatively little spectral
movement in the central, so-called "steady-state", portion of many
phonemes \(em in the extreme case of unvoiced stops there is not only
no spectral movement, but no spectrum at all in the steady state!
At that time the resonance synthesizer was in its infancy, and
so recorded segments of live speech were used.  The early experiments
met with little success because of the technical difficulties
of joining analogue waveforms and inevitable discrepancies between
the steady-state parts of a phoneme recorded in different contexts \(em not
to mention the problems of coarticulation and prosody which effectively
preclude the use of waveform concatenation at such a low level.
.pp
In the mid 1960's, with the growing use of resonance synthesizers,
it became possible to generate diphones by copying resonance parameters
manually from a spectrogram, and improving the result by trial and error.
It was not feasible to extract formant frequencies automatically from real
speech, though, because the fast Fourier transform was not yet widely
known and the computational burden of slow Fourier transformation was
prohibitive.
For example, a project at IBM stored manually-derived parameter tracks
for diphones, identified by pairs of phoneme names (Dixon and Maxey, 1968).
.[
Dixon Maxey 1968
.]
To generate a synthetic utterance it was coded in
phonetic form and used to access
the diphone table to give a set of parameter tracks for the complete
utterance.  Note that this is the first system we have encountered
whose input is a phonetic transcription which relates to an inventory
of truly synthetic character:  all previous schemes used recordings of
live speech, albeit processed in some form.
Since the inventory was synthetic, there was no difficulty in ensuring
that discontinuities did not arise between segments beginning and ending with
the same phoneme.  Thus interpolation was irrelevant, and the synthesis
procedure concentrated on prosodic questions.  The resulting speech
was reported to be quite impressive.
.pp
Strictly speaking, diphones are not demisyllables but phoneme pairs.
In the simplest case they happen to be similar, for two primary diphones
characterize a consonant-vowel-consonant syllable.
There is an advantage to using demisyllables rather than diphones as the basic
unit, for many syllables begin or end with complicated consonant clusters
which are not easy to produce convincingly by diphone
concatenation.
But they are not easy to produce by hand-editing resonance parameters
either!
Now that speech analysis methods have been developed and refined,
resonance parameters or linear predictive coefficients
can be extracted automatically
from natural utterances, and there has been a resurgence of interest in
syllabic and demisyllabic synthesis methods.  The wheel has turned
full circle, from segments of natural speech to hand-tailored parameters
and back again!
.pp
The advantage of storing demisyllables over syllables (or lisibles) from
the point of view of storage capacity has already been pointed out
(perhaps 1,000\-2,000 demisyllables as opposed to 4,000\-10,000 syllables).
But it is probably not too significant with the continuing decline
of storage costs.
The requirements are of the order of 25\ Kbyte versus 0.5\ Mbyte
for 1200\ bit/s linear predictive coding, and the latter could
almost be accomodated today \(em 1981 \(em on a state-of-the-art
read-only memory chip.
A bigger advantage comes from rhythmic considerations.
As we will see in the next chapter, the rhythms of fluent speech cause
dramatic variations in syllable duration, but these seem to affect
the vowel and closing consonant cluster much more than the initial consonant
cluster.  Thus if a demisyllable is deemed to begin shortly (say 60\ msec)
after onset of the vowel, when the formant structure has settled down,
the bulk of the vowel and the closing consonant cluster will form a
single demisyllable.  The opening cluster of the next syllable will lie
in the next demisyllable.  Then differential lengthening can be applied
to that part of the syllable which tends to be stretched in live speech.
.pp
One system for demisyllable concatenation has produced excellent results
for monosyllabic English words (Lovins and Fujimura, 1976).
.[
Lovins Fujimura 1976
.]
Complex word-final consonant clusters are excluded from the inventory by
using syllable affixes
.ul
s, z, t,
and
.ul
d;
these are attached to the
syllabic core as a separate exercise (Macchi and Nigro, 1977).
.[
Macchi Nigro 1977
.]
Prosodic rather than segmental considerations are likely to prove the major
limiting factor when this scheme is extended to running speech.
.pp
Monosyllabic words spoken in isolation are coded as linear predictive
reflection coefficients, and segmented by digital editing into the initial
consonant cluster and the vocalic nucleus plus final cluster.
The cut is made 60\ msec into the vowel, as suggested above.
This minimizes the difficulty of interpolation when concatenating
segments, for there is ample voicing on either side of the juncture.
The reflection coefficients should not differ radically because the
vowel is the same in each demisyllable.
A 40\ msec overlap is used, with the usual linear interpolation.
An alternative smoothing rule applies when the second segment has
a nasal or glide after the vowel.  In this case anticipatory coarticulation
occurs, affecting even the early part of the vowel.  For example, a vowel
is frequently nasalized when followed by a nasal sound \(em even in English
where nasalization is not a distinctive feature in vowels (see Chapter 2).
Under these circumstances the overlap area is moved forward in time so
that the colouration applies throughout almost the whole vowel.
.sh "7.3  Phoneme synthesis"
.pp
Acoustic phonetics is the study of how the acoustic
signal relates to the phonetic sequence which was spoken or heard.
People \(em especially engineers \(em often ask, how could phonetics not
be acoustic?  In fact it can be articulatory, auditory, or linguistic
(phonological), for example, and we have touched on the first and last
in Chapter 2.
The invention of the sound spectrograph in the late 1940's was an
event of colossal significance for acoustic phonetics, for it somehow
seemed to make the intricacies of speech visible.
(This was thought to be a greater advance than actually turned
out:  historically-minded readers should refer to Potter
.ul
et al,
1947,
for an enthusiastic contemporary appraisal of the invention.)  A
.[
Potter Kopp Green 1947
.]
result of several years of research at Haskins Laboratories in New York
during the 1950's was a set of "minimal rules for synthesizing speech",
which showed how stylized formant patterns could generate cues for
identifying vowels and, particularly, consonants
(Liberman, 1957; Liberman
.ul
et al,
1959).
.[
Liberman 1957 Some results of research on speech perception
.]
.[
Liberman Ingemann Lisker Delattre Cooper 1959
.]
.pp
These were to form the basis of many speech synthesis-by-rule computer
programs in the ensuing decades.  Such programs take as input a
phonetic transcription of the utterance and generate a spoken version
of it.  The transcription may be broad or narrow, depending on the
system.  Experience has shown that the Haskins rules really are
minimal, and the success of a synthesis-by-rule program depends on
a vast collection of minutia, each seemingly insignificant in isolation
but whose effects combine to influence the speech quality dramatically.
The best current systems produce clearly understandable
speech which is nevertheless something of a strain to listen to for
long periods.
However, many are not good; and some are execrable.
In recent times commercial influences have unfortunately restricted
the free exchange of results and programs between academic researchers,
thus slowing down progress.
Research attention has turned to prosodic factors,
which are certainly less well understood than segmental ones, and
to synthesis from plain English text rather than from phonetic transcriptions.
.pp
The remainder of this chapter describes the techniques of segmental
synthesis.  First it is necessary to introduce some
elements of acoustic phonetics.
It may be worth re-reading Chapter 2 at this point, to refresh
your memory about the classification of speech sounds.
.sh "7.4  Acoustic characterization of phonemes"
.pp
Shortly after the invention of the sound spectrograph an inverse
instrument was developed, called the "pattern playback" synthesizer.
This took as input a spectrogram, either in its original form or
painted by hand.
An optical arrangment was used to modulate the amplitude of some
fifty harmonically-related oscillators by the lightness or darkness
of each point on the frequency axis of the spectrogram.
As it was drawn past the playing head, sound was produced which
had approximately the frequency components shown on the spectrogram,
although the fundamental frequency was constant.
.pp
This device allowed the complicated
acoustic effects seen on a spectrogram (see for example Figures 2.3 and 2.4)
to be replayed in either original or simplified form.
Hence the features which are important for perception of the different sounds
could be isolated.  The procedure was to copy from an actual spectrogram
the features which were most prominent visually, and then to make further
changes by trial and error until the result was judged to have
reasonable intelligibility when replayed.
.pp
For the purpose of acoustic characterization of particular phonemes,
it is useful to consider the central, steady-state part separately from
transitions into and out of the segment.
The steady-state part is that sound which is heard when the phoneme
is prolonged.  The term "phoneme" is being used in a rather loose sense
here:  it is more appropriate to think of a "sound segment" rather than
the abstract unit which forms the basis of phonological classification,
and this is the terminology I will adopt.
.pp
The essential auditory characteristics of some sound segments are inherent in
their steady states.
If a vowel, for example, is spoken and prolonged, it can readily be
identified by listening to any part of the utterance.
This is not true for diphthongs:  if you say "I" very slowly and freeze
your vocal tract posture at any time, the resulting steady-state sound
will not be sufficient to identify the diphthong.  Rather, it will be
a vowel somewhere between
.ul
aa
(in "had") or
.ul
ar
(in "hard") and
.ul
ee
(in "heed").
Neither is it true for glides, for prolonging
.ul
w
(in "want") or
.ul
y
(in "you") results in vowels resembling respectively
.ul
u
("hood") or
.ul
ee
("heed").
Fricatives, voiced or unvoiced, can be identified from the steady state;
but stops can not, for their's is silent (or \(em in the case
of voiced stops \(em something close to it).
.pp
Segments which are identifiable from their steady state are easy to synthesize.
The difficulty lies with the others, for it must be the transitions which
carry the information.  Thus "transitions" are an essential part of speech,
and perhaps the term is unfortunate for it calls to mind an unimportant
bridge between one segment and the next.
It is tempting to use the words "continuant" and "non-continuant" to distinguish
the two categories; unfortunately they are used by phoneticians in a different
sense.
We will call them "steady-state" and "transient" segments.  The latter term
is not particularly appropriate, for even sounds in this class
.ul
can
be prolonged:  the point is that the identifying information is in the
transitions rather than the steady state.
.RF
.nr x1 (\w'excitation'/2)
.nr x2 (\w'formant resonance'/2)
.nr x3 (\w'fricative'/2)
.nr x4 (\w'frequencies (Hz)'/2)
.nr x5 (\w'resonance (Hz)'/2)
.nr x0 4n+1.7i+0.8i+0.6i+0.6i+1.0i+\w'00'+\n(x5
.nr x6 (\n(.l-\n(x0)/2
.in \n(x6u
.ta 4n +1.7i +0.8i +0.6i +0.6i +1.0i
		\h'-\n(x1u'excitation		\0\0\h'-\n(x2u'formant resonance	\0\0\h'-\n(x3u'fricative
				\0\0\h'-\n(x4u'frequencies (Hz)	\0\0\c
\h'-\n(x5u'resonance (Hz)
\l'\n(x0u\(ul'
.sp
.nr x1 (\w'voicing'/2)
\fIuh\fR	(the)	\h'-\n(x1u'voicing	\0500	1500	2500
\fIa\fR	(bud)	\h'-\n(x1u'voicing	\0700	1250	2550
\fIe\fR	(head)	\h'-\n(x1u'voicing	\0550	1950	2650
\fIi\fR	(hid)	\h'-\n(x1u'voicing	\0350	2100	2700
\fIo\fR	(hod)	\h'-\n(x1u'voicing	\0600	\0900	2600
\fIu\fR	(hood)	\h'-\n(x1u'voicing	\0400	\0950	2450
\fIaa\fR	(had)	\h'-\n(x1u'voicing	\0750	1750	2600
\fIee\fR	(heed)	\h'-\n(x1u'voicing	\0300	2250	3100
\fIer\fR	(heard)	\h'-\n(x1u'voicing	\0600	1400	2450
\fIar\fR	(hard)	\h'-\n(x1u'voicing	\0700	1100	2550
\fIaw\fR	(hoard)	\h'-\n(x1u'voicing	\0450	\0750	2650
\fIuu\fR	(food)	\h'-\n(x1u'voicing	\0300	\0950	2300
.nr x1 (\w'aspiration'/2)
\fIh\fR	(he)	\h'-\n(x1u'aspiration
.nr x1 (\w'frication'/2)
.nr x2 (\w'frication and voicing'/2)
\fIs\fR	(sin)	\h'-\n(x1u'frication				6000
\fIz\fR	(zed)	\h'-\n(x2u'frication and voicing				6000
\fIsh\fR	(shin)	\h'-\n(x1u'frication				2300
\fIzh\fR	(vision)	\h'-\n(x2u'frication and voicing				2300
\fIf\fR	(fin)	\h'-\n(x1u'frication				4000
\fIv\fR	(vat)	\h'-\n(x2u'frication and voicing				4000
\fIth\fR	(thin)	\h'-\n(x1u'frication				5000
\fIdh\fR	(that)	\h'-\n(x2u'frication and voicing				5000
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 7.2  Resonance synthesizer parameters for steady-state sounds"
.rh "Steady-state segments."
Table 7.2 shows appropriate values for the resonance parameters and
excitation sources of a resonance synthesizer, for steady-state
segments only.
There are several points to note about it.
Firstly, all the frequencies involved obviously depend upon the
speaker \(em the size of his vocal tract, his accent and speaking habits.
The values given are nominal ones for a male speaker with a dialect of
British English called "received pronunciation" (RP) \(em for it is what
used to be "received" on the wireless in the old days
before the British Broadcasting Corporation
adopted a policy of more informal, more regional, speech.
Female speakers have formant frequencies approximately 15% higher
than male ones.
Secondly, the third formant is relatively unimportant for vowel
identification; it is
the first and second that give the vowels their character.
Thirdly, formant values for
.ul
h
are not given, for they would be meaningless.
Although it is certainly a steady-state sound,
.ul
h
changes radically
in context.  If you say "had", "heed", "hud", and so on, and freeze
your vocal tract posture on the initial
.ul
h,
you will find it
already configured for the following vowel \(em an excellent
example of anticipatory coarticulation.
Fourthly, amplitude values do play some part in identification,
particularly for fricatives.
.ul
th
is the weakest sound, closely followed by
.ul
f,
with
.ul
s
and
.ul
sh
the
strongest.  It is necessary to get a reasonable mix of excitation in
the voiced fricatives; the voicing amplitude is considerably less than
in vowels.  Finally, there are other sounds that might be considered
steady state ones.  You can probably identify
.ul
m, n,
and
.ul
ng
just by
their steady states.  However, the difference is not particularly
strong; it is the transitional parts which discriminate most effectively
between these sounds.  The steady state of
.ul
r
is quite distinctive, too,
for most speakers, because the top of the tongue is curled back in a
so-called "retroflex" action and this causes a radical change in the
third formant resonance.
.rh "Transient segments."
Transient sounds include diphthongs, glides,
nasals, voiced and unvoiced stops, and affricates.
The first two are relatively easy to characterize, for they are
basically continuous, gradual transitions from one vocal tract posture
to another \(em sort of dynamic vowels.  Diphthongs and glides are
similar to each other.  In fact "you" could be transcribed as
a triphthong,
.ul
i e uu,
except that in the initial posture the tongue
is even higher, and the vocal tract correspondingly more constricted,
than in
.ul
i
("hid") \(em though not as constricted as in
.ul
sh.
Both categories can be represented in terms of target formant
values, on the understanding that these are not to be
interpreted as steady state configurations but strictly as
extreme values at the beginning or end of the formant motion (for
transitions out of and into the segment, respectively).
.pp
Nasals have a steady-state portion comprising a strong nasal formant
at a fairly low frequency, on account of the large size of the
combined nasal and oral cavity which is resonating.
Higher formants are relatively weak, because of attenuation effects.
Transitions into and out of nasals are strongly nasalized,
as indeed are adjacent vocalic segments, with
the oral and nasal tract operating in parallel.  As discussed in
Chapter 5, this cannot be simulated on a series synthesizer.
However, extremely fast motions of the formants occur on account of
the binary switching action of the velum, and it turns out that
fast formant transitions are sufficient to simulate nasals because
the speech perception mechanism is accustomed to hearing them only
in that context!  Contrast this with the extremely slow transitions
in diphthongs and glides.
.pp
Stops form the most interesting category, and research using the pattern
playback synthesizer was instrumental in providing adequate acoustic
characterizations for them.  Consider unvoiced stops.
They each have three phases:  transition in, silent central portion,
and transition out.  There is a lot of action on the transition out
(and many phoneticians would divide this part alone into several "phases").
First, as the release occurs, there is a small burst of fricative noise.
Say "t\ t\ t\ ..." as in "tut-tut", without producing any voicing.
Actually, when used as an admonishment this is accompanied by
an ingressive, inhaling air-stream instead of the normal egressive,
exhaling one used in English speech (although some languages
do have ingressive sounds).
In any case, a short fricative somewhat resembling a tiny
.ul
s
can be heard as the tongue leaves the roof of the mouth.
Frication is produced when the gap is very narrow, and ceases
rapidly as it becomes wider.
Next, when an unvoiced stop is released, a significant amount of aspiration
follows the release.
Say "pot", "tot", "cot" with force and you will hear the
.ul
h\c
-like
aspiration quite clearly.
It doesn't always occur, though; for example you will hear little
aspiration when a fricative like
.ul
s
precedes the stop in the
same syllable, as in "spot", "scot".  The aspiration is a distinguishing
feature between "white spot" and the rather unlikely "White's pot".
It tends to increase as the emphasis on the syllable increases,
and this in an example of a prosodic feature influencing segmental
characteristics.  Finally, at the end of the segment,
the aspiration \(em if any \(em will turn to voicing.
.pp
What has been described applies to
.ul
all
unvoiced stops.
What distinguishes one from another?
The tiny fricative burst will be different because the noise is produced
at different places in the vocal tract \(em at the lips for
.ul
p,
tongue and front of palate for
.ul
t,
and tongue and back of palate for
.ul
k.
The most important difference, however, is the formant motion illuminated
by the last vestiges of voicing at closure and by both aspiration and the
onset of voicing at opening.
Each stop has target formant values which, although
they cannot be heard during the stopped portion (for there is no
sound there), do affect the transitions in and out.
An added complexity is that the target positions themselves vary to some
extent depending on the adjacent segments.
If the stop is heavily aspirated, the vocal posture will have almost
attained that for the following vowel before voicing begins, but
the formant transitions will be perceived because they affect
the sound quality of aspiration.
.pp
The voiced stops
.ul
b, d,
and
.ul
g
are quite similar to their unvoiced analogues
.ul
p, t,
and
.ul
k.
What distinguishes them from each other are the formant transitions to
target positions, heard during closure and opening.
They are distinguished from their unvoiced counterparts by the fact
that more voicing is present:  it lingers on longer at closure
and begins earlier on opening.  Thus little or no aspiration appears
during the opening phase.  If an unvoiced stop is uttered in a context
where aspiration is suppressed, as in "spot", it is almost identical to the
corresponding voiced stop, "sbot".  Luckily no words in English require
us to make a distinction in such contexts.
Voicing sometimes pervades the entire stopped portion of a voiced stop,
especially when it is surrounded by other voiced segments.
When saying a word like "baby" slowly you can choose whether or not to
prolong voicing throughout the second
.ul
b.
If you do, creating what is
called a "voice bar" in spectrograms,
the sound escapes through the cheeks, for
the lips are closed \(em try doing it for a very long time and your cheeks
will fill up with air!
This severely attenuates high-frequency components, and can
be simulated with a weak first formant at a low resonant frequency.
.RF
.nr x0 \w'unvoiced stops:    'u
.nr x1 4n
.nr x2 \n(x0+\n(x1+\w'aspiration burst (context- and emphasis-dependent)'u
.nr x3 (\n(.l-\n(x2)/2
.in \n(x3u
.ta \n(x0u +\n(x1u
unvoiced stops:	closure (early cessation of voicing)
	silent steady state
	opening, comprising
		short fricative burst
		aspiration burst (context- and emphasis-dependent)
		onset of voicing
.sp
voiced stops:	closure (late cessation of voicing)
	steady state (possibility of voice bar)
	opening, comprising
		pre-voicing
		short fricative burst
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 7.3  Acoustic phases of stop consonants"
.pp
Table 7.3 summarizes some of the acoustic phases of voiced and unvoiced
stops.  There are many variations that have not been mentioned.
Nasal plosion ("good news") occurs (at the word boundary, in this case)
when the nasal formant pervades the
opening phase.  Stop bursts are suppressed when the next sound is a stop
too (the burst on the
.ul
p
of "apt", for example).
It is difficult to distinguish a voiced stop from an unvoiced one
at the end of a word ("cab" and "cap"); if the speaker is trying to
make himself particularly clear he will put a short neutral vowel
after the voiced stop to emphasize its early onset of voicing.
(If he is Italian he will probably do this anyway, for it is the norm
in his own language.)
.pp
Finally, we turn to affricates, of which there are only two
in English:
.ul
ch
("chin") and
.ul
j
("djinn").
They are very similar to the stops
.ul
t
and
.ul
d
followed by the fricatives
.ul
sh
and
.ul
zh
respectively, and their acoustic characterization is similar to that
of the phoneme pair.
.ul
ch
has a closing phase, a stopped phase, and a long fricative burst.
There is no aspiration,
for the vocal cords are not involved.
.ul
j
is the same except that voicing extends further into the stopped
portion, and the terminating fricative is also voiced.
It may be pronounced with a voice bar if the preceding segment is voiced
("adjunct").
.sh "7.5  Speech synthesis by rule"
.pp
Generation of speech by rules acting upon a phonetic transcription
was first investigated in the early 1960's (Kelly and Gerstman, 1961).
.[
Kelly Gerstman 1961
.]
Most systems employ a hardware resonance synthesizer, analogue or digital,
series or parallel,
to reduce the load on the computer which operates the rules.
The speech-by-rule program, rather than the
synthesizer, inevitably contributes by far the greater part of the
degradation in the resulting speech.
Although parallel synthesizers offer greater potential control over
the spectrum, it is not clear to what extent a synthesis program can take
advantage of this.  Parameter tracks for a series synthesizer can
easily be converted into linear predictive coefficients, and systems
which use a linear predictive synthesizer will probably become popular
in the near future.
.pp
The phrase "synthesis by rule", which is in common use, does not
make it clear just what sort of features the rules are supposed to
accomodate, and what information must be included explicitly in the
input transcription.
Early systems made no attempt to simulate prosodics.
Pitch and rhythm could be controlled, but only by inserting
pitch specifiers and duration markers in the input.
Some kind of prosodic control was often incorporated later,
but usually as a completely separate phase from segmental synthesis.
This does not allow interaction effects (such as the extra
aspiration for voiceless stops in accented syllables) to be taken
into account easily.
Even systems which perform prosodic operations invariably need to have
prosodic specifications embedded explicitly in the input.
.pp
Generating parameter tracks for a synthesizer from a phonetic transcription
is a process of data
.ul
expansion.
Six bits are ample to specify a phoneme, and a speaking rate of 12 phonemes/sec
leads to an input data rate of 72 bit/s.
The data rate required to control the synthesizer will depend upon the number
of parameters and the rate at which they are sampled,
but a typical figure is 6 Kbit/s (Chapter 5).
Hence there is something like a hundredfold data expansion.
.pp
Figure 7.1 shows the parameter tracks for a series synthesizer's rendering
of the utterance
.ul
s i k s.
.FC "Figure 7.1"
There are eight parameters.
You can see the onset of frication at the beginning and end (parameter 5),
and the amplitude of voicing (parameter 1) come on for the
.ul
i
and off again before the
.ul
k.
The pitch (parameter 0) is falling slowly throughout the utterance.
These tracks are stylized:  they come from a computer synthesis-by-rule
program and not from a human utterance.
With a parameter update rate of 10 msec, the graphs can be represented
by 90 sets of eight parameter values, a total of 720 values or 4320 bits
if a 6-bit representation is used for each value.
Contrast this with the input of only four phoneme segments, or say 24 bits.
.rh "A segment-by-segment system."
A seminal paper appearing in 1964 was the first comprehensive
description of a computer-based synthesis-by-rule system
(Holmes
.ul
et al,
1964).
.[
Holmes Mattingly Shearme 1964
.]
The same system is still in use and has been reimplemented in a more
portable form (Wright, 1976).
.[
Wright 1976
.]
The inventory of sound segments
includes the phonemes listed in Table 2.1, as well as diphthongs and
a second allophone of
.ul
l.
(Many British speakers use quite a different vocal posture for
pre- and post-vocalic
.ul
l\c
\&'s, called clear and dark
.ul
l\c
\&'s
respectively.)  Some phonemes are expanded into sub-phonemic
"phases" by the program.  Stops have three phases, corresponding to
the closure, silent steady state, and opening.
Diphthongs have two phases.  We will call individual phases and
single-phase phonemes "segments", for they are subject to exactly
the same transition rules.
.pp
Parameter tracks are constructed out of linear pieces.
Consider a pair of adjacent segments in an utterance to be synthesized.
Each one has a steady-state portion and an internal transition.
The internal transition of one phoneme is dubbed "external"
as far as the other is concerned.
This is important because instead of each segment being responsible
for its own internal transition, one of the pair is identified
as "dominant" and it controls the duration of both transitions \(em its
internal one and its external (the other's internal) one.
For example, in Figure 7.2 the segment
.ul
sh
dominates
.ul
ee
and so it
governs the duration of both transitions shown.
.FC "Figure 7.2"
Note that each
segment contributes as many as three linear pieces to the parameter track.
.pp
The notion of domination is similar to that discussed earlier for
word concatenation.
The difference is that for word concatenation the dominant segment was
determined by computing the spectral derivative over the transition
region, whereas for synthesis-by-rule
segments are ranked according to a static precedence,
and the higher-ranking segment dominates.
Segments of stop consonants have the highest rank (and also
the greatest spectral derivative), while fricatives, nasals, glides,
and vowels follow in that order.
.pp
The concatenation procedure is controlled by a table which associates
25 quantities with each segment.  They are
.LB
.NI
rank
.NI
2\ \ overall durations (for stressed and unstressed occurrences)
.NI
4\ \ transition durations (for internal and external transitions of
formant frequencies and amplitudes)
.NI
8\ \ target parameter values (amplitudes and frequencies of three
formant resonances, plus fricative information)
.NI
5\ \ quantities which specify how to calculate boundary values for
formant frequencies (two for each formant except the third,
which has only one)
.NI
5\ \ quantities which specify how to calculate boundary values for
amplitudes.
.LE
This table is rather large.  There are 80 segments in all (remember
that many phonemes are represented by more than one segment),
and so it has 2000 entries.  The system was an offline one which ran on
what was then \(em 1964 \(em a large computer.
.pp
The advantage of such a large table of "rules" is the
flexibility it affords.
Notice that transition durations are specified independently for
formant frequency and amplitude parameters \(em this permits
fine control which is particularly useful for stops.
For each parameter the boundary value between segments is calculated
using a fixed contribution from the dominant one
and a proportion of the steady state value of the other.
.pp
It is possible that the two transition durations which are
calculated for a segment actually exceed the overall duration specified
for it.  In this case, the steady-state target values will be approached
but not actually attained, simulating a situation where coarticulation
effects prevent a target value from being reached.
.rh "An event-based system."
The synthesis system described above, in common with many others, takes
an uncompromisingly segment-by-segment view of speech.
The next phoneme is read, perhaps split into a few segments, and
these are synthesized one by one with due attention being paid
to transitions between them.
Some later work has taken a more syllabic view.
Mattingly (1976) urges a return to syllables for both practical and
theoretical reasons.
.[
Mattingly 1976 Syllable synthesis
.]
Transitional effects are particularly strong
within a syllable and comparatively weak (but by no means negligible)
from one syllable to the next.  From a theoretical viewpoint,
there are much stronger phonetic restrictions on phoneme sequences
than there are on syllable sequences:  pretty well any syllable can
follow another (although whether the pair makes sense is
a different matter), but the linguistically
acceptable phoneme sequences are only a fraction
of those formed by combining phonemes in all
possible ways.
Hill (1978) argues against what be calls the "segmental assumption"
that progress through the utterance should be made one segment at a time,
and recommends a description of speech based upon perceptually relevant
"events".
.[
Hill 1978 A program structure for event-based speech synthesis by rules
.]
This framework is interesting because it provides an opportunity for prosodic
considerations to be treated as an integral part of the synthesis
process.
.pp
The phonetic segments and other information that specify an utterance
can be regarded as a list of events which describes it
at a relatively high level.
Synthesis-by-rule is the act of taking this list and elaborating on it
to produce lower-level events which are realized by the vocal tract,
or acoustically simulated by a resonance synthesizer, to give a speech
waveform.
In articulatory terms, an event might be "begin tongue motion towards
upper teeth with a given effort", while in resonance terms it could be
"begin second formant transition towards 1500\ Hz at a given rate".
(These two examples are
.ul
not
intended to describe the same event:  a tongue motion causes much more
than the transition of a single formant.)  Coarticulation
issues such as stop burst suppression and nasal plosion should
be easier to imitate within an event-based scheme than a segment-to-segment
one.
.pp
The ISP system (Witten and Abbess, 1979) is event-based.
.[
Witten Abbess 1979
.]
The key to its operation is the
.ul
synthesis list.
To prepare an utterance for synthesis, the lexical items which specify
it are joined into a linked list.  Figure 7.3 shows the start of
the list created for
.LB
1
.ul
dh i z  i z  /*d zh aa k s  /h aa u s
.LE
(this is Jack's house); the "1\ ...\ /*\ ...\ /\ ..." are
prosodic markers which will be discussed in the next chapter.
.FC "Figure 7.3"
Next, the rhythm and pitch assignment routines
augment the list with syllable boundaries, phoneme
cluster identifiers, and duration and pitch specifications.
Then it is passed to the segmental synthesis routine
which chains events into the appropriate places and, as it
proceeds, removes the no longer useful elements (phoneme names,
pitch specifiers, etc) which originally constituted the synthesis list.
Finally, an interrupt-driven speech synthesizer handler removes
events from the list as they become due and uses them to control
the hardware synthesizer.
.pp
By adopting the synthesis list as a uniform data structure for
holding utterances at every stage of processing, the problems of storage
allocation and garbage collection are minimized.
Each list element has a forward pointer and five data words, the first
indicating what type of element it is.
Lexical items which may appear in the input are
.LB
.NI
end of utterance (".", "!", ",", ";")
.NI
intonation indicator ("1", ...)
.NI
rhythm indicator ("/", "/*")
.NI
word boundary ("  ")
.NI
syllable boundary ("'")
.NI
phoneme segment
(\c
.ul
ar, b, ng, ...\c
)
.NI
explicit duration or pitch information.
.LE
Several of these have to do with prosodic features \(em a prime
advantage of the structure is that it does not create an artificial
division between segmentals and prosody.
Syllable boundaries and duration and pitch information are optional.
They will normally be computed by ISP, but the user can override them in the
input in a natural way.
The actual characters which identify lexical items are not fixed
but are taken from the rule table.
.pp
As synthesis
proceeds, new elements are chained in to the synthesis list.
For segmental purposes, three types of event are defined \(em
target events, increment events, and aspiration events.
With each event is associated a time at which the event becomes due.
For a target event, a parameter number, target parameter value,
and time-increment are specified.
When it becomes due, motion of the parameter towards the
target is begun.  If no other event for that parameter intervenes,
the target value will be reached after the given time-increment.
However, another target event for the parameter may change its motion
before the target has been attained.
Increment events contain a parameter number, a parameter increment,
and a time-increment.  The fixed increment is added to the parameter value
throughout the time specified.  This provides an easy way to make a
fricative burst during the opening phase of a stop consonant.
Aspiration events switch the mode of excitation from voicing to aspiration
for a given period of time.  Thus the aspirated part of unvoiced stops
can be accomodated in a natural manner, by changing the mode of excitation
for the duration of the aspiration.
.RF
.nr x1 (\w'excitation'/2)
.nr x2 (\w'formant resonance'/2)
.nr x3 (\w'fricative'/2)
.nr x4 (\w'type'/2)
.nr x5 (\w'frequencies (Hz)'/2)
.nr x6 (\w'resonance (Hz)'/2)
.nr x0 1.0i+0.7i+0.6i+0.6i+1.0i+1.2i+(\w'long vowel'/2)
.nr x7 (\n(.l-\n(x0)/2
.in \n(x7u
.ta 1.0i +0.7i +0.6i +0.6i +1.0i +1.2i
	\h'-\n(x1u'excitation		\0\0\h'-\n(x2u'formant resonance	\0\0\h'-\n(x3u'fricative	\h'-\n(x4u'type
			\0\0\h'-\n(x5u'frequencies (Hz)	\0\0\h'-\n(x6u'resonance (Hz)
\l'\n(x0u\(ul'
.sp
.nr x1 (\w'voicing'/2)
.nr x2 (\w'vowel'/2)
\fIuh\fR	\h'-\n(x1u'voicing	\0490	1480	2500		\c
\h'-\n(x2u'vowel
\fIa\fR	\h'-\n(x1u'voicing	\0720	1240	2540		\h'-\n(x2u'vowel
\fIe\fR	\h'-\n(x1u'voicing	\0560	1970	2640		\h'-\n(x2u'vowel
\fIi\fR	\h'-\n(x1u'voicing	\0360	2100	2700		\h'-\n(x2u'vowel
\fIo\fR	\h'-\n(x1u'voicing	\0600	\0890	2600		\h'-\n(x2u'vowel
\fIu\fR	\h'-\n(x1u'voicing	\0380	\0950	2440		\h'-\n(x2u'vowel
\fIaa\fR	\h'-\n(x1u'voicing	\0750	1750	2600		\h'-\n(x2u'vowel
.nr x2 (\w'long vowel'/2)
\fIee\fR	\h'-\n(x1u'voicing	\0290	2270	3090		\h'-\n(x2u'long vowel
\fIer\fR	\h'-\n(x1u'voicing	\0580	1380	2440		\h'-\n(x2u'long vowel
\fIar\fR	\h'-\n(x1u'voicing	\0680	1080	2540		\h'-\n(x2u'long vowel
\fIaw\fR	\h'-\n(x1u'voicing	\0450	\0740	2640		\h'-\n(x2u'long vowel
\fIuu\fR	\h'-\n(x1u'voicing	\0310	\0940	2320		\h'-\n(x2u'long vowel
.nr x1 (\w'aspiration'/2)
.nr x2 (\w'h'/2)
\fIh\fR	\h'-\n(x1u'aspiration					\h'-\n(x2u'h
.nr x1 (\w'voicing'/2)
.nr x2 (\w'glide'/2)
\fIr\fR	\h'-\n(x1u'voicing	\0240	1190	1550			 \h'-\n(x2u'glide
\fIw\fR	\h'-\n(x1u'voicing	\0240	\0650			\h'-\n(x2u'glide
\fIl\fR	\h'-\n(x1u'voicing	\0380	1190			\h'-\n(x2u'glide
\fIy\fR	\h'-\n(x1u'voicing	\0240	2270			\h'-\n(x2u'glide
.nr x2 (\w'nasal'/2)
\fIm\fR	\h'-\n(x1u'voicing	\0190	\0690	2000		\h'-\n(x2u'nasal
.nr x1 (\w'none'/2)
.nr x2 (\w'stop'/2)
\fIb\fR	\h'-\n(x1u'none	\0100	\0690	2000		\h'-\n(x2u'stop
\fIp\fR	\h'-\n(x1u'none	\0100	\0690	2000		\h'-\n(x2u'stop
.nr x1 (\w'voicing'/2)
.nr x2 (\w'nasal'/2)
\fIn\fR	\h'-\n(x1u'voicing	\0190	1780	3300		\h'-\n(x2u'nasal
.nr x1 (\w'none'/2)
.nr x2 (\w'stop'/2)
\fId\fR	\h'-\n(x1u'none	\0100	1780	3300		\h'-\n(x2u'stop
\fIt\fR	\h'-\n(x1u'none	\0100	1780	3300		\h'-\n(x2u'stop
.nr x1 (\w'voicing'/2)
.nr x2 (\w'nasal'/2)
\fIng\fR	\h'-\n(x1u'voicing	\0190	2300	2500		\h'-\n(x2u'nasal
.nr x1 (\w'none'/2)
.nr x2 (\w'stop'/2)
\fIg\fR	\h'-\n(x1u'none	\0100	2300	2500		\h'-\n(x2u'stop
\fIk\fR	\h'-\n(x1u'none	\0100	2300	2500		\h'-\n(x2u'stop
.nr x1 (\w'frication'/2)
.nr x2 (\w'voice + fric'/2)
.nr x3 (\w'fricative'/2)
\fIs\fR	\h'-\n(x1u'frication				6000	\h'-\n(x3u'fricative
\fIz\fR	\h'-\n(x2u'voice + fric	\0190	1780	3300	6000	\h'-\n(x3u'fricative
\fIsh\fR	\h'-\n(x1u'frication				2300	\h'-\n(x3u'fricative
\fIzh\fR	\h'-\n(x2u'voice + fric	\0190	2120	2700	2300	\h'-\n(x3u'fricative
\fIf\fR	\h'-\n(x1u'frication				4000	\h'-\n(x3u'fricative
\fIv\fR	\h'-\n(x2u'voice + fric	\0190	\0690	3300	4000	\h'-\n(x3u'fricative
\fIth\fR	\h'-\n(x1u'frication				5000	\h'-\n(x3u'fricative
\fIdh\fR	\h'-\n(x2u'voice + fric	\0190	1780	3300	5000	\h'-\n(x3u'fricative
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 7.4  Rule table for an event-based synthesis-by-rule program"
.pp
Now the rule table, which is shown in Table 7.4,
holds simple target positions for each phoneme segment, as well as
the segment type.  The latter is used to trigger events by computer
procedures which have access to the context of the segment.
In principle, this allows considerably more sophistication to be
introduced than does a simple segment-by-segment approach.
.RF
.nr x1 0.5i+0.5i+\w'preceding consonant in this syllable (suppress burst if fricative)'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta 0.5i +0.5i
fricative bursts on stops
aspiration bursts on unvoiced stops, affected by
	preceding consonant in this syllable (suppress burst if fricative)
	following consonant (suppress burst if another stop; introduce
		nasal plosion if a nasal)
	prosodics (increase burst if syllable is stressed)
voice bar on voiced stops (in intervocalic position)
post-voicing on terminating voiced stops, if syllable is stressed
anticipatory coarticulation for \fIh\fR
vowel colouring when a nasal or glide follows
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 7.5  Some coarticulation effects"
.pp
For example, Table 7.5 summarizes some of the subtleties of the
speech production process which have been mentioned earlier in this
chapter.  Most of them are context-dependent, with the prosodic
context (whether two segments are in the same syllable; whether a
syllable is stressed) playing a significant role.  A scheme where
data-dependent "demons" fire on particular patterns in a linked list
seems to be a sensible approach towards incorporating such rules.
.rh "Discussion."
There are two opposing trends in speech synthesis by rule.
On the one hand larger and larger segment inventories can be used,
containing more and more allophones explicitly.
This is the approach of the Votrax sound-segment synthesizer,
discussed in Chapter 11.
It puts an increasing burden on the person who codes the utterances
for synthesis, although, as we shall see, computer programs can assist with
this task.
On the other hand the segment inventory can be kept small, perhaps
comprising just the logical phonemes as in the ISP system.
This places the onus on the computer program to accomodate allophonic variations,
and to do so it must take account of the segmental and prosodic
context of each phoneme.
An event-based approach seems to give the best chance of incorporating
contextual modification whilst avoiding undesired interactions.
.pp
The second trend brings synthesis closer to the articulatory process
of speech production.  In fact an event-based system would be
an ideal way of implementing an articulatory model for speech synthesis
by rule.  It would be much more satisfying to have the rule table
contain articulatory target positions instead of resonance ones,
with events like "begin tongue motion towards upper teeth with a given
effort".  The problem is that hard data on articulatory postures and
constraints is much more difficult to gather than resonance information.
.pp
An interesting question that relates to articulation is whether formant
motion can be simulated adequately by a small number of linear pieces.
The segment-by-segment system described above had as many as nine
pieces for a single phoneme, for some phonemes had three phases
and each one contributes up to three pieces (transition in,
steady state, and transition out).
Another system used curves of decaying exponential
form which ensured that all transitions started rapidly towards
the target position but slowed down as it was approached (Rabiner, 1968, 1969).
.[
Rabiner 1968 Speech synthesis by rule Bell System Technical J
.]
.[
Rabiner 1969 A model for synthesizing speech by rule
.]
The time-constant of decay was stored with each segment in the rule
table.  The rhythm of the synthetic speech was controlled at this level,
for the next segment was begun when all the formants had attained
values sufficiently close to the current targets.
This is a poor model of the human speech production process, where rhythm
is dictated at a relatively high level and the next phoneme is not
simply started when the current one happens to end.
Nevertheless, the algorithm produced smooth, continuous formant motions
not unlike those found in spectrograms.
.pp
There is, however, by no means universal agreement on decaying exponential formant
motions.  Lawrence (1974) divided segments into "checked" and "free"
categories, corresponding roughly to consonants and vowels; and postulated
.ul
increasing
exponential transitions into checked segments, and decaying transitions into
free ones.
.[
Lawrence 1974
.]
This is a reasonable supposition if you consider the mechanics of
articulation.  The speed of movement of the tongue (for example) is likely
to increase until it is physically stopped by reaching the roof of the
mouth.
When moving away from a checked posture into a free one the transition will
be rapid at first but slow down to approach the target asymptotically,
governed by proprioceptive feedback.
.pp
The only thing that seems to be agreed is that the formant tracks should
certainly
.ul
not
be piecewise linear.  However, in the face of
conflicting opinions as to whether exponentials should be decaying
or increasing, piecewise linear motions seem to be a reasonable
compromise!  It is likely that the precise shape of formant
tracks is unimportant so long as the gross features are imitated
correctly.
Nevertheless, this is a question which an articulatory model
could help to answer.
.sh "7.6  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "7.7  Further reading"
.pp
There are unfortunately few books to recommend on the subject of
joining segments of speech.
The references form a representative and moderately comprehensive bibliography.
Here is some relevant background reading in linguistics.
.LB "nn"
.\"Fry-1976-1
.]-
.ds [A Fry, D.B.(Editor)
.ds [D 1976
.ds [T Acoustic phonetics
.ds [I Cambridge Univ Press
.ds [C Cambridge, England
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
This book of readings contains many classic papers on acoustic phonetics
published from 1922\-1965.
It covers much of the history of the subject, and is intended
primarily for students of linguistics.
.in-2n
.\"Lehiste-1967-2
.]-
.ds [A Lehiste, I.(Editor)
.ds [D 1967
.ds [T Readings in acoustic phonetics
.ds [I MIT Press
.ds [C Cambridge, Massachusetts
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
Another basic collection of references which covers much the same ground
as Fry (1976), above.
.in-2n
.\"Sivertsen-1961-3
.]-
.ds [A Sivertsen, E.
.ds [D 1961
.ds [K *
.ds [T Segment inventories for speech synthesis
.ds [J Language and Speech
.ds [V 4
.ds [P 27-89
.nr [P 1
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
This is a careful early study of the quantitative implications of using
phonemes, demisyllables, syllables, and words as the basic building
blocks for speech synthesis.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "8  PROSODIC FEATURES IN SPEECH SYNTHESIS"
.ds RT "Prosodic features
.ds CX "Principles of computer speech
.pp
Prosodic features are those which characterize an utterance as a whole,
rather than having a local influence on individual sound segments.
For speech output from computers, an "utterance" usually comprises a
single unit of information which stretches over several words \(em a clause
or sentence.  In natural speech an utterance can be very much longer, but
it will be broken into prosodic units which are again roughly the size of a
clause or sentence.  These prosodic units are certainly closely related
to each other.  For example, the pitch contour used when introducing a new
topic is usually different from those employed to develop it subsequently.
However, for the purposes of synthesis the successive prosodic units can
be treated independently, and information about pitch contours to be used
will have to be specified in the input for each one.
The independence between them is not complete, however, and
lower-level contextual effects, such as interpolation of pitch between
the end of one prosodic unit and the start of the next, must still be
imitated.
.pp
Prosodic features were introduced briefly in Chapter 2.
Variations in voice dynamics occur in three dimensions:  pitch of the voice,
time, and amplitude.
These dimensions are inextricably twined together in living speech.
Variations in voice quality are much less important for the factual
kind of speech usually sought in voice response applications,
although they can play a considerable in conveying emotions
(for a discussion of the acoustic manifestations of emotion in speech,
see Williams and Stevens, 1972).
.[
Williams Stevens 1972
.]
.pp
The distinction between prosodic and segmental effects is a traditional one,
but it becomes rather fuzzy when examined in detail.
It is analogous to the distinction between hardware and
software in computer science:  although useful from some points of view
the borderline becomes blurred as one gets closer to actual systems \(em with
microcode, interrupts, memory management, and the like.
At a trivial level, prosodics
cannot exist without segmentals, for there must be some vehicle to carry the
prosodic contrasts.
Timing \(em a prosodic feature \(em is actually realized by the durations of
individual segments.  Pauses are tantamount to silent segments.
.pp
While pitch may seem to be relatively independent of segmentals \(em and
this view is reinforced by the success of the source-filter model
which separates the frequency of the
excitation source from the filter characteristics \(em there
are some subtle phonetic effects of pitch.
It has been observed that it drops on the transition into certain
consonants, and rises again on the transition out (Haggard
.ul
et al,
1970).
.[
Haggard Ambler Callow 1970
.]
This can be explained in terms of variations in pressure from the
lungs on the vocal cords (Ladefoged, 1967).
.[
Ladefoged 1967
.]
Briefly, the increase in mouth pressure which occurs during some consonants
causes a reduction in the pressure difference across the vocal cords
and in the rate of flow of air between them.
This results in a decrease in their frequency of vibration.
When the constriction is released, there is a temporary increase in the air
flow which increases the pitch again.
The phenomenon is called "microintonation".
It is particularly noticeable in voiced stops, but also occurs in voiced
fricatives and unvoiced stops.
Simulation of the effect in synthesis-by-rule has often been found to give
noticeable improvements in the speech quality.
.pp
Loudness also has a segmental role.  For example, we noted in the last chapter
that amplitude values play a small part in identification of fricatives.
In fact loudness is a very
.ul
weak
prosodic feature.  It contributes little to the perception of stress.
Even for shouting the distinction from normal speech is as much in the voice
quality as in amplitude
.ul
per se.
It is not necessary to consider varying loudness on a prosodic basis
in most speech synthesis systems.
.pp
The above examples show how prosodic features have segmental influences
as well.
The converse is also true:  some segmental features have a prosodic effect.
The last chapter described how stress is associated with increased aspiration
of syllable-initial unvoiced stops.  Furthermore, stressed syllables
are articulated with greater effort than unstressed ones, and hence the formant
transitions are more likely to attain their target values
under circumstances which would otherwise cause them to fall short.
In unstressed syllables, extreme vowels (like
.ul
ee, aa, uu\c
)
tend to more centralized sounds
(like
.ul
i, uh, u
respectively).
Although all British English vowels
.ul
can
appear in unstressed syllables, they often become "reduced" into a
centralized form.
Consider the following examples.
.LB
.NI
diplomat	\ 
.ul
d i p l uh m aa t
.NI
diplomacy	\ 
.ul
d i p l uh u m uh s i
.NI
diplomatic	\ 
.ul
d i p l uh m aa t i k.
.LE
The vowel of the second syllable is reduced to
.ul
uh
in "diplomat" and "diplomatic", whereas the root form "diploma", and also
"diplomacy", has a diphthong
(\c
.ul
uh u\c
)
there.  The third syllable has an
.ul
aa
in "diplomat" and "diplomatic" which is reduced to
.ul
uh
in "diplomacy".
In these cases the reduction is shown explicitly in the phonetic transcription;
but in more marginal examples where it is less extreme it will not be.
.pp
I have tried to emphasize in previous chapters that prosodic features are
important in speech synthesis.
There is something very basic about them.
Rhythm is an essential part of all bodily activity \(em of breathing,
walking, working and playing \(em and so it pervades speech too.
Mothers and babies communicate effectively using intonation alone.
Some experiments have indicated that the language environment of
an infant affects his babbling at an early age, before he has effective
segmental control.
There is no doubt that "tone of voice" plays a large part in human
communication.
.pp
However, early attempts at synthesis did not pay too
much attention to prosodics, perhaps because it was thought sufficient to get the
meaning across by providing clear segmentals.
As artificial speech grows more widespread, however, it is becoming
apparent that its acceptability to users, and hence its ultimate
success, depends to a large extent on incorporating natural-sounding
prosodics.  Flat, arhythmic speech may be comprehensible in short stretches,
but it strains the concentration in significant discourse and people
are not usually prepared to listen to it.
Unfortunately, current commercial speech output systems do not really tackle
prosodic questions, which indicates our present rather inadequate
state of knowledge.
.pp
The importance of prosodics for automatic speech
.ul
recognition
is beginning to be appreciated too.  Some research projects
have attended to the automatic identification of points of stress,
in the hope that the clear articulation of stressed syllables can be used
to provide anchor points in an unknown utterance (for example, see Lea
.ul
et al,
1975).
.[
Lea Medress Skinner 1975
.]
.pp
But prosodics and segmentals are closely intertwined.
I have chosen to
treat them in separate chapters in order to split the material up into
manageable chunks rather than to enforce a deep division between them.
It is also true that synthesis of prosodic features is an uncharted and
controversial area, which gives this chapter rather a different
flavour from the last.
It is hard to be as definite about alternative strategies
and methods as you can for segment concatenation.
In order to make the treatment as concrete and down-to-earth as possible,
I will describe in some detail two example projects in prosodic synthesis.
The first treats the problem of transferring pitch from one utterance to
another, while the second considers how artificial timing and pitch can be
assigned to synthetic speech.
These examples illustrate quite different problems, and are reasonably
representative of current research activity.
(Other systems are described by Mattingly, 1966; Rabiner
.ul
et al,
1969.)  Before
.[
Mattingly 1966
.]
.[
Rabiner Levitt Rosenberg 1969
.]
looking at the two examples, we will discuss
a feature which is certainly prosodic but does not appear in the
list given earlier \(em stress.
.sh "8.1  Stress"
.pp
Stress is an everyday notion, and when
listening to natural speech people can usually agree on which syllables
are stressed.  But it is difficult to characterize in acoustic terms.
From the speaker's point of view, a stressed syllable is produced by
pushing more air out of the lungs.  For a listener, the points of stress
are "obvious".
You may think that stressed syllables are louder than the others:  however,
instrumental studies show that this is not necessarily (nor even usually)
so (eg Lehiste and Peterson, 1959).
.[
Lehiste Peterson 1959
.]
Stressed syllables frequently have a longer vowel than unstressed
ones, but this is by no means universally true \(em if you say "little"
or "bigger" you will find that the vowel in the first, stressed, syllable
is short and shows little sign of lengthening as you increase the emphasis.
Moreover, experiments using bisyllabic nonsense words have indicated
that some people consistently judge the
.ul
shorter
syllable to be stressed in the absence of other clues (Morton and Jassem,
1965).
.[
Morton Jassem 1965
.]
Pitch often helps to indicate stress.
It is not that stressed syllables are always higher- or lower-pitched
than neighbouring ones, or even that they are uttered with a rising or
falling pitch.  It is the
.ul
rate of change
of pitch that tends to be greater
for stressed syllables:  a sharp rise or fall,
or a reversal of direction, helps to give emphasis.
.pp
Stress is acoustically manifested in timing and pitch,
and to a much lesser extent in loudness.
However it is a rather subtle feature and does
.ul
not
correspond simply to duration increases or pitch rises.
It seems that listeners unconsciously put together all the clues
that are present in an utterance in order to deduce which syllables are
stressed.
It may be that speech is perceived by a listener with reference to how
he would have produced it himself, and that this is how he detects which syllables
were given greater vocal effort.
.pp
The situation is confused by the fact that certain syllables in words are
often said in ordinary language to be "stressed" on account of their
position in the word.  For example, the words
"diplomat", "diplomacy", and "diplomatic" have stress on the first,
second, and third syllables respectively.
But here we are talking about the word itself rather than
any particular utterance of it.  The "stress" is really
.ul
latent
in the indicated syllables and only made manifest upon uttering them,
and then to a greater or lesser degree depending on exactly how
they are uttered.
.pp
Some linguists draw a careful distinction between salient syllables,
accented syllables, and stressed syllables,
although the words are sometimes used differently by different authorities.
I will not adopt a precise terminology here,
but it is as well to be aware of the subtle distinctions involved.
The term "salience" is applied to actual utterances, and salient
syllables are those that are perceived as being more prominent than their
neighbours.
"Accent" is the potential for salience, as marked, for example,
in a dictionary or lexicon.
Thus the discussion of the "diplo-" words above is about accent.
Stress is an articulatory phenomenon associated with increased
muscular activity.
Usually, syllables which are perceived as salient were produced with stress,
but in shouting, for example, all syllables can be stressed \(em even
non-salient ones.
Furthermore, accented syllables may not be salient.
For instance, the first syllable of the word "very" is accented,
that is, potentially salient, but in a sentence as uttered it may or may not be
salient.  One can say
.LB
"\c
.ul
he's
very good"
.LE
with salience on "he" and possibly "good", or
.LB
"he's
.ul
very
good"
.LE
with salience on the first syllable of "very", and possibly "good".
.pp
Non-standard stress patterns are frequently used to bring out contrasts.
Words like "a" and "the" are normally unstressed, but can be stressed
in contexts where ambiguity has arisen.
Thus factors which operate at a much higher level than the phonetic structure
of the utterance must be taken into account when deciding where stress
should be assigned.  These include syntactic and semantic considerations,
as well as the attitude of the speaker and the likely attitude of
the listener to the material being spoken.
For example, I might say
.LB
"Anna
.ul
and
Nikki should go",
.LE
with emphasis on the "and" purely because I was aware that my listener
might quibble about the expense of sending them both.
Clearly some notation is needed to communicate to the synthesis process
how the utterance is supposed to be rendered.
.sh "8.2  Transferring pitch from one utterance to another"
.pp
For speech stored in source-filter form and concatenated on a
slot-filling basis, it would be useful to
have stored typical pitch contours which can be applied to the
synthetic utterances.
From a practical point of view it is important to be able to generate
natural-sounding pitch for high-quality artificial speech.
Although several algorithms for creating completely synthetic contours
have been proposed \(em and we will examine one later in this chapter \(em
they are unsuitable for high-quality speech.
They are generally designed for use with synthesis-by-rule from phonetics,
and the rather poor quality of articulation does not encourage the
development of excellent pitch assignment procedures.  With speech
synthesized by rule there is generally an emphasis on keeping the
data storage requirements to a minimum, and so it is not appropriate
to store complete contours.
Moreover, if speech is entered in textual
form as phoneme strings, it is natural to attach pitch information as markers
in the text rather than by entering a complete and detailed contour.
.pp
The picture is rather different for concatenated segments of natural speech.
In the airline reservation system, with utterances formed from templates like
.LB
Flight number \(em leaves \(em at \(em , arrives in \(em at \(em ,
.LE
it is attractive to store the pitch contour of one complete instance of the
utterance and apply it to all synthetic versions.
.pp
There is an enormous literature on the anatomy of intonation, and much of it
rests upon the notion of a pitch contour as a descriptive aid to analysis.
Underlying this is the assumption, usually unstated, that a contour can be
discussed independently of the particular stream of words that manifests it;
that a single contour can somehow be bound to any sentence (or phrase, or
clause) to produce an acceptable utterance.  But the contour, and its binding,
are generally described only at the grossest level, the details being left
unspecified.
.pp
There are phonetic influences on pitch \(em the characteristic lowering
during certain consonants was mentioned above \(em and these are
not normally considered as part of intonation.
Such effects will certainly spoil attempts to store contours extracted
from living speech and apply them to different utterances, but the impairment
may not be too great, for pitch is only one of many segmental clues to
consonant identification.
.pp
In the system mentioned earlier which generated 7-digit telephone numbers
by concatenating formant-coded words, a single natural pitch contour
was applied to all utterances.
It was taken to match as well as possible the general shape of the
contours measured in naturally-spoken telephone numbers.  However, this is a very
restricted environment, for telephone numbers exhibit almost no variety in
the configuration of stressed and unstressed syllables \(em
the only digit which is not a monosyllable is "seven".
Significant problems arise when more general utterances are considered.
.pp
Suppose the pitch contour of one utterance (the "source")
is to be transferred to another (the "target").
Assume that the utterances are encoded in source-filter form,
either as parameter tracks for a formant synthesizer or as linear predictive
coefficients.
Then there are no technical obstacles to combining pitch and segmentals.
The source must be available as a complete utterance, while the target
may be formed by concatenating smaller units such as words.
.pp
For definiteness, we will consider utterances of the form
.LB
The price is \(em dollars and \(em cents,
.LE
where the slots are filled by numbers less than 100;
and of the form
.LB
The price is \(em cents.
.LE
The domain of prices encompasses a wide range of syllable
configurations.
There are between one and five syllables in each variable part,
if the numbers are restricted to be less than 100.
The sentences have a constant pragmatic, semantic, and syntactic structure.
As in the vast majority of real-life situations,
minimal phonetic distinctions between utterances do not occur.
.pp
Pitch transfer is complicated by the fact that values of the source pitch
are only known during the voiced parts of the utterance.
Although it would certainly be possible to extrapolate pitch
over unvoiced parts, this would introduce some artificiality into
the otherwise completely natural contours.
Let us assume, therefore, that the pitch contour
of the voiced nucleus of each syllable in the source is applied to the
corresponding syllable nucleus in the target.
.pp
The primary factors which might tend to inhibit successful transfer
are
.LB
.NP
different numbers of syllables in the utterances;
.NP
variations in the pattern of stressed and unstressed syllables;
.NP
different syllable durations;
.NP
pitch discontinuities;
.NP
phonetic differences between the utterances.
.LE
.rh "Syllabification."
It is essential to take into account the syllable structures
of the utterances, so that pitch is transferred between
corresponding syllables rather than over the utterance
as a whole.
Fortunately, syllable boundaries can be detected automatically
with a fair degree of accuracy, especially if the speech is carefully
enunciated.
It is worth considering briefly how this can be done, even though it takes
us off the main topic of synthesis and into speech analysis.
.pp
A procedure developed by Mermelstein (1975)
involves integrating the spectral energy
at each point in the utterance.
.[
Mermelstein 1975 Automatic segmentation of speech into syllabic units
.]
First the low (<500\ Hz) and high (>4000\ Hz) ends are filtered out
with 12\ dB/octave cutoffs.
The resulting energy signal is smoothed
by a 40\ Hz lowpass filter, giving a so-called "loudness"
function.
All this can be accomplished with simple recursive digital filters.
.pp
Then, the loudness function is compared with its convex hull.
The convex hull is the shape a piece of elastic would assume if
stretched over the top of the loudness function and anchored down at
both ends, as illustrated in Figure 8.1.
.FC "Figure 8.1"
The point of maximum difference between the hull and loudness function
is taken to be a tentative syllable
boundary.
The hull is recomputed, but anchored to the actual loudness function
at the tentative boundary,
and the points of maximum hull-loudness difference in each of the
two halves  are selected as further tentative
boundaries.
The procedure continues recursively until the maximum hull-loudness
difference, with the hull anchored at each tentative boundary,
falls below a certain minimum (say 4\ dB).
.pp
At this stage, the number of tentative boundaries will greatly exceed
the actual number of syllables (by a factor of around 5).
Many of the extraneous boundaries are eliminated by the following
constraints:
.LB
.NP
if two boundaries lie within a certain time of each other
(say 120\ msec), one of them is discarded;
.NP
if the maximum loudness within a tentative syllable falls too
far short of the overall maximum for the utterance
(more than 20\ dB), one boundary is discarded.
.LE
The question of which boundary to discard can be decided by
examining the voicing continuity of the utterance.
If possible, voicing across a syllable boundary should be avoided.
Otherwise, the boundary with the smallest hull-loudness
difference should be rejected.
.RF
.nr x0 \w'boundaries moved slightly to correspond better with voicing:'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 3.4i +0.5i
\l'\n(x0u\(ul'
.sp
total syllable count:	332
boundaries missed by algorithm:	\0\09	(3%)
extra boundaries inserted by algorithm:	\029	(9%)
boundaries moved slightly to correspond better with voicing:
	\0\03	(1%)
.sp
total errors:	\041	(12%)
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 8.1  Success of the syllable segmentation procedure"
.pp
Table 8.1 illustrates the success of this syllabification
procedure, in a particular example.
Segmentation is performed with less than 10% of extraneous
boundaries being inserted,
and much less than 10% of actual boundaries being missed.
These figures are rather sensitive to the values of the
three thresholds.
The values were chosen to err on the side
of over-zealous syllabification, because all the boundaries need to be checked
by ear and eye and it is easier to delete
a boundary by hand than to insert one at an appropriate place.
It may well be that with careful optimization of thresholds,
better figures could be
achieved.
.rh "Stressed and unstressed syllables."
If the source and target utterances have the same number of
syllables, and the same pattern of stressed and unstressed syllables,
pitch can simply be transferred from a syllable in the source
to the corresponding one in the target.
But if the pattern differs \(em even though the
number of syllables may be the same, as in "eleven" and "seventeen" \(em
then a one-to-one mapping will conflict with the stress points,
and certainly sound unnatural.
Hence an attempt should be made to ensure that the pitch is mapped in a
plausible way.
.pp
The syllables of each utterance can be classified as "stressed"
and "unstressed".
This distinction could be made automatically by
inspection of the pitch contour, within the domain of utterances used,
and possibly even in general (Lea
.ul
et al,
1975).
.[
Lea Medress Skinner 1975
.]
However, in many cases it is expedient to perform the job by hand.
In our example, the sentences have fixed "carrier" parts and
variable "number" parts.
The stressed carrier syllables, namely
.LB
"... price ... dol\- ... cents",
.LE
can be marked as such, by hand,
to facilitate proper alignment between the source and target.
This marking would be difficult to do automatically
because it would be hard to distinguish the carrier from the numbers.
.pp
Even after classifying the syllables as "carrier stressed",
"stressed", and "unstressed", alignment still presents problems,
because the configuration of syllables in the variable parts
of the utterances may differ.
Syllables in the source which have no
correspondence in the target can be ignored.
The pitch track of
the source syllable can be replicated for each
additional syllable in corresponding
position in the target.
Of course, a stressed syllable should be selected for copying
if the unmatched target syllable is stressed,
and similarly for unstressed ones.
It is rather dangerous to copy exactly a part of a pitch
contour, for the ear is very sensitive to the juxtaposition of
identically intoned segments of speech \(em especially when the segment is stressed.
To avoid this, whenever a stressed syllable is replicated the
pitch values should be decreased by, say, 20%, on the second copy.
It sometimes happens that a single stressed syllable in the source
needs to cover a stressed-unstressed pair in the target:  in
this case the first part of the source pitch track can be used
for the stressed syllable, and the remainder for the
unstressed one.
.pp
The example of Figure 8.2 will help to make these rules clear.
.FC "Figure 8.2"
Note that the marking alone is done by hand.
The detailed mapping decisions can be left to the computer.
The rules were derived intuitively, and do not have any sound theoretical
basis.
They are intended to give reasonable results in the majority of cases.
.pp
Figure 8.3 shows the result of transferring the pitch from "the price is ten
cents" to "the price is seventy-seven cents".
.FC "Figure 8.3"
The syllable boundaries which are marked were determined automatically.
The use of the last 30% of the
"ten" contour to cover the first "-en" syllable, and its replication
to serve the "-ty" syllable, can be seen.
However, the 70%\(em30% proportion is applied to the source contour,
and the linear distortion (described next) upsets the proportion in the
target utterance.
The contour of the second "seven" can be seen to be a
replication of that of the first one, lowered by 20%.
Notice that the pitch extraction procedure has introduced an artifact into the final
part of one of the "cents" contours by doubling the pitch.
.rh "Stretching and squashing."
The pitch contour over a source syllable nucleus must be stretched
or squashed to match the duration
of the target nucleus.
It is difficult to see how anything other than linear stretching
and squashing could be done without considerably increasing the
complexity of the procedure.
The gross non-linearities will have been accounted for
by the syllable alignment process, and so simple linear time-distortion
should not cause too much degradation.
.rh "Pitch discontinuities."
Sudden jumps in pitch during voiced speech sound peculiar,
although they can in fact be produced naturally (by yodelling).
People frequently burst into laughter on hearing them in synthetic speech.
It is particularly important to avoid this diverting effect in
voice response applications,
for the listener's attention is instantly directed
away from what is said to the voice that speaks.
.pp
Discontinuities can arise in the pitch-transfer procedure either by a
voiced-unvoiced-voiced transition between syllables mapping on to
a voiced-voiced transition in the target,
or by voicing continuity being broken when the syllable
alignment procedure drops or replicates a syllable.
There are several ways in which at least some of the possibilities can
be avoided.
For example, one could hold unstressed syllables at a constant pitch
whose value coincides with either the end of the previous
syllable's contour or the beginning of the next syllable's contour,
depending on which transition is voiced.
Alternatively, the policy of reserving the trailing part
of a stressed syllable in the source to cover an unmatched following
unstressed syllable in the target could be generalized to allow use of the leading 30%
of the next stressed syllable's contour instead,
if that maintained voicing continuity.
A third solution is simply to merge the pitch contours
at a discontinuity by mixing the average pitch value at the break
with the pitch contour on either side of it in a proportion which
increases linearly from the edges of the domain of influence to the discontinuity.
Figure 8.4 shows the effect of this merging,
when the pitch contour of "the price is seven cents"
is transferred to "the price is eleven cents".
.FC "Figure 8.4"
Of course, the
interpolated part will not necessarily be linear.
.rh "Results of an experiment on pitch transfer."
Some experiments have been conducted to evaluate the performance
of this pitch transfer method on the kind of utterances discussed above
(Witten, 1979).
.[
Witten 1979 On transferring pitch from one utterance to another
.]
First, the source and target sentences
were chosen to be lexically identical, that is, the same words were spoken.
For this experiment alone,
expert judges were employed.
Each sentence was recorded twice (by the same person),
and pitch was transferred from copy A
to copy B and vice versa.  Also, the originals were resynthesized from their linear
predictive coefficients with their own pitch contours.
Although all four often sounded extremely similar, sometimes the pitch
contours of originals A and B were quite different,
and in these cases it was immediately obvious to the ear that two of
the four utterances shared the same intonation,
which was different to that shared by the other two.
.pp
Experienced researchers in speech analysis-synthesis served as
judges.
In order to make the test as stringent as possible it was explained
to them exactly what had been done,
except that the order of the utterances in each quadruple was kept secret.
They were asked to identify which two of the four sentences did not have their
original contours,
and were allowed to listen to each quadruple as often as they liked.
On occasion they were prepared to identify only one, or even none,
of the sentences as artificial.
.pp
The result was that an utterance with pitch transferred
from another, lexically identical, one is indistinguishable from
a resynthesized version of the original, even to a skilled ear.
(To be more precise, this hypothesis
could not be rejected even at the 1% level of statistical significance.)  This
gave confidence in the transfer procedure.
However, one particular judge was quite successful at identifying the bogus contours,
and he attributed his success to the fact that
on occasion the segmental durations did not accord with the
pitch contour.
This casts a shadow of suspicion on the linear stretching and
squashing mechanism.
.pp
The second experiment examined pitch transfers between utterances having only one variable part
each ("the price is ... cents") to test the transfer
method under relatively controlled conditions.
Ten sentences of the form
.LB
"The price is \(em cents"
.LE
were selected to cover
a wide range of syllable structures.
Each one was regenerated with pitch transferred from each of
the other nine,
and these nine versions were paired with the original resynthesized
with its natural pitch.
The $10 times 9=90$ resulting pairs were recorded on tape in random order.
.pp
Five males and five females, with widely differing occupations
(secretaries, teachers, academics, and students), served as judges.
Written instructions explained that the tape contained pairs of
sentences which were lexically identical but had a slight difference
in "tone of voice", and that the subjects were to judge which of
each pair sounded "most natural and intelligible".  The
response form gave the price associated with each pair \(em
a preliminary experiment had shown that there was never
any difficulty in identifying this \(em and a column for decision.
With each decision, the subjects recorded their confidence in the decision.
Subjects could rest at any time during the test, which lasted for about
30 minutes, but they were not permitted to hear any pair a second time.
.pp
Defining a "success" to be a choice of the utterance with
natural pitch as the best of a pair,
the overall success rate was about 60%.
If choices were random, one would of course expect only a 50% success rate,
and the figure obtained was significantly different from this.
Almost half the choices were correct and made with high confidence;
high-confidence but incorrect choices accounted for a quarter of the
judgements.
.pp
To investigate structural effects in the pitch transfer process,
low confidence decisions were ignored to eliminate noise, and the others
lumped together and tabulated by source and target utterance.
The number of stressed and unstressed syllables does not appear to play
an important part in determining whether a particular utterance is an
easy target.
For example, it proved to be particularly difficult to tell
.EQ
delim @@
.EN
natural from transferred contours with utterances $0.37 and $0.77.
.EQ
delim $$
.EN
In fact, the results showed no better than random discrimination for them,
even though the decisions in which listeners expressed little confidence
had been discarded.
Hence it seems that the syllable alignment procedure and the policy
of replication were successful.
.pp
.EQ
delim @@
.EN
The worst target scores were for utterances $0.11 and $0.79.
.EQ
delim $$
.EN
Both of these contained large unbroken voiced periods
in the "variable" part \(em almost twice as long as the next longest
voiced period.
The first has an unstressed syllable followed by
a stressed one with no break in voicing,
involving, in a natural contour,
a fast but continuous climb in pitch over the juncture,
and it is not surprising that it proved to be the most difficult target.
A more sophisticated "smoothing" algorithm than the
one used may be worth investigating.
.pp
In a third experiment, sentences with two variable parts were used to check
that the results of the second experiment extended to more complex
utterances.
The overall success rate was 75%, significantly different from chance.
However, a breakdown of the results by source and target utterance
showed that there was one contour (for the utterance
"the price is 19 dollars and 8 cents") which exhibited very successful
transfer, subjects identifying the transferred-pitch utterances at only
a chance level.
.pp
Finally, transfers of pitch from utterances with two variable parts
to those with one variable part were tested.
Pitch contours were transferred to sentences with the same "cents"
figure but no "dollars" part; for example,
"the price is five dollars and thirteen cents"
to
"the price is thirteen cents".  The
contour was simply copied between the corresponding
syllables, so that no adjustment needed to be made
for different syllable structures.
The overall score was 60 successes in 100 judgements \(em
the same percentage as in the second experiment.
.pp
To summarize the results of these four experiments,
.LB
.NP
even accomplished linguists cannot distinguish an utterance from one with
pitch transferred from a different recording of it;
.NP
when the utterance contained only one variable part embedded in a
carrier sentence,
lay listeners identified the original correctly in 60% of cases,
over a wide variety of syllable structures:  this
figure differs significantly from the chance value of 50%;
.NP
lay listeners identified the original confidently and correctly in
50% of cases; confidently but incorrectly in 25% of cases;
.NP
the greatest hindrance to successful transfer was the presence of
a long uninterrupted period of voicing in the target utterance;
.NP
the performance of the method deteriorates as the number
of variable parts in the utterances increases;
.NP
some utterances seemed to serve better than others as the pitch source for
transfer, although this was not correlated with complexity of syllable structure;
.NP
even when the utterance contained two variable parts,
there was one source utterance whose pitch contour was
transferred to all the others so successfully that listeners could not identify
the original.
.LE
.pp
The fact that only 60% of originals in the second experiment were
spotted by lay listeners in a stringent
paired-comparison test \(em many of them being identified without confidence \(em
does encourage the use of the procedure for generating stereotyped,
but different, utterances of high quality in voice-response systems.
The experiments indicate that although different syllable patterns
can be handled satisfactorily by this procedure,
long voiced periods should be avoided if possible when designing
the message set,
and that if individual utterances must contain multiple variable parts
the source utterance should be chosen with the aid of listening tests.
.sh "8.3  Assigning timing and pitch to synthetic speech"
.pp
The pitch transfer method can give good results within a fairly narrow
domain of application.
But like any speech output technique which treats complete utterances
as a single unit, with provision for a small number of slot-fillers to
accomodate data-dependent messages, it becomes unmanageable in more general
situations with a large variety of utterances.
As with segmental synthesis it becomes necessary to consider methods
which use a textual rather than an acoustically-based representation
of the prosodic features.
.pp
This raises a problem with prosodics that was not there for segmentals:  how
.ul
can
prosodic features be written in text form?
The standard phonetic transcription method does not give much help with
notation for prosodics.  It does provide a diacritical mark to indicate
stress, but this is by no means enough information for synthesis.
Furthermore, text-to-speech procedures (described in the next chapter)
promise to allow segmentals to be specified by an ordinary orthographic
representation of the utterance; but we have seen that considerable
intelligence is required to derive prosodic features from text.
(More than mere intelligence may be needed:  this is underlined by a paper
(Bolinger, 1972)
delightfully entitled
"Accent is predictable \(em if you're a mind reader"!)
.[
Bolinger 1972 Accent is predictable \(em if you're a mind reader
.]
.pp
If synthetic speech is to be used as a computer output medium rather
than as an experimental tool for linguistic research, it is important
that the method of specifying utterances is natural and easy to learn.
Prosodic features must be communicated to the computer in a manner
considerably simpler than individual duration and pitch specifications
for each phoneme, as was required in early synthesis-by-rule systems.
Fortunately, a notation has been developed for conveying some of the
prosodic features of utterances, as a by-product of the linguistically
important task of classifying the intonation contours used in
conversational English (Halliday, 1967).
.[
Halliday 1967
.]
This system has even been used to help foreigners speak English
(Halliday, 1970) \(em which emphasizes the fact that it was designed for use
by laymen, not just linguists!
.[
Halliday 1970 Course in spoken English: Intonation
.]
.pp
Here are examples of the way utterances can be conveyed to the ISP
speech synthesis system which was described in the previous chapter.
The notation is based upon Halliday's.
.LB
.NI
3
.ul
^  aw\ t\ uh/m\ aa\ t\ i\ k  /s\ i\ n\ th\ uh\ s\ i\ s  uh\ v  /*s\ p\ ee\ t\ sh,
.NI
1
.ul
^  f\ r\ uh\ m  uh  f\ uh/*n\ e\ t\ i\ k  /r\ e\ p\ r\ uh\ z\ e\ n/t\ e\ i\ sh\ uh\ n.
.LE
(Automatic synthesis of speech, from a phonetic representation.)  Three
levels of stress are distinguished:  tonic or "sentence" stress,
marked by "*" before the syllable; foot stress (marked by "/");
and unstressed syllables.
The notion of a "foot" controls the rhythm of the speech in a way that
will be described shortly.
A fourth level of stress is indicated on a segmental basis when a syllable
contains a reduced vowel.
.pp
Utterances are divided by punctuation into
.ul
tone groups,
which are the basic prosodic unit \(em there are two in the example.
The shape of the pitch contour is governed by a numeral at the start of
each tone group.
Crude control over pauses is achieved by punctuation marks:  full stop, for
example, signals a pause while comma does not.
(Longer pauses can be obtained by several full stops as in "...".)  The
"^" character stands for a so-called "silent stress" or breath point.
Word boundaries are marked by two spaces between phonemes.
As mentioned in the previous chapter, syllable boundaries and explicit
pitch and duration specifiers can also be included in the input.
If they are not, the ISP system will attempt to compute them.
.rh "Rhythm."
Our understanding of speech rhythm knows many laws but little order.
In the mid 1970's there was a spate of publications reporting new data
on segmental duration in various contexts, and there is a growing
awareness that segmental duration is influenced by a great many factors,
ranging from the structure of a discourse, through semantic and syntactic
attributes of the utterances, their phonemic and phonetic make-up,
right down to physiological constraints
(these multifarious influences are ably documented and reviewed by
Klatt, 1976).
.[
Klatt 1976 Linguistic uses of segment duration in English
.]
What seems to be lacking in this work is a conceptual framework on to
which new information about segmental duration can be nailed.
.pp
One starting-point for imitating the rhythm of English speech is the
hypothesis of regularly recurring stresses.
These stresses are primarily
.ul
rhythmic
ones, and should be distinguished from the tonic stress mentioned above which
is primarily an
.ul
intonational
one.
Rhythmic stresses are marked in the transcription by a "/".
The stretch between one and the next is called a "foot",
and the hypothesis above is often referred to as that of isochronous feet
("isochronous" means "of equal time").
There is considerable controversy about this hypothesis.
It is most popular among British linguists and, it must be admitted,
amongst those who work by introspection and intuition and do not actually
.ul
measure
things.
Although the question of isochrony of feet has long been debated, there
seems to be general agreement
\(em even amongst American linguists \(em
that there is at least a tendency towards
equal spacing of foot boundaries.
However, little is known about the strength of this tendency and the extent
of deviations from it (see Hill
.ul
et al,
1979, for an attempt
to quantify it) \(em and there is even evidence to suggest that it may in part
be a
.ul
perceptual
phenomenon (Lehiste, 1973).
.[
Hill Jassem Witten 1979
.]
.[
Lehiste 1973
.]
On this basic point, as on many others, the designer of a prosodic synthesis
strategy must needs make assumptions which cannot be properly justified.
.pp
From a pragmatic point of view there are two advantages to basing
a synthesis strategy on this hypothesis.
Firstly, it provides a way to represent the many influences of higher-level
processes (like syntax and semantics) on rhythm using a simple notation which
fits naturally into the phonetic utterance representation,
and which people find quite easy to understand and generate.
Secondly, it tends to produce a heavily accentuated, but not unnatural,
speech rhythm which can easily be moderated into a more acceptable rhythm
by departing from isochrony in a controlled manner.
.pp
The ISP procedure does not make feet exactly isochronous.
It starts with a standard foot time and attempts to fit the syllables of the
foot into this time.
If doing so would result in certain syllables having less than a preset minimum
duration, the isochrony constraint is relaxed and the foot is expanded.
There is no preset
.ul
maximum
syllable length.
However, when the durations of individual phoneme postures are adjusted
to realize the calculated syllable durations,
limits are imposed on the amount by which individual phonemes can be expanded
or contracted.
Thus a hierarchy of limits exists.
.pp
The rate of talking is determined by the standard foot time.
If this time is short, many feet will be forced to have durations longer than
the standard, and the speech will be "less isochronous".
This seems to accord with common human experience.
If the standard time is longer, however, the minimum syllable limit
will always be exceeded and the speech will be completely isochronous.
If it is too long, the above-mentioned limits to phoneme expansion will
come into play and again partially destroy the isochrony.
.pp
It has often been observed that the final foot of an utterance tends to be
longer than others; as does the tonic foot \(em that which bears the
major stress.
This is easy to accomodate, simply by making the target duration
longer for these feet.
.rh "From feet to syllables."
A foot is a succession of syllables, one or more.
And it is obvious that since there are more syllables in some feet than
in others, some syllables must occupy less time than others in order to preserve
the tendency towards isochrony of feet.
.pp
However, the duration of a foot is not divided evenly between its constituent
syllables.  The syllables have a definite rhythm of their own, which seems
to be governed by
.LB
.NP
the nature of the salient (that is, the first) syllable of the foot
.NP
the presence of word boundaries within the foot.
.LE
A salient syllable tends to be long either if it contains one of
a class of so-called "long" vowels, or if there is a cluster of two or more
consonants following the vowel.
The pattern of syllables and word boundaries governs the rhythm of the foot,
and Table 8.2 shows the possibilities for one-, two-, and three-syllable feet.
This theory of speech rhythm is due to Abercrombie (1964).
.[
Abercrombie 1964 Syllable quantity and enclitics in English
.]
.RF
.nr x2 \w'three-syllable feet  'u
.nr x3 \w'sal-short  'u
.nr x4 \w'weak [#]  'u
.nr x5 \w'weak      'u
.nr x6 \w'/\fIit s incon\fR/ceivable    'u
.nr x1 (\w'syllable rhythm'/2)
.nr x7 \n(x2+\n(x3+\n(x4+\n(x5+\n(x6+\n(x1+\n(x1
.nr x7 (\n(.l-\n(x7)/2
.in \n(x7u
.ta \n(x2u +\n(x3u +\n(x4u +\n(x5u +\n(x6u
.ul
	syllable pattern		example	\0\0\h'-\n(x1u'syllable rhythm
.sp
one-syllable feet	salient			/\fIgood\fR /show	1
	^	weak		/\fI^ good\fR/bye	2:1
.sp
two-syllable feet	sal-long	weak		/\fIcentre\fR /forward	1:1
	sal-short	weak		/\fIatom\fR /bomb	1:2
	salient  #	weak		/\fItea for\fR /two	2:1
.sp
three-syllable feet	salient  #	weak [#]	weak	/\fIone for the\fR /road	2:1:1
				/\fIit's incon\fR/ceivable
	sal-long	weak #	weak	/\fIafter the\fR /war	2:3:1
	sal-short	weak #	weak	/\fImiddle to\fR /top	1:3:2
	sal-long	weak	weak	/\fInobody\fR /knows	3:1:2
	sal-short	weak	weak	/\fIanything\fR /more	1:1:1
.sp
	# denotes a word boundary;
	[#] is an optional word boundary
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 8.2  Syllable patterns and rhythms"
.pp
A foot may have the rhythmical characteristics of a two-syllable foot
while having only one syllable, if the first place in it is filled by a
silent stress (marked by "^").
This is shown in the second one-syllable example of
Table 8.2.
A similar effect may occur with two- and three-syllable feet,
although examples are not given in the table.
Feet of four and five syllables \(em with or without a silent stress \(em are
considerably rarer.
.pp
Syllabification \(em splitting an utterance into syllables \(em is a job
which had to be done for the pitch-transfer procedure described earlier,
and the nature of syllable rhythms calls for it here too.
Even though the utterance is now specified phonetically instead of
acoustically, the same basic principle applies.
Syllables normally coincide with peaks of sonority,
where "sonority" measures the inherent loudness of a sound relative to
other sounds of the same duration and pitch.
However, difficult cases exist where it seems to be unclear how many syllables
there are in a word.  (Ladefoged, 1975, discusses this problem with examples
such as "real", "realistic", and "reality".)  Furthermore,
.[
Ladefoged 1975
.]
care must be taken to avoid counting two syllables in a word like "sky"
because of its two peaks of sonority \(em for the stop
.ul
k
has lower
sonority than the fricative
.ul
s.
.pp
Three levels of notional sonority are enough for syllabification.
Dividing phoneme segments into
.ul
sonorants
(glides and nasals),
.ul
obstruents
(stops and fricatives), and vowels; a general syllable has the form
.LB
.EQ
<obstruent> sup * ~ <sonorant> sup * ~ <vowel> sup * ~ <sonorant> sup * ~
<obstruent> sup * ~ ,
.EN
.LE
where "*" means repetition, that is, occurrence zero or more times.
This sidesteps the "sky" problem by giving fricatives the same
sonority as stops.
It is easy to use the above structure to count the number
of syllables in a given utterance by counting the sonority
peaks.
.pp
However, what is required is an indication of syllable
.ul
boundaries
as well as a syllable count.
For slow conversational speech, these can be approximated as follows.
Word divisions obviously form syllable boundaries, as should
foot markers \(em but it may be wise not to assume that the latter do if the
utterance has been prepared by someone with little knowledge of linguistics.
Syllable boundaries should be made to coincide with sonority minima.
As an
.ul
ad hoc
pragmatic
rule, if only one segment has the minimum sonority the boundary is placed
before it.
If there are two segments, each with the minimum sonority, it is placed between
them, while for three or more it is placed after the first two.
.pp
These rules produce obviously acceptable divisions in many cases
(to'day, ash'tray, tax'free), with perhaps unexpected positioning of the
boundary in others (ins'pire, de'par'tment).
Actually, people do differ in placement of syllable boundaries
(Abercrombie, 1967).
.[
Abercrombie 1967
.]
.rh "From syllables to segments."
The theory of isochronous feet (with the caveats noted earlier)
and that of syllable rhythms provide a way of producing durations for
individual syllables.  But where are these durations supposed to be measured?
There is a beat point, or tapping point, near the beginning of each syllable.
This is the place where a listener will tap if asked to give one tap to each
syllable; it has been investigated experimentally by Allen (1972).
.[
Allen 1972 Location of rhythmic stress beats in English One
.]
It is not necessarily at the very beginning of the syllable.
For example, in "straight", the tapping point is certainly after the
.ul
s
and the stopped part of the
.ul
t.
.pp
Another factor which relates to the division of the syllable duration
amongst phonetic segments is the often-observed fact that the length of the
vocalic nucleus is a strong clue to the degree of voicing of the terminating
cluster (Lehiste, 1970).
.[
Lehiste 1970 Suprasegmentals
.]
If you say in pairs words like "cap", "cab"; "cat", "cad"; "tack", "tag"
you will find that the vowel in the first word of each pair is significantly
shorter than that in the second.
In fact, the major difference between such pairs is the vowel length,
not the final consonant.
.pp
Such effects can be taken into account by considering a syllable to comprise
an initial consonant cluster, followed by a vocalic nucleus and a final
consonant cluster.
Any of these elements can be missing \(em the most unusual case where the
nucleus is absent occurs, for example, in so-called syllabic
.ul
n\c
\&'s
(as in renderings of "button", "pudding" which might be written
"butt'n", "pudd'n").
However, it is convenient to modify the definition of the nucleus
so as to rule out the possibility of it being empty.
Using the characterization of the syllable given above, the clusters can
be defined as
.LB
.NI
initial cluster	=  <obstruent>\u*\d <sonorant>\u*\d
.NI
nucleus	=  <vowel>\u*\d <sonorant>\u*\d
.NI
final cluster	=  <obstruent>\u*\d.
.LE
Sonorants are included in the nucleus so that it is always present,
even in the case of a syllabic consonant.
.pp
Then, rules can be used to divide the syllable duration between the
initial cluster, nucleus, and final cluster.
These must distinguish between situations where the terminating cluster
is voiced or unvoiced so that the characteristic differences in vowel lengths
can be accomodated.
.pp
Finally, the cluster durations must be apportioned amongst their constituent
phonetic segments.  There is little published data on which to base this.
Two simple schemes which have been used in ISP are described in
Witten (1977) and Witten & Smith (1977).
.[
Witten 1977 A flexible scheme for assigning timing and pitch to synthetic speech
.]
.[
Witten Smith 1977 Synthesizing British English rhythm
.]
.rh "Pitch."
There are two basically different ways of looking at the pitch of an
utterance.
One is to imagine pitch
.ul
levels
attached to individual syllables.
This has been popular amongst American linguists, and some people
have even gone so far as to associate pitch levels with levels of
stress.
The second approach is to consider pitch
.ul
contours,
as we did earlier when examining how to transfer pitch from one utterance
to another.
This seems to be easier for the person who transcribes the utterances
to produce, for the information required is much less detailed than levels
attached to each syllable.  Some indication needs to be given of how
the contour is to be bound to the utterance, and in the notation introduced above
the most prominent, or "tonic", syllable is indicated in the transcription.
.pp
Halliday's (1970) classification identifies five different primary intonation
contours, each hinging on the tonic syllable.
.[
Halliday 1970 Course in spoken English: Intonation
.]
These are sketched in Figure 8.5, in the style of Halliday.
.FC "Figure 8.5"
Several secondary contours, which are variations on the primary ones,
are defined as well.
However, this classification scheme is intended for consumption by people,
who bring to the problem a wealth of prior knowledge of speech and years
of experience with it!  It captures only the gross features
of the infinite variety of pitch contours found in living speech.
In a sense, the classification is
.ul
phonological
rather than
.ul
phonetic,
for it attempts to distinguish the features which make a logical difference
to the listener instead of the acoustic details of the pitch contours.
.pp
It is necessary to take these contours and subject them to a sort of
phonological-to-phonetic embellishment before applying them in synthetic
speech.
For example, the stretches with constant pitch which precede the tonic
syllable in tone groups 1, 2, and 3 sound
most unnatural when synthesized \(em for pitch is hardly ever
exactly constant in living speech.
Some pretonic pitch variation is necessary,
and this can be made to emphasize the salient syllable
of each foot.  A "lilting" effect which reaches a peak at each foot
boundary, and drops rather faster at the beginning of the foot than it
rises at the end, sounds more natural.  The magnitude of this inflection
can be altered slightly to add interest, but a considerable increase in it
produces a semantic change by making the utterance sound more emphatic.
It is a major problem to pin down exactly the turning points of pitch in
the falling-rising and rising-falling contours (4 and 5 in Figure 8.5).
And even deciding on precise values for the pitch frequencies involved is not
always easy.
.pp
The aim of the pitch assignment method of ISP is to allow the person
(or program) which originates a spoken message to exercise a great deal
of control over its intonation, without having to concern himself with
foot or syllable structure.  The message to be spoken must be broken down
into tone groups,
which correspond roughly to Halliday's tone groups.
Each one comprises a
.ul
tonic
of one or more feet, which is optionally preceded by a
.ul
pretonic,
also with a number of feet.  It is advantageous to allow a tone group
boundary to occur in the middle of a foot (whereas Halliday's scheme
insists that it occurs at a foot boundary).
The first foot of the tonic, the
.ul
tonic foot,
is marked by an asterisk at the beginning.
It is on the first syllable of this foot \(em the
"tonic" or "nuclear"
syllable \(em that the major stress of the tone group occurs.
If there is no asterisk in a tone group,
ISP takes the final foot as the tonic
(since this is the most common case).
.pp
The pitch contour on a tone group is specified by an array of ten numbers.
Of course, the system cannot generate all conceivable contours for a tone
group, but the definitions of the ten specifiable quantities have been
chosen to give a useful range of contours.
If necessary, more precise control over the pitch of an utterance can
be achieved by making the tone groups smaller.
.pp
The overall pitch movement is controlled by specifying the pitch at three
places:  the beginning of the tone group, the beginning of the tonic syllable,
and the end of the tone group.
Provision is made for an abrupt pitch break at the start of the tonic
syllable in order to simulate tone groups 2 and 3, and, to a lesser
extent, tone groups 4 and 5.
The pitch is interpolated linearly over the first part of the
tone group (up to the tonic syllable) and over the last part (from there to
the end), except that it is possible to specify a non-linearity on the tonic
syllable, for emphasis, as shown in Figure 8.6.
.FC "Figure 8.6"
.pp
On this basic shape are superimposed two finer pitch patterns.
One of these is an initialization-continuation option which allows
the pitch to rise (or fall) independently on the initial and final feet
to specified values, without affecting the contour on the rest
of the tone group (Figure 8.7).
.FC "Figure 8.7"
The other is a foot pattern which is superimposed on each pretonic foot,
to give the stressed syllables of the pretonic added prominence and avoid
the monotony of constant pitch.
This is specified by a
.ul
non-linearity
parameter which distorts the contour on the foot at a pre-determined
point along it.
Figure 8.8 shows the effect.
.FC "Figure 8.8"
.pp
The ten quantities that define a pitch contour are summarized in
Table 8.3, and shown diagrammatically in Figure 8.9.
.FC "Figure 8.9"
.RF
.nr x0 \w'H:    'u
.nr x1 \n(x0+\w'fraction along foot of the non-linearity position, for the tonic foot'u
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta \n(x0u +4n
A:	continuation from previous tone group
		zero gives no continuation
		non-zero gives pitch at start of tone group
B:	notional pitch at start
C:	pitch range on whole of pretonic
D:	departure from linearity on each foot of pretonic
E:	pitch change at start of tonic
F:	pitch range on tonic
G:	departure from linearity on tonic
H:	continuation to next tone group
		zero gives no continuation
		non-zero gives pitch at end of tone group
I:	fraction along foot of the non-linearity position, for pretonic feet
J:	fraction along foot of the non-linearity position, for the tonic foot
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 8.3  The quantities that define a pitch contour"
.pp
The intention of this parametric method of specifying contours
is that the parameters should be easily derivable from semantic variables
like emphasis, novelty of idea, surprise, uncertainty, incompleteness.
Here we really are getting into controversial, unresearched areas.
Roughly speaking, parameters D and G control emphasis, G by itself
controls novelty and surprise, and H and the relative sizes of E and F
control uncertainty and incompleteness.
Certain parameters (notably I and J) are defined because although they
do not appear to correspond to semantic distinctions, we do not yet know
how to generate them automatically.
.RF
.nr x0 0.6i+0.5i+0.5i+0.5i+0.5i+0.5i+0.5i+0.5i+0.5i+0.5i+0.5i+\w'0000'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 0.6i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
Halliday's
tone group	\0\0A	\0\0B	\0\0C	\0\0D	\0\0E	\0\0F	\0\0G	\0\0H	\0\0I	\0\0J
\l'\n(x0u\(ul'
.sp
	1	\0\0\00	\0175	\0\0\00	\0\-40	\0\0\00	\-100	\0\-40	\0\0\00	0.33	\00.5
	2	\0\0\00	\0280	\0\0\00	\0\-40	\-190	\0100	\0\0\00	\0\0\00	0.33	\00.5
	3	\0\0\00	\0175	\0\0\00	\0\-40	\0\-70	\0\045	\0\-10	\0\0\00	0.33	\00.5
	4	\0\0\00	\0280	\-100	\0\-40	\0\020	\0\045	\0\-45	\0\0\00	0.33	\00.5
	5	\0\0\00	\0175	\0\060	\0\-40	\0\-20	\0\-45	\0\045	\0\0\00	0.33	\00.5
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 8.4  Pitch contour table for Halliday's primary tone groups"
.pp
One basic requirement of the pitch assignment scheme was the ability to
generate contours which approximate Halliday's five primary tone groups.
Values of the ten specifiable quantities are given in Table 8.4, for each
tone group.
All pitches are given in\ Hz.
A distinctly dipping pitch movement has been given to each pretonic foot
(parameter D),
to lend prominence to the salient syllables.
.sh "8.4  Evaluating prosodic synthesis"
.pp
It is extraordinarily difficult to evaluate schemes for prosodic synthesis,
and this is surely a large part of the reason why prosodics are among the
least advanced aspects of artificial speech.
Segmental synthesis can be tested by playing people minimal pairs of
words which differ in just one feature that is being investigated.
For example, one might experiment with "pit", "bit"; "tot", "dot";
"cot", "got" to test the rules which discriminate unvoiced from voiced stops.
There are standard word-lists for intelligibility tests which can be
used to compare systems, too.
No equivalent of such micro-level evaluation exists for prosodics,
for they by definition have a holistic effect on utterances.
They are most noticeable, and most important, in longish stretches of speech.
Even monotonous, arhythmic speech will be intelligible in
sufficiently short samples provided the segmentals are good enough;
but it is quite impossible to concentrate on such speech in quantity.
Some attempts at evaluation appear in Ainsworth (1974) and McHugh (1976),
but these are primarily directed at assessing the success of pronunciation
rules, which are discussed in the next chapter.
.[
Ainsworth 1974 Performance of a speech synthesis system
.]
.[
McHugh 1976 Listener preference and comprehension tests
.]
.pp
One evaluation technique is to compare synthetic with natural versions
of utterances, as was done in the pitch transfer experiment.
The method described earlier used a sensitive paired-comparison test,
where subjects heard both versions in quick succession and were asked
to judge which was "most natural and intelligible".
This is quite a stringent test, and one that may not be so useful
for inferior, completely synthetic, contours.
It is essential to degrade the "natural" utterance so that it is
comparable segmentally to the synthetic one:  this was done in the
experiment described by extracting its pitch and resynthesizing it
from linear predictive coefficients.
.pp
Several other experiments could be undertaken to evaluate artificial
prosody.
For example, one could compare
.LB
.NP
natural and artificial rhythms, using artificial segmental synthesis
in both cases;
.NP
natural and artificial pitch contours, using artificial segmental synthesis
in both cases;
.NP
natural and artificial pitch contours, using segmentals extracted from
natural utterances.
.LE
There are many other topics which have not yet been fully investigated.
It would be interesting, for example, to define rules for generating speech
at different tempos.
Elisions, where phonemes or even whole syllables are suppressed,
occur in fast speech; these have been analyzed by linguists
but not yet incorporated into synthetic models.
It should be possible to simulate emotion by altering parameters such as
pitch range and mean pitch level; but this seems exceptionally difficult
to evaluate.  One situation where it would perhaps be possible to
measure emotion is in the reading of sports results \(em in fact a study
has already been made of intonation in soccer results (Bonnet, 1980)!
.[
Bonnet 1980
.]
Even the synthesis of voices with different pitch ranges requires
investigation, for, as noted earlier, it is difficult to place
precise frequency specifications on phonological contours such as
those sketched in Figure 8.5.
Clearly the topic of prosodic synthesis is a rich and potentially
rewarding area of research.
.sh "8.5  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "8.6  Further reading"
.pp
There are quite a lot of books in the field of linguistics which
describe prosodic features.
Here is a small but representative sample from both sides of the Atlantic.
.LB "nn"
.\"Abercrombie-1965-1
.]-
.ds [A Abercrombie, D.
.ds [D 1965
.ds [T Studies in phonetics and linguistics
.ds [I Oxford Univ Press
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Abercrombie is one of the leading English authorities on phonetics,
and this is a collection of essays which he has written over the years.
Some of them treat prosodics explicitly, and others show the influence
of verse structure on Abercrombie's thinking.
.in-2n
.\"Bolinger-1972-2
.]-
.ds [A Bolinger, D.(Editor)
.ds [D 1972
.ds [T Intonation
.ds [I Penguin
.ds [C Middlesex, England
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
A collection of papers that treat a wide variety of different aspects
of intonation in living speech.
.in-2n
.\"Crystal-1969-3
.]-
.ds [A Crystal, D.
.ds [D 1969
.ds [T Prosodic systems and intonation in English
.ds [I Cambridge Univ Press
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This book attempts to develop a theoretical basis for the study of British
English intonation.
.in-2n
.\"Gimson-1966-3
.]-
.ds [A Gimson, A.C.
.ds [D 1966
.ds [T The linguistic relevance of stress in English
.ds [B Phonetics and linguistics
.ds [E W.E.Jones and J.Laver
.ds [P 94-102
.nr [P 1
.ds [I Longmans
.ds [C London
.nr [T 0
.nr [A 1
.nr [O 0
.][ 3 article-in-book
.in+2n
Here is a careful discussion of what is meant by "stress", with much more
detail than has been possible in this chapter.
.in-2n
.\"Lehiste-1970-4
.]-
.ds [A Lehiste, I.
.ds [D 1970
.ds [T Suprasegmentals
.ds [I MIT Press
.ds [C Cambridge, Massachusetts
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This is a comprehensive study of suprasegmental phenomena in natural speech.
It is divided into three major sections:  quantity (timing), tonal features
(pitch), and stress.
.in-2n
.\"Pike-1945-5
.]-
.ds [A Pike, K.L.
.ds [D 1945
.ds [T The intonation of American English
.ds [I Univ of Michigan Press
.ds [C Ann Arbor, Michigan
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
A classic, although somewhat dated, study.
Notice that it deals specifically with American English.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "9  GENERATING SPEECH FROM TEXT"
.ds RT "Generating speech from text
.ds CX "Principles of computer speech
.pp
In the preceding two chapters I have described how artificial speech
can be produced from a written phonetic representation with additional
markers indicating intonation contours, points of major stress, rhythm,
and pauses.
This representation is substantially the same as that used by linguists
when recording natural utterances.
What we will discuss now are techniques for generating this information,
or at least some of it, from text.
.pp
Figure 9.1 shows various levels of the speech synthesis process.
.FC "Figure 9.1"
Starting from the top with plain text, the first box splits it into
intonation units (tone groups), decides where the major emphases
(tonic stresses) should be placed,
and further subdivides the tone group into rhythmic units (feet).
For intonation analysis it is necessary to decide on an "interpretation"
of the text, which in turn, as was emphasized at the beginning of the
previous chapter, depends both on the semantics of what is being said and
on the attitude of the speaker to his material.
The resulting representation will be at the level of Halliday's notation
for utterances, with the words still in English rather than phonetics.
Table 9.1 illustrates the utterance representation at the various levels
of the Figure.
.RF
.nr x0 \w'pitch and duration    '+\w'at 8 kHz sampling rate a 4-second utterance'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \w'pitch and duration    'u +\w'pause  'u +\w'00 msec   'u
representation	example
\l'\n(x0u\(ul'
.sp
plain text	Automatic synthesis of speech,
	from a phonetic representation.
.sp
text adorned with	3\0^ auto/matic /synthesis of /*speech,
prosodic markers	1\0^ from a pho/*netic /represen/tation.
.sp
phonetic text with	3\0\fI^  aw t uh/m aa t i k  /s i n th uh s i s\fR
prosodic markers	\0\0\fIuh v  /*s p ee t sh\fR ,
	1\0\fI^  f r uh m  uh  f uh/*n e t i k\fR
	\0\0\fI/r e p r uh z e n/t e i sh uh n\fR .
.sp
phonemes with	pause	80 msec
pitch and duration	\fIaw\fR	70 msec	105 Hz
	\fIt\fR	40 msec	136 Hz
	\fIuh\fR	50 msec	148 Hz
	\fIm\fR	70 msec	175 Hz
	\fIaa\fR	90 msec	140 Hz
		...
		...
		...
.sp
parameters for	10 parameters, each updated at a frame
formant or linear	rate of 10 msec
predictive	(4 second utterance gives 400 frames,
synthesizer	or 4,000 data values)
.sp
acoustic wave	at 8 kHz sampling rate a 4-second utterance
	has 32,000 samples
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.1  Utterance representations at various levels in speech synthesis"
.pp
The next job is to translate the plain text into a broad phonetic
transcription.
This requires knowledge of letter-to-sound pronunciation
rules for the language under consideration.
But much more is needed.  The structure of each word must be examined for
prefixes and suffixes, because they \(em especially the latter \(em have a
strong influence on pronunciation.
This is called "morphological" analysis.
Actually it is also required for rhythmical purposes, because prefixes
are frequently unstressed (note that the word "prefix" is itself an
exception to this!).
Thus the appealing segmentation of the overall problem shown in Figure 9.1
is not very accurate, for the individual processes cannot be rigidly
separated as it implies.  In fact, we saw earlier how this intermixing of
levels occurs with prosodic and segmental features.
Nevertheless, it is helpful to structure discussion of the problem by
separating levels as a first approximation.
Further influences on pronunciation come from the semantics and syntax
of the utterance \(em and both also play a part in intonation and rhythm analysis.
The result of this second process is a phonetic representation, still
adorned with prosodic markers.
.pp
Now we move down from higher-level intonation and rhythm considerations
to the details of the pitch contour and segment durations.
This process was the subject of the previous chapter.
The problems are twofold:  to map an appropriate acoustic pitch contour
on to the utterance, using tonic stress point and foot boundaries as
anchor points; and to assign durations to segments using the
foot\(emsyllable\(emcluster\(emsegment hierarchy.
If it is accepted that the overall rhythm can be captured adequately by foot
markers, this process does not interact with earlier ones.
However, many researchers do not, believing instead that rhythm is
syntactically determined at a very detailed level.
This will, of course, introduce strong interaction between the duration
assignment process and the levels above.
(Klatt, 1975, puts it into his title \(em
"Vowel lengthening is syntactically determined in a connected discourse".
.[
Klatt 1975 Vowel lengthening is syntactically determined
.]
Contrast this with the paper cited earlier (Bolinger, 1972) entitled
"Accent is predictable \(em if you're a mind reader".
.[
Bolinger 1972 Accent is predictable \(em if you're a mind reader
.]
No-one would disagree that "accent" is an influential factor in vowel length!)
.pp
Notice incidentally that the representation of the result of the pitch
and duration assignment process in Table 9.1 is inadequate, for each segment
is shown as having just one pitch.
In practice the pitch varies considerably throughout every segment,
and can easily rise and fall on a single one.  For example,
.LB
"he's
.ul
very
good"
.LE
may have a rise-fall on the vowel of "very".
The linked event-list data-structure of ISP is much more suitable
than a textual string for utterance representation at this level.
.pp
The fourth and fifth processes of Figure 9.1 have little interaction with
the first two, which are the subject of this chapter.  Segmental
concatenation, which was treated in Chapter 7, is affected by prosodic
features like stress; but a notation which indicates stressed syllables
(like Halliday's) is sufficient to capture this influence.
Contextual modification of segments, by which I mean
the coarticulation effects which govern allophones of phonemes,
is included explicitly in the fourth process to emphasize that the upper levels
need only provide a broad phonemic transcription rather than a detailed
phonetic one.
Signal synthesis can be performed by either a formant synthesizer or a
linear predictive one (discussed in Chapters 5 and 6).
This will affect the details of the segmental concatenation process but should have no
impact at all on the upper levels.
.pp
Figure 9.1 performs a useful function by summarizing where we have
been in earlier chapters \(em the lower three boxes \(em and introducing the
remaining problems that must be faced by a full text-to-speech system.
It also serves to illustrate an important point:  that a speech output system
can demand that its utterances be entered in any of a wide range of
representations.
Thus one can enter at a low level with a digitized waveform or linear
predictive parameters; or higher up with a phonetic representation
that includes detailed pitch and duration specification at the phoneme level;
or with a phonetic text or plain text adorned with prosodic markers;
or at the very top with plain text as it would appear in a book.
A heavy price in naturalness and intelligibility is paid by moving up
.ul
any
of these levels \(em and this is just as true at the top of the Figure as
at the bottom.
.sh "9.1  Deriving prosodic features"
.pp
If you really need to start with plain text,
some very difficult problems present themselves.
The text should be understood, first of all, and then decisions need to be
made about how it is to be interpreted.
For an excellent speaker \(em like an actor \(em these decisions will be artistic,
at least in part.
They should certainly depend upon the opinion and attitude of the speaker,
and his perception of the structure and progress of the dialogue.
Very little is known about this upper level of speech synthesis from text.
In practice it is almost completely ignored \(em and the speech is at most
barely intelligible, and certainly uncomfortable to listen to.
Hence anybody contemplating building or using a speech output system which
starts from something close to plain text should consider carefully whether some extra
semantic information can be coded into the initial utterances to help with
prosodic interpretation.
Only rarely is this impossible \(em and reading machines for the blind are
a prime example of a situation where arbitrary, unannotated, texts
must be read.
.rh "Intonation analysis."
One distinction which a program can usefully try
to make is between basically rising
and basically falling pitch contours.  It is often said that pitch rises on
a question and falls on a statement, but if you listen to speech you will
find this to be a gross oversimplification.  It normally
falls on statements, certainly; but it falls as often as it rises on questions.
It is more accurate to say that pitch rises on "yes-no" questions
and falls on other utterances, although this rule is still only a rough guide.
A simple test which operates lexically on the input text is to determine
whether a sentence is a question by looking at the 
punctuation mark at its end, and then to examine the first word.
If it is a "wh"-word like "what", "which", "when", "why" (and also "how")
a falling contour is likely to fit.
If not, the question is probably a yes-no one, and the contour
should rise.
Such a crude rule will certainly not be very accurate
(it fails, for example, when the "wh"-word is embedded in a phrase as in
"at what time are you going?"), but at least it provides a starting-point.
.pp
An air of finality is given to an utterance when it bears a definite
fall in pitch, dropping to a rather low value at the end.
This should accompany the last intonation unit in an utterance
(unless it is a yes-no question).
However, a rise-fall contour such as Halliday's tone group 5 (Figure 8.5)
can easily be used in utterance-final position by one person
in a conversation \(em
although it would be unlikely to terminate the dialogue altogether.
A new topic is frequently introduced by a fall-rise contour \(em such as
Halliday's tone group 4 \(em and this often begins a paragraph.
.pp
Determining the type of pitch contour is only one part of
intonation assignment.  There are really three separate problems:
.LB
.NP
dividing the utterance into tone groups
.NP
choosing the tonic syllable, or major stress point, of each one
.NP
assigning a pitch contour to each tone group.
.LE
Let us continue to use the Halliday notation for intonation, which was introduced
in simplified form in the previous chapter.
Moreover, assume that the foot boundaries can be placed correctly \(em
this problem will be discussed in the next subsection.
Then a scheme which considers only the lexical form of the utterance
and does not attempt to "understand" it (whatever that means) is as follows:
.LB
.NP
place a tone group boundary at every punctuation mark
.NP
place the tonic at the first syllable of the last foot in a tone group
.NP
use contour 4 for the first tone group in a paragraph and contour 1
elsewhere, except for a yes-no question which receives contour 2.
.LE
.RF
.nr x0 \w'From Scarborough to Whitby\0\0\0\0'+\w'4  ^  from /Scarborough to /*Whitby is a'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \w'From Scarborough to Whitby\0\0\0\0\0\0'u
plain text	text adorned with prosodic markers
\l'\n(x0u\(ul'
.sp
From Scarborough to Whitby is a	4 ^ from /Scarborough to /*Whitby is a
very pleasant journey, with	1\- very /pleasant /*journey with
very beautiful countryside.	1\- very /beautiful /*countryside ...
In fact the Yorkshire coast is	1+ ^ in /fact the /Yorkshire /coast is
\0\0\0\0lovely,	\0\0\0\0/*lovely
all along, ex-	1+ all a/*long ex
cept the parts that are covered	_4 cept the /parts that are /covered
\0\0\0\0in caravans of course; and	\0\0\0\0in /*caravans of /course and
if you go in spring,	4 if you /go in /*spring
when the gorse is out,	4 ^ when the /*gorse is /out
or in summer,	4 ^ or in /*summer
when the heather's out,	4 ^ when the /*heather's /out
it's really one of the most	13 ^ it's /really /one of the /most
\0\0\0\0delightful areas in the	\0\0\0\0de/*lightful /*areas in the
whole country.	1 whole /*country
.sp
The moorland is	4 ^ the /*moorland is
rather high up, and	1 rather /high /*up and
fairly flat \(em a	1 fairly /*flat a
sort of plateau.	1 sort of /*plateau ...
At least,	1 ^ at /*least
it isn't really flat,	13 ^ it /*isn't /really /*flat
when you get up on the top;	\-3 ^ when you /get up on the /*top
it's rolling moorland	1 ^ it's /rolling /*moorland
cut across by steep valleys.  But	1 cut across by /steep /*valleys but
seen from the coast it's	4 seen from the /*coast it's ...
"up there on the moors", and you	1 up there on the /*moors and you
always think of it as a	_4 always /*think of it as a
kind of tableland.	1 kind of /*tableland
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.2  Example of intonation and rhythm analysis (from Halliday, 1970)"
.[
Halliday 1970 Course in spoken English: Intonation
.]
.pp
These extremely crude and simplistic rules are really the most that one can do
without subjecting the utterance to a complicated semantic analysis.
In statistical terms, they are actually remarkably effective.
Table 9.2 shows part of a spontaneous monologue which was transcribed by
Halliday and appears in his teaching text on intonation
(Halliday, 1970, p 133).
.[
Halliday 1970 Course in Spoken English: Intonation
.]
Among the prosodic markers are some that were not introduced in Chapter 8.
Firstly, each tone group has secondary contours which are identified
by "1+", "1\-" (for tone group 1), and so on.
Secondly, the mark "..." is used to indicate a pause which disrupts
the speech rhythm.
Notice that its positioning belies the advice of the old elocutionists:
.br
.ev2
.in 0
.LB
.fi
A Comma stops the Voice while we may privately tell
.NI
.ul
one,
a Semi-colon
.ul
two;
a Colon
.ul
three:\c
  and a Period
.ul
four.
.br
.nr x0 \w'\fIone,\fR a Semi-colon \fItwo;\fR a Colon \fIthree:\fR  and a Period \fIfour.'-\w'(Mason,\fR 1748)'
.NI
\h'\n(x0u'(Mason, 1748)
.nf
.LE
.br
.ev
Thirdly, compound tone groups such as "13" appear which contain
.ul
two
tonic syllables.
This differs from a simple concatenation of tone groups
(with contours 1 and 3 in this case) because the second is in some sense subsidiary to
the first.
Typically it forms an adjunct clause, while the first clause gives the
main information.  Halliday provides many examples, such as
.LB
.NI
/Jane goes /shopping in /*town /every /*Friday
.NI
/^ I /met /*Arthur on the /*train.
.LE
But he does not comment on the
.ul
acoustic
difference between a compound tone group and a concatenation of simple ones \(em
which is, after all, the information needed for synthesis.
A final, minor, difference between Halliday's scheme and that outlined earlier
is that he compels tone group boundaries to occur at the beginning
of a foot.
.RF
.nr x0 3.3i+1.3i+\w'complete'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 3.3i +1.3i
	excerpt in	complete
	Table 9.2	passage
\l'\n(x0u\(ul'
.sp
number of tone groups	25	74
.sp
number of boundaries correctly	19 (76%)	47 (64%)
placed
.sp
number of boundaries incorrectly	\00	\01 (\01%)
placed
.sp
number of tone groups having a	22 (88%)	60 (81%)
tonic syllable at the beginning
of the final foot
.sp
number of tone groups whose	17 (68%)	51 (69%)
contours are correctly assigned
\l'\n(x0u\(ul'
.sp
number of compound tone groups	\02 (\08%)	\06 (\08%)
.sp
number of secondary intonation	\07 (28%)	13 (17%)
contours
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.3  Success of simple intonation assignment rules"
.pp
Applying the simple rules given above to the text of Table 9.2 leads to
the results in the first column of Table 9.3.
Three-quarters of the foot boundaries are flagged by
punctuation marks, with no extraneous ones being included.
88% of tone groups have a tonic syllable at the start of the final foot.
However, the compound tone groups each have two tonic syllables,
and of course only the second one is predicted by the final-foot rule.
Assigning intonation contours on the extremely simple basis of using
contour 4 for the first tone group in a paragraph, and contour 1 thereafter,
also seems to work quite well.  Secondary contours such as "1+" and "1\-"
have been mapped into the appropriate primary contour (1, in this case)
for the present purpose, and compound tone groups have been assigned the first
contour of the pair.
The result is that 68% of contours are given correctly.
.pp
In order to give some idea of the reliability of these figures, the results
for the whole passage transcribed by Halliday \(em of which Table 9.2 is an
excerpt \(em are shown in the second column of Table 9.3.  Although it
looks as though the rules may have been slightly lucky with the excerpt,
the general trends are the same, with 65% to 80% of features being assigned
correctly.
It could be argued, though, that the complete text is punctuated fairly liberally by
present-day standards, so that the tone-group boundary rule is unusually
successful.
.pp
These results are really astonishingly good, considering the crudeness of
the rules.  However, they should be interpreted with caution.
What is missed by the rules, although appearing to comprise only
20% to 35% of the features, is certain to include the important,
information-bearing, and variety-producing features that give the utterance
its liveliness and interest.
It would be rash to assume that all tone-group boundaries,
all tonic positions, and all intonation contours, are equally
important for intelligibility and naturalness.
It is much more likely that the rules predict a
default pattern, while most information is borne by deviations from
them.
To give an engineering analogy, it may be as though the carrier waveform
of a modulated transmission is being simulated, instead of the
information-bearing signal!
Certainly the utterance will, if synthesized with intonation given by these
rules, sound extremely dull and repetitive, mainly because of the
overwhelming predominance of tone group 1 and the universal placement
of tonic stress on the final foot.
.pp
There are certainly many different ways to orate any particular text,
and that given by Halliday and reproduced in Table 9.2 is only one possible
version.
However, it is fair to say that the default intonation discussed above
could only occur naturally under very unusual circumstances \(em such as
a petulant child, unwilling and sulky, having been forced to read aloud.
This is hardly how we want our computers to speak!
.rh "Rhythm analysis."
Consider now how to decide where foot boundaries should be placed
in English text.
Clearly semantic considerations sometimes play a part in this \(em one could
say
.LB
/^ is /this /train /going /*to /London
.LE
instead of the more usual
.LB
/^ is /this /train /going to /*London
.LE
in circumstances where the train might be going
.ul
to
or
.ul
from
London.
Such effects are ignored here, although it is worth noting in passing that the
rogue words will often be marked by underscoring or italicizing
(as in the previous sentence).
If the text is liberally underlined, semantic analysis may
be unnecessary for the purposes of rhythm.
.pp
A rough and ready rule for placing foot boundaries is to insert one before
each word which is not in a small closed set of "function words".
The set includes, for example, "a", "and", "but", "for", "is", "the", "to".
If a verb or adjective begins with a prefix, the boundary should be moved
between it and the root \(em but not for a noun.
This will give the distinction between
.ul
con\c
vert (noun) and con\c
.ul
vert
(verb),
.ul
ex\c
tract and ex\c
.ul
tract,
and for many North American speakers,
will help to distinguish
.ul
in\c
quiry from in\c
.ul
quire.
However, detecting prefixes by a simple splitting algorithm is dangerous.
For example, "predate" is a verb with stress on what appears to be a prefix,
contrary to the rule; while the "pre" in "predator" is not a prefix \(em at
least, it is not pronounced as the prefix "pre" normally is.
Moreover, polysyllabic words like "/diplomat", "dip/lomacy", "diplo/matic";
or "/telegraph", "te/legraphy", "tele/graphic" cannot be handled on such a simple
basis.
.pp
In 1968, a remarkable work on English sound structure was published
(Chomsky and Halle, 1968) which proposes a system of rules to transform
English text into a phonetic representation in terms of distinctive features,
with the aid of a lexicon.
.[
Chomsky Halle 1968
.]
A great deal of attention is paid to stress, and rules are given which
perform well in many tricky cases.
.pp
It uses the American system of levels of stress, marking
so-called primary stress with a superscript 1, secondary stress with a
superscript 2, and so on.
The superscripts are written on the vowel of the stressed
syllable:  completely unstressed syllables receive no annotation.
For example, the sentence "take John's blackboard eraser" is written
.LB
ta\u2\dke Jo\u3\dhn's bla\u1\dckboa\u5\drd era\u4\dser.
.LE
In foot notation this utterance
is
.LB
/take /John's /*blackboard e/raser.
.LE
It undoubtedly contains less information than the stress-level version.
For example, the second syllable of "blackboard" and the first one of "erase"
are both unstressed, although the rhythm rules given in Chapter 8
will cause them
to be treated differently because they occupy different places in the
syllable pattern of the foot.
"Take", "John's", and the second syllable of "erase" are all non-tonic
foot-initial syllables and hence are not distinguished in the notation;
although the pitch contours schematized in Figure 8.9 will give them different
intonations.
.pp
An indefinite number of levels of stress can be used.  For example, according
to the rules given by Chomsky and Halle, the word "sad" in
.LB
my friend can't help being shocked at anyone who would fail to consider
his sad plight
.LE
has level-8 stress, the final two words being annotated
as "sa\u8\dd pli\u1\dght".
However, only the first few levels are used regularly, and
it is doubtful whether acoustic distinctions are made in speech
between the weaker ones.
.pp
Chomsky and Halle are concerned to distinguish between such utterances as
.LB
.NI
bla\u2\dck boa\u1\drd-era\u3\dser    ("board eraser that is black")
.NI
bla\u1\dckboa\u3\drd era\u2\dser     ("eraser for a blackboard")
.NI
bla\u3\dck boa\u1\drd era\u2\dser    ("eraser of a black board"),
.LE
and their stress assignment rules do indeed produce each version when
appropriate.
In foot notation the distinctions can still be made:
.LB
.NI
/black /*board-eraser/
.NI
/*blackboard e/raser/
.NI
/black /*board e/raser/
.LE
.pp
The rules operate on a grammatical derivation tree
of the text.
For instance, input for the three examples would be written
.LB
.NI
[\dNP\u[\dA\u black ]\dA\u [\dN\u[\dN\u board]\dN\u
[\dN\u eraser ]\dN\u]\dN\u]\dNP\u
.NI
[\dN\u[\dN\u[\dA\u black ]\dA\u [\dN\u board ]\dN\u]\dN\u [\dN\u eraser ]\dN\u]\dN\u
.NI
[\dN\u[\dNP\u[\dA\u black ]\dA\u [\dN\u board ]\dN\u]\dNP\u [\dN\u eraser ]\dN\u]\dN\u,
.LE
representing the trees shown in Figure 9.2.
.FC "Figure 9.2"
Here, N stands for a noun, NP for a noun phrase, and A for an adjective.
These categories appear explicitly as nodes in the tree.
In the linearized textual representation they are used to label
brackets which represent the tree structure.
An additional piece of information which is needed is the lexical entry for
"eraser", which would show that it has only one accented
(that is, potentially stressed) syllable, namely, the second.
.pp
Consider now how to account for stress in prefixed and
suffixed words, and those polysyllabic ones with more than one potential
stress point.
For these, the morphological structure must appear in the input.
.pp
Now
.ul
morphemes
are well-defined minimal units of grammatical analysis from which a word
may be composed.
For example,  [went]\ =\ [go]\ +\ [ed]  is
a morphemic decomposition, where "[ed]" denotes the
past-tense morpheme.
This representation is not particularly suitable for speech synthesis
for the obvious reason that the result bears no phonetic resemblance to
the input.
What is needed is a decomposition into
.ul
morphs,
which occur only when the lexical or phonetic representation of a word may
easily be segmented into parts.
Thus  [wanting]\ =\ [want]\ +\ [ing]  and  [bigger]\ =\ [big]\ +\ [er]  are
simultaneously morphic and morphemic decompositions.
Notice that in the second example, a rule about final consonant doubling has
been applied at the lexical level (although it is not needed in
a phonetic representation):  this comes into the sphere
of "easy" segmentation.
Contrast this with  [went]\ =\ [go]\ +\ [ed]  which
is certainly not an easy segmentation and hence a
morphemic but not a morphic decomposition.
But between these extremes there are some difficult
cases:  [specific]\ =\ [specify]\ +\ [ic]  is probably morphic
as well as morphemic, but it is not clear
that  [galactic]\ =\ [galaxy]\ +\ [ic]  is.
.pp
Assuming that the input is given as a derivation tree with morphological
structure made explicit, Chomsky and Halle present rules which assign stress
correctly in nearly all cases.  For example, their rules give
.LB
.NI
[\dA\u[\dN\u incident ]\dN\u + al]\dA\u  \(em>  i\u2\dncide\u1\dntal;
.LE
and if the stem is marked by  [\dS\u\ ...\ ]\dS\u  in prefixed words,
they can deduce
.LB
.NI
[\dN\u tele [\dS\u graph ]\dS\u]\dN\u		\(em>  te\u1\dlegra\u3\dph
.NI
[\dN\u[\dN\u tele [\dS\u graph ]\dS\u]\dN\u y ]\dN\u	\(em>  tele\u1\dgraphy
.NI
[\dA\u[\dN\u tele [\dS\u graph ]\dS\u]\dN\u ic ]\dA\u	\(em>  te\u3\dlegra\u1\dphi\u2\dc.
.LE
.pp
There are two rules which account for the word-level stress
on such examples:  the "main stress"
rule and the "alternating stress" rule.
In essence, the main stress rule emphasizes the last strong syllable
of a stem.
A syllable is "strong" either if it contains one of a class of so-called
"long" vowels, or if there is a cluster of two or more consonants
following the vowel; otherwise it is "weak".
(If you are exceptionally observant you will notice that this strong\(emweak
distinction has been used before, when discussing the rhythm of feet in
syllables.)  Thus the verb "torment" receives stress on the second syllable,
for it is a strong one.
A noun like "torment" is treated as being derived from the corresponding verb,
and the rule assigns stress to the verb first and then modifies it for the noun.
The second, "alternating stress", rule gives some stress to alternate
syllables of polysyllabic words like "form\c
.ul
al\c
de\c
.ul
hyde\c
".
.pp
It is quite easy to incorporate the word-level rules into a computer
program which uses feet rather than stress levels as the basis for prosodic
description.
A foot boundary is simply placed before the primary-stressed (level-1) syllable,
except for function words, which do not begin a foot.
The other stress levels should be ignored,
except that for slow, deliberate speech, secondary (level-2) stress is
mapped into a foot boundary too, if it precedes the primary stress.
There is also a rule which reduces vowels in unstressed
syllables.
.pp
The stress assignment rules can work on phonemic script, as well as English.
For example, starting from the phonetic
form  [\d\V\u\ \c
.ul
aa\ s\ t\ o\ n\ i\ sh\ \c
]\dV\u,
the stress assignment rules
produce  \c
.ul
aa\ s\ t\ o\u1\d\ n\ i\ sh\ ;\c
  the
vowel reduction rule
generates  \c
.ul
uh\ s\ t\ o\u1\d\ n\ i\ sh\ ;\c
  and
the foot conversion process
gives  \c
.ul
uh\ s/t\ o\ n\ i\ sh.
This appears to provide a fairly reliable algorithm for foot boundary
placement.
.rh "Speech synthesis from concept."
I argued earlier that in order to derive prosodic features
of an utterance from text it
is necessary to understand its role in the dialogue, its semantics,
its syntax, and \(em as we have just seen \(em its morphological structure.
This is a very tall order, and the problem of natural language comprehension
by machine is a vast research area in its own right.
However, in many applications requiring speech output,
utterances are generated by the computer from internally stored data
rather than being read aloud from pre-prepared text.
Then the problem of comprehending text may be evaded, for
presumably the language-generation module can provide a semantic,
syntactic, and even morphological decomposition of the utterance,
as well as some indication of its role in the dialogue
(that is, why it is necessary to say it).
.pp
This forms the basis of the appealing notion of "speech synthesis from concept".
It has some advantages over speech generation from text, and in principle
should provide more natural-sounding speech.
Every word produced by the system can have a complete lexical entry which
shows its morphological decomposition and potential stress points.
The full syntactic history of each utterance is known.
The Chomsky-Halle rules described above can therefore be used to place
foot boundaries accurately, without the need for a complex parsing program
and without the risk of having to make guesses about unknown words.
.pp
However, it is not clear how to take advantage of any semantic information
which is available.  Ideally, it should be possible to place tone group
boundaries and tonic stress points, and assign intonation contours, in
a natural-sounding way.
But look again at the example text of Table 9.2 and imagine that you have
at your disposal as much semantic information as is needed.
It is
.ul
still
far from obvious how the intonation features could be assigned!
It is, in the ultimate analysis, interpretive and stylistic
.ul
choices
that add variety and interest to speech.
.pp
Take the problem of determining pitch contours, for instance.
Some of them may be explicable.
Contour 4 on
.LB
.NI
except the parts that are covered in caravans of course
.LE
is due to its being a contrastive clause, for it presents
essentially new information.
Similarly, the succession
.LB
.NI
if you go in spring
.NI
when the gorse is out
.NI
or in summer
.NI
when the heather's out
.LE
could be considered contrastive, being in the subjunctive voice, and
this could explain why contour 4's were used.
But this is all conjecture, and it is difficult to apply throughout the
passage.
Halliday (1970) explains the contexts in which each tone group is typically
used, but in an extremely high-level manner which would be impossible
to embody directly in a computer program.
.[
Halliday 1970 Course in spoken English: Intonation
.]
At the other end of the spectrum, computer systems for written
discourse production do not seem to provide the subtle information needed
to make intonation decisions (see, for example, Davey, 1978, for a fairly
complete description of such a system).
.[
Davey 1978
.]
.pp
One project which uses such a method for generating speech has been
described (Young and Fallside, 1980).
.[
Young Fallside 1980
.]
Although some attention is paid to rhythm, the intonation contours
which are generated are disappointingly repetitive and lacking in
richness.
In fact, very little semantic information is used to assign contours; really
just that inferred by the crude punctuation-driven method described
earlier.
.pp
The higher-level semantic problems associated with speech output were
studied some years go under the
title "synthetic elocution" (Vanderslice, 1968).
.[
Vanderslice 1968
.]
A set of rules was generated and tested by hand on a sample passage,
the first part of which is shown in Table 9.4.
However, no attempt was made to formalize the rules in a computer program,
and indeed it was recognized that a number of important questions,
such as the form of the semantic information assumed at the input,
had been left unanswered.
.RF
.nr x0 \w'\0\0  psychologist   '+\w'emphasis assigned because of antithesis with  '
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \w'\0\0  psychologist   'u
\l'\n(x0u\(ul'
.sp
Human experience and human behaviour are accessible to
observation by everyone.  The psychologist tries to bring
them under systematic study.  What he perceives, however,
anyone can perceive; for his task he requires no microscope
or electronic gear.
.sp2
\0\0  word	comments
\l'\n(x0u\(ul'
.sp
\01  Human	special treatment because paragraph-initial
\04  human	accent deleted because it echoes word 1
13  psychologist	emphasis assigned because of antithesis with
	"everyone"
17  them	anaphoric to "Human experience and human
	behaviour"
19  systematic	emphasis assigned because of contrast with
	"observation"
20  study	emphasis? \(em text is ambiguous whether
	"observation" is a kind of study that is
	nonsystematic, or an activity contrasting
	with the entire concept of "systematic study"
21  What	increase in pitch for "What he perceives"
	because it is not the subject
22  he	accented although anaphoric to word 13
	because of antithesis with word 25
24  however	decrease in pitch because it is parenthetical
25  anyone	emphasized by antithesis with word 22
27  perceive	unaccented because it echoes word 23,
	"perceives"
\0\0  ;	semicolon assigns falling intonation
30  task	unaccented because it is anaphoric with
	"tries to bring them under systematic study"
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.4  Sample passage and comments pertinent to synthetic elocution"
.pp
The comments in the table, which are selected and slightly edited versions
of those appearing in the original work (Vanderslice, 1968), are intended
as examples of the nature and subtlety of the prosodic influences which
were examined.
.[
Vanderslice 1968
.]
The concepts of "accent" and "emphasis" are used; these relate to stress
but are not easy to define precisely in our tone-group terminology.
Fortunately we do not need an exact characterization of them for the present
purpose.
Roughly speaking, "accent" encompasses both foot-initial stress and
tonic stress, whereas "emphasis" is something more than this,
typically being realized by the fall-rise or rise-fall contours of
Halliday's tone groups 4 and 5 (Figure 8.5).
.pp
Particular attention is paid to anaphora and antithesis (amongst other things).
The first term means the repetition of a word or phrase in the text,
and is often applied to pronoun references.
In the example, the word "human" is repeated in the first few words;
"them" in the second sentence refers to "human experience and human
behaviour"; "he" in the third sentence is the previously-mentioned
psychologist; and "task" is anaphoric with "tries to bring them under
systematic study".
Other things being equal, anaphoric references are unaccented.
In our terms this means that they certainly do not receive tonic stress
and may not even receive foot stress.
.pp
Antithesis is defined as the contrast of ideas expressed by parallelism of
strongly contrasting words or phrases; and the second element taking part
in it is generally emphasized.
"Psychologist" in the passage is an antithesis of "everyone";
"systematic" and possibly "study" of "observation".
Thus
.LB
.NI
/^ the psy/*chologist
.LE
would probably receive intonation contour 4, since it is also introducing
a new actor; while
.LB
.NI
/tries to /bring them /under /system/*matic /study
.LE
could receive contour 5.
"He" and "everyone" are antithetical; not only does the latter receive
emphasis but the former has its accent restored \(em for otherwise
it would have been removed because of anaphora with "psychologist".
Hence it will certainly begin a foot, possibly a tonic foot.
.pp
A factor that does not affect the sample passage is the accentuation
of unusual syllables of similar words to bring out a contrast.
For example,
.LB
.NI
he went
.ul
out\c
side, not
.ul
in\c
side.
.LE
Although this may seem to be just another facet of antithesis,
Vanderslice points out that it is phonetic rather than structural
similarity that is contrasted:
.LB
.NI
I said
.ul
de\c
plane, not
.ul
com\c
plain.
.LE
This introduces an interesting interplay between the phonetic and
prosodic levels.
.pp
Anaphora and antithesis provide an ideal domain for speech synthesis from
concept.
Determining them from plain text is a very difficult problem,
requiring a great deal of real-world knowledge.
The first has received some attention in the field of natural language
understanding.
Finding pronoun referents is an important problem for language translation,
for their gender is frequently distinguished in, say, French where it is not
in English.
Examples such as
.LB
.NI
I bought the wine, sat on a table, and drank it
.NI
I bought the wine, sat on a table, and broke it
.LE
have been closely studied (Wilks, 1975); for if they were to be translated
into French the pronoun "it" would be rendered differently in each case
(\c
.ul
le
vin,
.ul
la
table).
.[
Wilks 1975 An intelligent analyzer and understander of English
.]
.pp
In spoken language, emphasis is used to indicate the referent of a pronoun
when it would not otherwise be obvious.
Vanderslice gives the example
.LB
.NI
Bill saw John across the room and he ran over to him
.NI
Bill saw John across the room and
.ul
he
ran over to
.ul
him,
.LE
where the emphasis reverses the pronoun referents
(so that John did the running).
He suggests accenting a personal pronoun whenever the true
antecedent is not the same as the "unmarked" or default one.
Unfortunately he does not elaborate on what is meant by "unmarked".
Does it mean that the referent cannot be predicted from
knowledge of the words alone \(em as in the second example above?
If so, this is a clear candidate for speech synthesis from concept,
for the distinction cannot be made from text! 
.sh "9.2  Pronunciation"
.pp
English pronunciation is notoriously irregular.
A poem by Charivarius, the pseudonym of a Dutch high school teacher
and linguist G.N.Trenite (1870\-1946), surveys the problems in an amusing
way and is worth quoting in full.
.br
.ev2
.in 0
.LB "nnnnnnnnnnnnnnnn"
.ul
              The Chaos
.sp2
.ne4
Dearest creature in Creation
Studying English pronunciation,
.in +5n
I will teach you in my verse
Sounds like corpse, corps, horse and worse.
.ne4
.in -5n
It will keep you, Susy, busy,
Make your head with heat grow dizzy;
.in +5n
Tear in eye your dress you'll tear.
So shall I!  Oh, hear my prayer:
.ne4
.in -5n
Pray, console your loving poet,
Make my coat look new, dear, sew it.
.in +5n
Just compare heart, beard and heard,
Dies and diet, lord and word.
.ne4
.in -5n
Sword and sward, retain and Britain,
(Mind the latter, how it's written).
.in +5n
Made has not the sound of bade,
Say \(em said, pay \(em paid, laid, but plaid.
.ne4
.in -5n
Now I surely will not plague you
With such words as vague and ague,
.in +5n
But be careful how you speak:
Say break, steak, but bleak and streak,
.ne4
.in -5n
Previous, precious; fuchsia, via;
Pipe, shipe, recipe and choir;
.in +5n
Cloven, oven; how and low;
Script, receipt; shoe, poem, toe.
.ne4
.in -5n
Hear me say, devoid of trickery;
Daughter, laughter and Terpsichore;
.in +5n
Typhoid, measles, topsails, aisles;
Exiles, similes, reviles;
.ne4
.in -5n
Wholly, holly; signal, signing;
Thames, examining, combining;
.in +5n
Scholar, vicar and cigar,
Solar, mica, war and far.
.ne4
.in -5n
Desire \(em desirable, admirable \(em admire;
Lumber, plumber; bier but brier;
.in +5n
Chatham, brougham; renown but known,
Knowledge; done, but gone and tone,
.ne4
.in -5n
One, anemone; Balmoral,
Kitchen, lichen; laundry, laurel;
.in +5n
Gertrude, German; wind and mind;
Scene, Melpemone, mankind;
.ne4
.in -5n
Tortoise, turquoise, chamois-leather,
Reading, Reading; heathen, heather.
.in +5n
This phonetic labyrinth
Gives:  moss, gross; brook, brooch; ninth, plinth.
.ne4
.in -5n
Billet does not end like ballet;
Bouquet, wallet, mallet, chalet;
.in +5n
Blood and flood are not like food,
Nor is mould like should and would.
.ne4
.in -5n
Banquet is not nearly parquet,
Which is said to rime with darky
.in +5n
Viscous, viscount; load and broad;
Toward, to forward, to reward.
.ne4
.in -5n
And your pronunciation's O.K.
When you say correctly:  croquet;
.in +5n
Rounded, wounded; grieve and sieve;
Friend and fiend, alive and live
.ne4
.in -5n
Liberty, library; heave and heaven;
Rachel, ache, moustache; eleven.
We say hallowed, but allowed;
People, leopard; towed, but vowed.
.in +5n
Mark the difference moreover
Between mover, plover, Dover;
.ne4
.in -5n
Leeches, breeches; wise, precise;
Chalice, but police and lice.
.in +5n
Camel, constable, unstable,
Principle, discipline, label;
.ne4
.in -5n
Petal, penal and canal;
Wait, surmise, plait, promise; pal.
.in +5n
Suit, suite, ruin; circuit, conduit,
Rime with:  "shirk it" and "beyond it";
.ne4
.in -5n
But it is not hard to tell
Why it's pall, mall, but Pall Mall.
.in +5n
Muscle, muscular; goal and iron;
Timber, climber; bullion, lion;
.ne4
.in -5n
Worm and storm; chaise, chaos, chair;
Senator, spectator, mayor.
.in +5n
Ivy, privy; famous, clamour
and enamour rime with "hammer".
.ne4
.in -5n
Pussy, hussy and possess,
Desert, but dessert, address.
.in +5n
Golf, wolf; countenants; lieutenants
Hoist, in lieu of flags, left pennants.
.ne4
.in -5n
River, rival; tomb, bomb, comb;
Doll and roll, and some and home.
.in +5n
Stranger does not rime with anger,
Neither does devour with clangour.
.ne4
.in -5n
Soul, but foul; and gaunt, but aunt;
Font, front, won't; want, grand and grant;
.in +5n
Shoes, goes, does.  Now first say:  finger,
And then; singer, ginger, linger.
.ne4
.in -5n
Real, zeal; mauve, gauze and gauge;
Marriage, foliage, mirage, age.
.in +5n
Query does not rime with very,
Nor does fury sound like bury.
.ne4
.in -5n
Dost, lost, post; and doth, cloth, loth;
Job, Job; blossom, bosom, oath.
.in +5n
Though the difference seems little
We say actual, but victual;
.ne4
.in -5n
Seat, sweat; chaste, caste; Leigh, eight, height;
Put, nut; granite but unite.
.in +5n
Reefer does not rime with deafer,
Feoffer does, and zephyr, heifer.
.ne4
.in -5n
Dull, bull; Geoffrey, George; ate, late;
Hint, pint; senate, but sedate.
.in +5n
Scenic, Arabic, Pacific;
Science, conscience, scientific.
.ne4
.in -5n
Tour, but our, and succour, four;
Gas, alas and Arkansas!
.in +5n
Sea, idea, guinea, area,
Psalm, Maria, but malaria.
.ne4
.in -5n
Youth, south, southern; cleanse and clean;
Doctrine, turpentine, marine.
.in +5n
Compare alien with Italian.
Dandelion with battalion,
.ne4
.in -5n
Sally with ally, Yea, Ye,
Eye, I, ay, aye, whey, key, quay.
Say aver, but ever, fever,
Neither, leisure, skein, receiver.
.in +5n
Never guess \(em it is not safe;
We say calves, valves, half, but Ralf.
.ne4
.in -5n
Heron, granary, canary;
Crevice and device and eyrie;
.in +5n
Face, preface, but efface,
Phlegm, phlegmatic; ass, glass, bass;
.ne4
.in -5n
Large, but target, gin, give, verging;
Ought, out, joust and scour, but scourging;
.in +5n
Ear, but earn; and wear and tear
Do not rime with "here", but "ere".
.ne4
.in -5n
Seven is right, but so is even;
Hyphen, roughen, nephew, Stephen;
.in +5n
Monkey, donkey; clerk and jerk;
Asp, grasp, wasp; and cork and work.
.ne4
.in -5n
Pronunciation \(em think of psyche -
Is a paling, stout and spikey;
.in +5n
Won't it make you lose your wits,
Writing groats and saying "groats"?
.ne4
.in -5n
It's a dark abyss or tunnel,
Strewn with stones, like rowlock, gunwale,
.in +5n
Islington and Isle of Wight,
Housewife, verdict and indict.
.ne4
.in -5n
Don't you think so, reader, rather
Saying lather, bather, father?
.in +5n
Finally:  which rimes with "enough",
Though, through, plough, cough, hough or tough?
.ne4
.in -5n
Hiccough has the sound of "cup",
My advice is ... give it up!
.LE "nnnnnnnnnnnnnnnn"
.br
.ev
.rh "Letter-to-sound rules."
Despite such irregularities, it is surprising how much can be done
with simple letter-to-sound rules.
These specify phonetic equivalents of word fragments and single letters.
The longest stored fragment which matches the current word is translated,
and then the same strategy is adopted on the remainder of the word.
Table 9.5 shows some English fragments and their pronunciations.
.RF
.nr x0 1.5i+\w'pronunciation  '
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 1.5i
fragment	pronunciation
\l'\n(x0u\(ul'
.sp
-p-	\fIp\fR
-ph-	\fIf\fR
-phe|	\fIf ee\fR
-phe|s	\fIf ee z\fR
-phot-	\fIf uh u t\fR
-place|-	\fIp l e i s\fR
-plac|i-	\fIp l e i s i\fR
-ple|ment-	\fIp l i m e n t\fR
-plie|-	\fIp l aa i y\fR
-post	\fIp uh u s t\fR
-pp-	\fIp\fR
-pp|ly-	\fIp l ee\fR
-preciou-	\fIp r e s uh\fR
-proce|d-	\fIp r uh u s ee d\fR
-prope|r-	\fIp r o p uh r\fR
-prov-	\fIp r uu v\fR
-purpose-	\fIp er p uh s\fR
-push-	\fIp u sh\fR
-put	\fIp u t\fR
-puts	\fIp u t s\fR
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.5  Word fragments and their pronunciations"
.pp
It is sometimes important to specify that a rule applies only when
the fragment is matched at the beginning or end of a word.
In the Table "-" means that other fragments can precede or follow this
one.
The "|" sign is used to separate suffixes from a word stem,
as will be explained
shortly.
.pp
An advantage of the longest-string search strategy is that it is easy
to account for exceptions simply by incorporating them into the fragment
table.
If they occur in the input, the complete word will automatically be
matched first, before any fragment of it is translated.
The exception list of complete words can be surprisingly small for
quite respectable performance.
Table 9.6 shows the entire dictionary for an excellent early pronunciation
system written at Bell Laboratories (McIlroy, 1974).
.[
McIlroy 1974
.]
Some of the words are notorious exceptions in English, while others are
included simply because the rules would run amok on them.
Notice that the exceptions are all quite short, with only a few of them
having more than two syllables.
.RF
.nr x1 0.9i+0.9i+0.9i+0.9i+0.9i+0.9i
.nr x1 (\n(.l-\n(x1)/2
.in \n(x1u
.ta 0.9i +0.9i +0.9i +0.9i +0.9i
a	doesn't	guest	meant	reader	those
alkali	doing	has	moreover	refer	to
always	done	have	mr	says	today
any	dr	having	mrs	seven	tomorrow
april	early	heard	nature	shall	tuesday
are	earn	his	none	someone	two
as	eleven	imply	nothing	something	upon
because	enable	into	nowhere	than	very
been	engine	is	nuisance	that	water
being	etc	island	of	the	wednesday
below	evening	john	on	their	were
body	every	july	once	them	who
both	everyone	live	one	there	whom
busy	february	lived	only	thereby	whose
copy	finally	living	over	these	woman
do	friday	many	people	they	women
does	gas	maybe	read	this	yes
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.6  Exception table for a simple pronunciation program"
.pp
Special action has to be taken with final "e"'s.
These lengthen and alter the quality
of the preceding vowel, so that "bit" becomes "bite" and so on.
Unfortunately, if the word has a suffix the "e" must be detected even though
it is no longer final, as in "lonely", and it is even dropped sometimes
("biting") \(em otherwise these would be pronounced "lonelly", "bitting".
To make matters worse the suffix may be another word:  we do not
want "kiteflying" to have an extra syllable which rhymes with "deaf"!
Although simple procedures can be developed to take care of common
word endings like "-ly", "-ness", "-d", it is difficult to decompose
compound words like "wisecrack" and "bumblebee" reliably \(em but this must
be done if they are not to be articulated with three syllables instead of two.
Of course, there are exceptions to the final "e" rule.
Many common words ("some", "done", "[live]\dV\u") disobey the rule by not
lengthening the main vowel, while in other, rarer, ones ("anemone",
"catastrophe", "epitome") the final "e" is actually pronounced.
There are also some complete anomalies ("fete").
.pp
McIlroy's (1974) system is a superb example of a robust program which takes
a pragmatic approach to these problems, accepting that they will never be
fully solved, and which is careful to degrade
gracefully when stumped.
.[
McIlroy 1974
.]
The pronunciation of each word is found by a succession of increasingly
desperate trials:
.LB
.NP
replace upper- by lower-case letters, strip punctuation, and try again;
.NP
remove final "-s", replace final "ie" by "y", and try again;
.NP
reject a word without a vowel;
.NP
repeatedly mark any suffixes with "|";
.NP
mark with "|" probable morph divisions in compound words;
.NP
mark potential long vowels indicated by "e|",
and long vowels elsewhere in the word;
.NP
mark voiced medial "s" as in "busy", "usual";
replace final "-s" if stripped;
.NP
scanning the word from left to right, apply letter-to-sound rules
to word fragments;
.NP
when all else fails spell the word, punctuation and all
(burp on letters for which no spelling rule exists).
.LE
.RF
.nr x0 \w'| ment\0\0\0'+\w'replace final ie by y\0\0\0'+\w'except when no vowel would remain in  '
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \w'| ment\0\0\0'u +\w'replace final ie by y\0\0\0'u
suffix	action	notes and exceptions
\l'\n(x0u\(ul'
.sp
s	strip off final s	except in context us
\&'	strip off final '
ie	replace final ie by y
e	replace final e by E	when it is the only vowel in a word
	(long "e")

| able	place suffix mark as	except when no vowel would remain in
| ably	shown	the rest of the word
e | d
e | n
e | r
e | ry
e | st
e | y
| ful
| ing
| less
| ly
| ment
| ness
| or

| ic	place suffix mark as
| ical	shown and terminate
e |	final e processing
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 9.7  Rules for detecting suffixes for final 'e' processing"
.pp
Table 9.7 shows the suffixes which the program recognizes, with some comments
on their processing.
Multiple suffixes are detected and marked in words like
"force|ful|ly" and "spite|ful|ness".
This allows silent "e"'s to be spotted even when they occur far back in a
word.
Notice that the suffix marks are available to the word-fragment
rules of Table 9.5, and are frequently used by them.
.pp
The program has some
.ul
ad hoc
rules for dealing with compound words like "race|track", "house|boat";
these are applied as well as normal suffix splitting so that multiple
decompositions like "pace|make|r" can be accomplished.
The rules look for short letter sequences which do not
usually appear in monomorphemic words.
It is impossible, however, to detect every morph boundary
by such rules, and the program inevitably makes mistakes.
Examples of boundaries which go undetected are
"edge|ways", "fence|post", "horse|back", "large|mouth", "where|in";
while boundaries are incorrectly inserted into "comple|mentary",
"male|volent", "prole|tariat", "Pame|la".
.pp
We now seem to have presented two opposing points of view on the pronunciation
problem.
Charivarius, the Dutch poet, shows that an enormous number of
exceptional words exist; whereas McIlroy's program makes do with a tiny
exception dictionary.
These views can be reconciled by noting that most of Charivarius' words
are relatively uncommon.
McIlroy tested his program against the 2000 most frequent words in a large
corpus (Kucera and Francis, 1967),
and found that 97% were pronounced correctly if word frequencies were
taken into account.
.[
Kucera Francis 1967
.]
(The notion of "correctness" is of course a rather subjective one.)  However,
he estimated that on the remaining words the success rate was only 88%.
.pp
The system is particularly impressive in that it is prepared to say
anything:  if used, for example, on source programs in a high-level
computer language it will say the keywords and pronouncable
identifiers, spell the other identifiers, and even give the names of special
symbols (like +, <, =) correctly!
.rh "Morphological analysis."
The use of letter-to-sound rules provides a cheap and fast technique
for pronunciation \(em the fragment table and exception dictionary for the
program described above occupy only 11 Kbyte of storage, and can easily
be kept in solid-state read-only memory.
It produces reasonable results if careful attention is paid to rules
for suffix-splitting.
However, it is inherently limited because it is not possible in general
to detect compound words by simple rules which operate on the lexical
structure of the word.
.pp
Compounds can only be found reliably by using a morph dictionary.
This gives the added advantage that syntactic information
can be stored with the morphs to assist with rhythm assignment according
to the Chomsky-Halle theory.
However, it was noted earlier that morphs, unlike the grammatically-determined
morphemes, are not very well defined from a linguistic point of view.
Some morphemic decompositions are obviously not morphic because the
constituents do not in any way resemble the final word;
while others, where the word is simply a concatenation
of its components, are clearly morphic.
Between these extremes lies a hazy region where what one considers
to be a morph depends upon how complex one is prepared to make the
concatenation rules.
The following description draws on techniques used in a project at MIT
in which a morph-based pronunciation system has been implemented
(Lee, 1969; Allen, 1976).
.[
Lee 1969
.]
.[
Allen 1976 Synthesis of speech from unrestricted text
.]
.pp
Estimates of the number of morphs in English vary from 10,000 to 30,000.
Although these seem to be very large numbers, they are considerably less
than the number of words in the language.
For example, Webster's
.ul
New Collegiate Dictionary
(7'th edition) contains about 100,000 entries.
If all forms of the words were included, this number would probably
double.
.pp
There are several classes of morphs, with restrictions on the combinations
that occur.
A general word has prefixes, a root, and suffixes, as shown in Figure 9.3;
only the root is mandatory.
.FC "Figure 9.3"
Suffixes usually perform a grammatical role, affecting the
conjugation of a verb or declension of a noun; or transforming one
part of speech into another
("-al" can make a noun into an adjective, while "-ness" performs the reverse
transformation.)  Other
suffixes, such as "-dom" or "-ship", only apply to certain parts of
speech (nouns, in this case), but do not change the grammatical
role of the word.  Such suffixes, and all prefixes, alter the meaning
of a word.
.pp
Some root morphs cannot combine with other morphs but always stand
alone \(em for instance, "this".
Others, called free morphs, can either occur on their own or combine
with further morphs to form a word.
Thus the root "house" can be joined on either side by another root,
such as "boat",
or by a suffix such as "ing".
A third type of root morph is one which
.ul
must
combine with another morph, like "crimin-", "-ceive".
.pp
Even with a morph dictionary, decomposing a word into a sequence
of morphs is not a trivial operation.
The process of lexical concatenation often results in a
minor change in the constituents.
How big this change is allowed to be governs the morph system being used.
For example, Allen (1976) gives three concatenation rules:  a
final "e" can be omitted, as in
.ta 1.1i
.LB
.NI
give + ing	\(em>  giving;
.LE
the last consonant of the root can be doubled, as in
.LB
.NI
bid + ing	\(em>  bidding;
.LE
or a final "y" can change to an "i", as in
.LB
.NI
handy + cap	\(em>  handicap.
.[
Allen 1976 Synthesis of speech from unrestricted text
.]
.LE
If these are the only rules permitted, the morph dictionary will
have to include multiple versions of some suffixes.
For example, the plural morpheme [-s] needs to be represented both by
"-s" and "-es", to account for
.LB
.NI
pea + s	\(em>  peas
.LE
and
.LB
.NI
baby + es	\(em>  babies  (using the "y" \(em> "i" rule).
.LE
This would not be necessary if a  "y" \(em> "ie"  rule were included too.
Similarly, the morpheme [-ic] will include morphs
"-ic" and "-c"; the latter to cope with
.LB
.NI
specify + c	\(em>  specific    (using the "y" \(em> "i" rule).
.LE
Furthermore, non-morphemic roots such as "galact" need to be included because
the concatenation rules do not capture the transformation
.LB
.NI
galaxy + ic	\(em>  galactic.
.LE
There is clearly a trade-off between the size of the morph dictionary
and the complexity of the concatenation rules.
.pp
Since a text-to-speech system is presented with already-concatenated
morphs, it must be prepared to reverse the effects of the concatenation
rules to deduce the constituents of a word.
When two morphs combine with any of the three rules given above,
the changes in spelling occur only in the lefthand one.
Therefore the word is best scanned in a right-to-left direction to
split off the morphs starting with suffixes, as McIlroy's program does.
If the procedure fails at any point, one of the three rules is
hypothesized, its effect is undone, and splitting continues.
For example, consider the word
.LB
.NI
grasshoppers	<\(em  grass + hop + er + s
.LE
(Lee, 1969).
.[
Lee 1969
.]
The "-s" is detected first, then "-er"; these are both stored in
the dictionary as suffixes.
The remainder, "grasshopp", cannot be decomposed and does not appear
in the dictionary.
So each of the rules above is hypothesized in turn, and the
result investigated.  (The "y" \(em> "i" rule is obviously not
applicable.)  When
the final-consonant-doubling rule is considered, the sequence
"grasshop" is investigated.
"Shop" could be split off this, but then the unknown morph "gras"
would result.
The alternative, to remove "hop", leaves a remainder "grass" which
.ul
is
a free morph, as desired.
Thus a unique and correct decomposition is obtained.
Notice that the procedure would fail if, for example, "grass" had
been inadvertently omitted from the dictionary.
.pp
Sometimes, several seemingly valid decompositions present themselves
(Allen, 1976).
.[
Allen 1976 Synthesis of speech from unrestricted text
.]
For example:
.LB
.NI
scarcity	<\(em  scar + city
.NI
	<\(em  scarce + ity  (using final-"e" deletion)
.NI
	<\(em  scar + cite + y  (using final-"e" deletion)
.NI
resting	<\(em  rest + ing
.NI
	<\(em  re + sting
.NI
biding	<\(em  bide + ing  (using final-"e" deletion)
.NI
	<\(em  bid + ing
.NI
unionized	<\(em  un + ion + ize + d
.NI
	<\(em  union + ize + d
.NI
winding	<\(em  [wind]\dN\u + ing
.NI
	<\(em  [wind]\dV\u + ing.
.LE
The last distinction is important because the pronunciation of "wind"
depends on whether it is a noun or a verb.
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.pp
Several sources of information can be used to resolve these ambiguities.
The word structure of Figure 9.3, together with the division of root
morphs into bound and free ones, may eliminate some possibilities.
Certain letter sequences (such as "rp") do not appear at the beginning
of a word or morph, and others never occur at the end.
Knowledge of these sequences can reject some unacceptable
decompositions \(em or perhaps more importantly, can enable intelligent guesses
to be made in cases where a constituent morph has been omitted from the
dictionary.
The grammatical function of suffixes allows suffix sequences to be
checked for compatibility.
The syntax of the sentence, together with suffix knowledge, can
rule out other combinations.
Semantic knowledge will occasionally be necessary (as in the "unionized"
and "winding" examples above \(em compare a "winding road" with a "winding
blow").
Finally, Allen (1976) suggests that a preference structure on composition
rules can be used to resolve ambiguity.
.[
Allen 1976 Synthesis of speech from unrestricted text
.]
.pp
Once the morphological structure has been determined,
the rest of the pronunciation
process is relatively easy.
A phonetic transcription of each morph may be stored in the morph dictionary,
or else letter-to-sound rules can be used on individual morphs.
These are likely to be quite successful because final-"e" processing can be
now be done with confidence:  there are no hidden final "e"'s in the middle
of morphs.
In either case the resulting phonetic transcriptions of the individual morphs
must be concatenated to give the transcription of the complete word.
Although some contextual modification has to be accounted for,
it is relatively straightforward and easy to predict.
For example, the plural morphs "-s" and "-es" can be realized phonetically
by
.ul
uh\ z,
.ul
s,
or
.ul
z
depending on context.
Similarly the past-tense suffix "-ed" may be rendered as
.ul
uh\ d,
.ul
t,
or
.ul
d.
The suffixes "-ion" and "-ure" sometimes cause modification of the previous
morph:  for example
.LB
.NI
act + ion  \(em>  \c
.ul
a k t\c
  + ion  \(em>  \c
.ul
a k sh uh n.
.LE
.pp
The morph dictionary does not remove the need for a lexicon of exceptional
words.
The irregular final-"e" words mentioned earlier ("done", "anemone", "fete")
need to be treated on an individual basis,
as do words such as "quadruped" which have misleading endings
(it should not be decomposed as "quadrup|ed").
.rh "Pronunciation of languages other than English."
Text-to-speech systems for other languages have been reported in
the literature.
(For example, French, Esperanto,
Italian, Russian, Spanish, and German are covered
by Lesmo
.ul
et al,
1978; O'Shaughnessy
.ul
et al,
1981; Sherwood, 1978;
Mangold and Stall, 1978).
.[
Lesmo 1978
.]
.[
O'Shaughnessy Lennig Mermelstein Divay 1981
.]
.[
Sherwood 1978
.]
.[
Mangold Stall 1978
.]
Generally speaking, these present fewer difficulties than does English.
Esperanto is particularly easy because each letter in its orthography
has only one sound, making the pronunciation problem trivial.
Moreover, stress in polysyllabic words always occurs on the penultimate
syllable.
.pp
It is tempting and often sensible when designing a synthesis system for
English to use an utterance representation somewhere between phonetics and
ordinary spelling.
This may happen in practice even if it is not intended:  a user, finding
that a given word is pronounced incorrectly, will alter the spelling to
make it work.
The Word English Spelling alphabet (Dewey, 1971), amongst others (Haas, 1966),
is a simplified and apparently natural scheme which was developed by the
spelling reform movement.
.[
Dewey 1971
.]
.[
Haas 1966
.]
It maps very simply on to a phonetic representation, just like Esperanto.
However, it can provide little help with the crucial problem of stress
assignment, except perhaps by explicitly indicating reduced vowels.
.sh "9.3  Discussion"
.pp
This chapter has really only touched the tip of a linguistic iceberg.
I have given some examples of representations, rules, algorithms,
and exceptions, to make the concepts more tangible; but a whole mass of
detail has been swept under the carpet.
.pp
There are two important messages that are worth reiterating once more.
The first is that the representation of the input \(em that is,
whether it be a "concept"
in some semantic domain, a syntactic description of an utterance, a
decomposition into morphs, plain text or some contrived re-spelling of it \(em
is crucial to the quality of the output.
Almost any extra information about the utterance can be taken into account
and used to improve the speech.
It is difficult to derive such information if it is not provided explicitly,
for the process of climbing the tree from text to semantic representation is
at least as hard as descending it to a phonetic transcription.
.pp
Secondly, simple algorithms perform remarkably well \(em witness the
punctuation-driven intonation assignment scheme, and word fragment rules
for pronunciation.
However, the combined degradation contributed by several imperfect
processes is likely to impair speech quality very seriously.
And great complexity is introduced when these simple algorithms are
discarded in favour of more sophisticated ones.
There is, for example, a world of difference between a pronunciation
program that copes with 97% of common words and one that deals correctly
with 99% of a random sample from a dictionary.
.pp
Some of the options that face the system designer are recapitulated in
Figure 9.4.
.FC "Figure 9.4"
Starting from text, one can take the simple approach of lexically-based
suffix-splitting, letter-to-sound rules, and prosodics derived
from punctuation, to generate a phonetic transcription.
This will provide a cheap system which is relatively easy to implement
but whose speech quality will probably not be acceptable to any but the
most dedicated listener
(such as a blind person with no other access to reading material).
.pp
The biggest improvement in speech quality from such a system would
almost certainly come from more intelligent prosodic
control \(em particularly of intonation.
This, unfortunately, is also by far the most difficult to make unless
intonation contours, tonic stresses, and tone-group boundaries are hand-coded
into the input.
To generate the appropriate information from text one has to climb to the
upper levels in Figure 9.4 \(em and even when these are reached, the problems
are by no means over.
Still, let us climb the tree.
.pp
For syntax analysis, part-of-speech information is needed; and for this
the grammatical roles of individual words in the text must be ascertained.
A morph dictionary is the most reliable way to do this.
A linguist may prefer to go from morphs to syntax by way of morphemes;
but this is not necessary for the present purpose.
Just the information that
the morph "went" is a verb can be stored in the dictionary, instead
of its decomposition  [went]\ =\ [go]\ +\ [ed].
.pp
Now that we have the morphological structure of the text, stress assignment rules
can be applied to produce more accurate speech rhythms.
The morph decomposition will also allow improvements to be made to the
pronunciation, particularly in the case of silent "e"'s in compound words.
But the ability to assign intonation has hardly been improved at all.
.pp
Let us proceed upwards.
Now the problems become really difficult.
A semantic representation of the text is needed; but what exactly does this
mean?
We certainly must have
.ul
morphemic
knowledge, for now the fact that "went" is a derivative of "go"
(rather than any other verb) becomes crucial.
Very well, let us augment the morph dictionary with morphemic information.
But this does not attack the problem of semantic representation.
We may wish to resolve pronoun references to help assign stress.
Parts of the problem are solved in principle
and reported in the artificial intelligence
literature, but if such an ability is incorporated into the speech
synthesis system it will become enormously complicated.
In addition, we have seen that knowledge of antitheses in the text will greatly
assist intonation assignment, but procedures for extracting this
information constitute a research topic in their own right.
.pp
Now step back and take a top-down approach.
What could we do with this semantic understanding and knowledge of the structure
of the discourse if we had it?
Suppose the input were a "concept" in some as yet undetermined representation.
What are the
.ul
acoustic
manifestations of such high-level features as anaphoric references or
antithetical comparisons,
of parenthetical or satirical remarks,
of emotions:  warmth, sarcasm, sadness and despair?
Can we program the art of elocution?
These are good questions. 
.sh "9.4  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "9.5  Further reading"
.pp
Books on pronunciation give surprisingly little help in designing
a text-to-speech procedure.
The best aid is a good on-line dictionary and flexible software to
search it and record rules, examples, and exceptions.
Here are some papers that describe existing systems.
.LB "nn"
.\"Ainsworth-1974-1
.]-
.ds [A Ainsworth, W.A.
.ds [D 1974
.ds [T A system for converting text into speech
.ds [J IEEE Trans Audio and Electroacoustics
.ds [V AU-21
.ds [P 288-290
.nr [P 1
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.\"Colby-1978-2
.]-
.ds [A Colby, K.M.
.as [A ", Christinaz, D.
.as [A ", and Graham, S.
.ds [D 1978
.ds [K *
.ds [T A computer-driven, personal, portable, and intelligent speech prosthesis
.ds [J Computers and Biomedical Research
.ds [V 11
.ds [P 337-343
.nr [P 1
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.\"Elovitz-1976-3
.]-
.ds [A Elovitz, H.S.
.as [A ", Johnson, R.W.
.as [A ", McHugh, A.
.as [A ", and Shore, J.E.
.ds [D 1976
.ds [K *
.ds [T Letter-to-sound rules for automatic translation of English text to phonetics
.ds [J IEEE Trans Acoustics, Speech and Signal Processing
.ds [V ASSP-24
.ds [N 6
.ds [P 446-459
.nr [P 1
.ds [O December
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.\"Kooi-1978-4
.]-
.ds [A Kooi, R.
.as [A " and Lim, W.C.
.ds [D 1978
.ds [T An on-line minicomputer-based system for reading printed text aloud
.ds [J IEEE Trans Systems, Man and Cybernetics
.ds [V SMC-8
.ds [P 57-62
.nr [P 1
.ds [O January
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.\"Umeda-1975-5
.]-
.ds [A Umeda, N.
.as [A " and Teranishi, R.
.ds [D 1975
.ds [K *
.ds [T The parsing program for automatic text-to-speech synthesis developed at the Electrotechnical Laboratory in 1968
.ds [J IEEE Trans Acoustics, Speech and Signal Processing
.ds [V ASSP-23
.ds [N 2
.ds [P 183-188
.nr [P 1
.ds [O April
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.\"Umeda-1976-6
.]-
.ds [A Umeda, N.
.ds [D 1976
.ds [K *
.ds [T Linguistic rules for text-to-speech synthesis
.ds [J Proc IEEE
.ds [V 64
.ds [N 4
.ds [P 443-451
.nr [P 1
.ds [O April
.nr [T 0
.nr [A 1
.nr [O 0
.][ 1 journal-article
.in+2n
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "10  DESIGNING THE MAN-COMPUTER DIALOGUE"
.ds RT "The man-computer dialogue
.ds CX "Principles of computer speech
.pp
Interactive computers are being used more and more by non-specialist people
without much previous computer experience.
As processing costs continue to decline, the overall expense of providing
highly interactive systems
becomes increasingly dominated by terminal and communications equipment.
Taken together, these two factors highlight the need for easy-to-use,
low-bandwidth interactive terminals that make maximum use of the existing
telephone network for remote access.
.pp
Speech output can provide versatile feedback from a computer at very low
cost in distribution and terminal equipment.  It is attractive from several
points of view.
Terminals \(em telephones \(em are invariably in place already.
People without experience of computers are accustomed to their use,
and are not intimidated by them.
The telephone network is cheap to use and extends all over the world.
The touch-tone keypad (or a portable tone generator)
provides a complementary data input device which will do for many
purposes until the technology of speech recognition becomes better developed
and more widespread.
Indeed, many applications \(em especially information retrieval ones \(em need
a much smaller bandwidth from user to computer than in the reverse direction,
and voice output combined with restricted keypad entry provides a good match
to their requirements.
.pp
There are, however, severe problems in implementing natural and useful
interactive systems using speech output.
The eye can absorb information at a far greater rate than can the ear.
You can scan a page of text in a way which has no analogy in auditory terms.
Even so, it is difficult to design a dialogue which allows you to search
computer output visually at high speed.
In practice, scanning a new report is often better done at your desk
with a printed copy than at a computer terminal with a viewing program
(although this is likely to change in the near future).
.pp
With speech, the problem of organizing output becomes even harder.
Most of the information we learn using our ears is presented in a
conversational way, either in face-to-face discussions or over the telephone.
Verbal but non-conversational presentations, as in the
university lecture theatre, are known to be a rather inefficient way
of transmitting information.
The degree of interaction is extremely high even in a telephone conversation,
and communication relies heavily on speech gestures such as hesitations,
grunts, and pauses; on prosodic features such as intonation, pitch range,
tempo, and voice quality; and on conversational gambits such as interruption
and long silence.
I emphasized in the last two chapters the rudimentary state of knowledge
about how to synthesize
prosodic features, and the situation is even worse
for the other, paralinguistic, phenomena.
.pp
There is also a very special problem with voice output, namely, the transient
nature of the speech signal.
If you miss an utterance, it's gone.
With a visual display unit, at least the last few interactions usually remain
available.
Even then, it is not uncommon to look up beyond the top of the screen and
wish that more of the history was still visible!
This obviously places a premium on a voice response system's
ability to repeat utterances.
Moreover, the dialogue designer must do his utmost to ensure that the user
is always aware of the current state of the interaction,
for there is no opportunity to refresh the memory by glancing at earlier
entries and responses.
.pp
There are two separate aspects to the man-computer interface in a voice
response system.
The first is the relationship between the system and the end user,
that is, the "consumer" of the synthesized dialogue.
The second is the relationship between the system and the applications
programmer who creates the dialogue.
These are treated separately in the next two sections.
We will have more to say about the former aspect,
for it is ultimately more important to more people.
But the applications programmer's view is important, too; for without him
no systems would exist!
The technical difficulties in creating synthetic dialogues
for the majority of voice systems probably
explain why speech output technology is still greatly under-used.
Finally we look at techniques for using small keypads such as those on
touch-tone telephones,
for they are an essential part of many voice response systems.
.sh "10.1  Programming principles for natural interaction"
.pp
Special attention must be paid to be details of the man-machine interface
in speech-output systems.
This section summarizes experience of human factors considerations
gained in developing the remote
telephone enquiry service described in Chapter 1 (Witten and Madams, 1977),
which employs an ordinary touch-tone keypad for input in conjunction with
synthetic voice response.
.[
Witten Madams 1977 Telephone Enquiry Service
.]
Most of the principles which emerged were the result of natural evolution
of the system, and were not clear at the outset.
Basically, they stem from the fact that speech is both more intrusive
and more ephemeral than writing, and so they are applicable in general to
speech output information retrieval systems with keyboard or even voice
input.
Be warned, however, that they are based upon casual observation and
speculation rather than empirical research.
There is a desperate need for proper studies of user psychology in speech
systems.
.rh "Echoing."
Most alphanumeric input peripherals echo on a character-by-character basis.
Although one can expect quite a high proportion of mistakes with
unconventional keyboards, especially when entering alphabetic data on a
basically numeric keypad, audio character echoing is distracting and annoying.
If you type "123" and the computer echoes
.LB
.NI
"one ... two ... three"
.LE
after the individual key-presses, it is liable to divert your
attention, for voice output is much more intrusive than a purely visual "echo".
.pp
Instead, an immediate response to a completed input line is preferable.
This response can take the form or a reply to a query, or, if successive
data items are being typed, confirmation of the data entered.
In the latter case, it is helpful if the information can be generated in
the same way that the user himself would be likely to verbalize it.
Thus, for example, when entering numbers:
.LB
.nr x0 \w'COMPUTER:'
.nr x1 \w'USER:'
.NI
USER:\h'\n(x0u-\n(x1u' "123#"	(# is the end-of-line character)
.NI
COMPUTER: "One hundred and twenty-three."
.LE
For a query which requires lengthy processing, the input should be
repeated in a neat, meaningful format to give the user a chance to abort
the request.
.rh "Retracting actions."
Because commands are entered directly without explicit confirmation,
it must always be easy for the user to revoke his actions.
The utility of an "undo" command is now commonly recognized for
any interactive system, and it becomes even more important in speech
systems because it is easier for the user to lose his place in the
dialogue and so make errors.
.rh "Interrupting."
A command which interrupts output and returns to a known state
should be recognized at every level of the system.
It is essential that voice output be terminated immediately,
rather than at the end of the utterance.
We do not want the user to live in fear of the system embarking on
a long, boring monologue that is impossible to interrupt!
Again, the same is true of interactive dialogues which do not use speech,
but becomes particularly important with voice response because it takes
longer to transmit information.
.rh "Forestalling prompts."
Computer-generated prompts must be explicit and frequent enough
to allow new users to understand what they are expected to do.
Experienced users will "type ahead" quite naturally,
and the system should suppress unnecessary prompts under these conditions
by inspecting the input buffer before prompting.
This allows the user to concatenate frequently-used commands into chunks whose
size is entirely at his own discretion.
.pp
With the above-mentioned telephone enquiry service, for example,
it was found that people often took advantage of the prompt-suppression
feature to enter their
user number, password, and required service number as a single keying
sequence.
As you becomes familiar with a service you quickly and easily learn to
forestall expected prompts by typing ahead.
This provides a very natural way for the system to adapt itself automatically
to the experience of the user.
New users will naturally wait to be prompted, and proceed through the dialogue
at a slower and more relaxed pace.
.pp
Suppressing unnecessary prompts is a good idea in any interactive system,
whether or not it uses the medium of speech \(em although it is hardly ever done
in conventional systems.
It is particularly important with speech, however, because an unexpected
or unwanted
prompt is quite distracting, and it is not so easy to ignore it as it is
with a visual display.
Furthermore, speech messages usually take longer to present
than displayed ones, so that the user is distracted for more time.
.rh "Information units."
Lengthy computer voice responses are inappropriate for conveying information,
because attention wanders if one is not actively involved in the conversation.
A sequential exchange of terse messages, each designed to dispense one
small unit of information, forces the user to take a meaningful part in the
dialogue.
It has other advantages, too, allowing a higher degree of input-dependent
branching, and permitting rapid recovery from errors.
.pp
The following example from the "Acidosis program", an audio response system
designed to help physicians to diagnose acidosis, is a good example
of what
.ul
not
to do.
.LB
"(Chime) A VALUE OF SIX-POINT-ZERO-ZERO HAS BEEN ENTERED FOR PH.
THIS VALUE IS IMPOSSIBLE.
TO CONTINUE THE PROGRAM, ENTER A NEW VALUE FOR PH IN THE RANGE
BETWEEN SIX-POINT-SIX AND EIGHT-POINT-ZERO
(beep dah beep-beep)"  (Smith and Goodwin, 1970).
.[
Smith Goodwin 1970
.]
.LE
The use of extraneous noises (for example, a "chime" heralds an error message,
and a "beep dah beep-beep" requests data input in the form
<digit><point><digit><digit>)
was thought necessary in the Acidosis program to keep the user awake
and help him with the format of the interaction.
Rather than a long monologue like this,
it seems much better to design a sequential interchange of terse messages,
so that the caller can be guided into a state where he can rectify his error.
For example,
.LB
.nf
.ne11
.nr x0 \w'COMPUTER:'
.nr x1 \w'CALLER:'
CALLER:\h'\n(x0u-\n(x1u' "6*00#"
COMPUTER: "Entry out of range"
CALLER:\h'\n(x0u-\n(x1u' "6*00#"  (persists)
COMPUTER: "The minimum acceptable pH value is 6.6"
CALLER:\h'\n(x0u-\n(x1u' "9*03#"
COMPUTER: "The maximum acceptable pH value is 8.0"
.fi
.LE
This dialogue allows a rapid exit from the error situation in the likely
event that the entry has simply been mis-typed.
If the error persists, the caller is given just one piece of information
at a time, and forced to continue to play an active role in the interaction.
.rh "Input timeouts."
In general, input timeouts are dangerous, because they introduce apparent
acausality in the system seen by the user.
A case has been reported where a user became "highly agitated and refused
to go near the terminal again after her first timed-out prompt.
She had been quietly thinking what to do and the terminal suddenly
interjecting and making its
own suggestions was just too much for her" (Gaines and Facey, 1975).
.[
Gaines Facey 1975
.]
.pp
However, voice response systems lack the satisfying visual feedback
of end-of-line on termination of an entry.
Hence a timed-out reminder is appropriate if a delay occurs after some
characters have been entered.
This requires the operating system to support a character-by-character mode
of input, rather than the usual line-by-line mode.
.rh "Repeat requests."
Any voice response system must support a universal "repeat last utterance"
command, because old output does not remain visible.
A fairly sophisticated facility is desirable, as repeat requests are
very frequent in practice.
They may be due to a simple inability to understand a response,
to forgetting what was said, or to distraction of attention \(em which is
especially common with office terminals.
.pp
In the telephone enquiry service two distinct commands were employed,
one to repeat the last utterance in case of misrecognition,
and the other to summarize the current state of the interaction
in case of distraction.
For the former, it is essential to avoid simply regenerating an utterance
identical with the last.
Some variation of intonation and rhythm is needed to prevent an annoying,
stereotyped response.
A second consecutive repeat request should trigger a paraphrased reply.
An error recovery sequence could be used which presented the misunderstood
information in a different way with more interaction, but experience
indicates that this is of minor importance, especially if information units
are kept small anyway.
To summarize the current state of the interaction in response to the second
type of repeat command necessitates the system maintaining a model of
the user.
Even a poor model, like a record of his last few transactions and their
results, is well worth having.
.rh "Varied speech."
Synthetic speech is usually rather dreary to listen to.
Successive utterances with identical intonations should be carefully avoided.
Small changes in speaking rate, pitch range, and mean pitch level,
all serve to add variety.
Unfortunately, little is known at present about the role of intonation in
interactive dialogue, although this is an active research area and
new developments can be expected (for a detailed report of a recent
research project relevant to this topic see Brown
.ul
et al,
1980).
.[
Brown Currie Kenworthy 1980
.]
However, even random variations in certain parameters of the pitch contour
are useful to relieve the tedium of repetitive intonation patterns.
.sh "10.2  The applications programming environment"
.pp
The comments in the last section are aimed at the applications programmer
who is designing the dialogue and constructing the interactive system.
But what kind of environment should
.ul
he
be given to assist with this work?
.pp
The best help the applications programmer can have is a speech generation
method which makes it easy for him to enter new utterances and modify
them on-line in cut-and-try attempts to render the man-machine dialogue
as natural as possible.
This is perhaps the most important advantage of synthesizing speech by rule
from a textual representation.
If encoded versions of natural utterances are stored, it becomes quite
difficult to make minor modifications to the dialogue in the light of
experience with it, for a recording session must be set up
to acquire new utterances.
This is especially true if more than one voice is used, or if the
voice belongs to a person who cannot be recalled quickly by the programmer
to augment the utterance library.
Even if it is his own voice there will still be delays, for recording
speech is a real-time job which usually needs a stand-alone processor,
and if data compression is used a substantial amount of computation will
be needed before the utterance is in a useable form.
.pp
The broad phonetic input required by segmental speech synthesis-by-rule
systems is quite suitable for utterance representation.
Utterances can be entered quickly from a standard computer terminal,
and edited as text files.
Programmers must acquire skill in phonetic transcription,
but this is a small inconvenience.
The art is easily learned in an interactive situation where the effect
of modifications to the transcription can be heard immediately.
If allophones must be represented explicitly in the input then the
programmer's task becomes considerably more complicated because of the
combinatorial explosion in trial-and-error modifications.
.pp
Plain text input is also quite suitable.
A significant rate of error is tolerable if immediate audio feedback
of the result is available, so that the operator can adjust his text
to suit the pronunciation idiosyncrasies of the program.
But it is acceptable, and indeed preferable, if prosodic features are
represented explicitly in the input rather than being assigned automatically
by a computer program.
.pp
The application of voice response to interactive computer dialogue is
quite different to the problem of reading aloud from text.
We have seen that a major concern with reading machines is how to glean
information about intonation, rhythm, emphasis, tone of voice, and so on,
from an input of ordinary English text.
The significant problems of semantic processing, utilization of pragmatic
knowledge, and syntactic analysis do not, fortunately, arise in interactive
information retrieval systems.
In these, the end user is communicating with a program which has been
created by a person who knows what he wants it to say.
Thus the major difficulty is in
.ul
describing
the prosodic features rather than
.ul
deriving
them from text.
.pp
Speech synthesis by rule is a subsidiary process to the main interactive
procedure.
It would be unwise to allow
the updating of resonance parameter tracks to be interrupted by
other calls on the system, and so the synthesis process needs to be executed
in real time.
If a stand-alone processor is used for the interactive dialogue, it may
be able to handle the synthesis rules as well.
In this case the speech-by-rule program could be a library procedure,
if the system is implemented in a compiled language.
An interesting alternative with an interpretive-language implementation,
such as Basic, is to alter the language interpreter to add a new
command, "speak", which simply transfers a string representing an utterance
to an asynchronous process which synthesizes it.
However, there must be some way for an intepreted program to abort the
current synthesis in the event of an interrupt signal from the user.
.pp
If the main computer system is time-shared, the synthesis-by-rule
procedure is best executed by an independent processor.
For example, a 16-bit microcomputer controlling a hardware
formant synthesizer has been used to run the
ISP system in real time without too much difficulty (Witten and Abbess, 1979).
.[
Witten Abbess 1979
.]
An important task is to define an interface between the two which
allows the main process to control relevant aspects of the prosody of
the speech in a way which is appropriate to the state of the interaction,
without having to bother about such things as matching the intonation contour
to the utterance and the details of syllable rhythm.
Halliday's notation appears to be quite suitable for this purpose.
.pp
If there is only one synthesizer on the system, there will be no
difficulty in addressing it.
One way of dealing with multiple synthesizers is to treat them as
assignable devices in the same way that non-spooling peripherals
are in many operating systems.
Notice that the data rate to the synthesizer is quite low
if the utterance is represented as text with prosodic markers,
and can easily be handled by a low-speed asynchronous serial line.
.pp
The Votrax ML-I synthesizer which is discussed in the next chapter has an
interface which interposes it between a visual display unit and the serial
port that connects it to the computer.
The VDU terminal can be used quite normally, except that a special sequence
of two control characters will cause Votrax to intercept the following
message up to another control character, and interpret it as speech.
The fact that the characters which specify the spoken message do not appear
on the VDU screen means that the operation is invisible to the user.
However, this transparency can be inhibited by a switch on the synthesizer
to allow visual checking of the sound-segment character sequence.
.pp
Votrax buffers up to 64 sound segments, which is sufficient to generate
isolated spoken messages.
For longer passages, it can be synchronized with the constant-rate
serial output using the modem control lines of the serial interface,
together with appropriate device-driving software.
.pp
This is a particularly convenient interfacing technique in cases when the
synthesizer should always be associated with a certain terminal. 
As an example of how it can be used,
one can arrange files each of whose lines contain a printed message,
together with its Votrax equivalent bracketed by the appropriate
control characters.
When such a file is listed, or examined with an editor program, the lines
appear simultaneously in spoken and typed English.
.pp
If a phonetic representation is used for utterances, with real-time
synthesis using a separate process (or processor), it is easy for
the programmer to fiddle about with the interactive dialogue to get
it feeling right.
For him, each utterance is just a textual string which
can be stored as a string constant within his program just as a VDU prompt
would be.  He can edit it as part of his program, and "print" it to
the speech synthesis device to hear it.
There are no more technical problems to developing an interactive dialogue
with speech output than there are for a conventional interactive program.
Of course, there are more human problems, and the points discussed
in the last section should always be borne in mind.
.sh "10.3  Using the keypad"
.pp
One of the greatest advantages of speech output from computers is the
ubiquity of the telephone network and the possibility of using it without
the need for special equipment at the terminal.
The requirement for input as well as output obviously presents something of a problem
because of the restricted nature of the telephone keypad.
.pp
Figure 10.1 shows the layout of the keypad.
.FC "Figure 10.1"
Signalling is achieved by dual-frequency tones.
For example, if key 7 is pressed, sinusoidal components at 852\ Hz and 1209\ Hz
are transmitted down the line.
During the process of dialling these are received by the telephone exchange
equipment, which assembles the digits that form a number and attempts to route
the call appropriately.
Once a connection is made, either party is free to press keys if desired
and the signals will be transmitted to the other end,
where they can be decoded by simple electronic circuits.
.pp
Dial telephones signal with closely-spaced dial pulses.
One pulse is generated for a "1", two for a "2", and so on.
(Obviously, ten pulses are generated for a "0", rather than none!)  Unfortunately,
once the connection is made it is difficult to signal with dial pulses.
They cannot be decoded reliably at the other end because the telephone
network is not designed to transmit such low frequencies.
However, hand-held tone generators can be purchased for use with dial
telephones.
Although these are undeniably extra equipment, and one purpose of using speech
output is to avoid this, they are very cheap and portable compared with other
computer terminal equipment.
.pp
The small number of keys on the telephone pad makes it rather difficult
to use for communicating with computers.
Provision is made for 16 keys, but only 12 are implemented \(em the others
may be used for some military purposes.
Of course, if a separate tone generator is used then advantage can be taken
of the extra keys, but this will introduce incompatibility with those
who use unmodified touch-tone phones.
More sophisticated terminals are available which extend the keypad \(em such
as the Displayphone of Northern Telecommunications.
However, they are designed as a complete communications terminal and
contain their own visual display as well.
.rh "Keying alphabetic data."
Figure 10.2 shows the near-universal scheme for overlaying alphabetic letters
on to the telephone keypad.
.FC "Figure 10.2"
Since more than one symbol occupies each key, it is obviously necessary
to have multiple keystrokes per character if the input sequence is to be
decodable as a string of letters.
One way of doing this is to depress the appropriate button the number of
times corresponding to the position of the letter on it.
For example, to enter the letter "L" the user would key the "5" button
three times in rapid succession.
Keying rhythm must be used to distinguish the four entries "J\ J\ J",
"J\ K", "K\ J", and "L", unless one of the bottom three buttons is used
as a separator.
A different method is to use "*", "0", and "#" as shift keys to indicate whether
the first, second, or third letter on a key is intended.
Then "#5" would represent "L".
Alternatively, the shift could follow the key instead of preceding it,
so that "5#" represented "L".
.pp
If numeric as well as alphabetic information may be entered, a mode-shift
operation is commonly used to switch between numeric and alphabetic modes.
.pp
The relative merits of these three methods, multiple depressions, shift
key prefix, and shift key suffix, have been investigated
experimentally (Kramer, 1970).
.[
Kramer 1970
.]
The results were rather inconclusive.
The first method seemed to be slightly inferior in terms of user accuracy.
It seemed that preceding rather than following shifts gave higher accuracy,
although this is perhaps rather counter-intuitive and may have been
fortuitous.
The most useful result from the experiments was that users exhibited
significant learning behaviour, and a training period of at least two hours
was recommended.
Operators were found able to key at rates of at least three to four
characters per second, and faster with practice.
.pp
If a greater range of characters must be represented then the coding problem
becomes more complex.
Figure 10.3 shows a keypad which can be used for entry of the full 64-character
standard upper-case ASCII alphabet (Shew, 1975).
.[
Shew 1975
.]
.FC "Figure 10.3"
The system is intended for remote vocabulary updating in a phonetically-based
speech synthesis system.
There are three modes of operation:  numeric, alphabetic, and symbolic.
These are entered by "##", "**", and "*0" respectively.
Two function modes, signalled by "#0" and "#*", allow some
rudimentary line-editing and monitor facilities to be incorporated.
Line-editing commands include character and line delete, and two kinds of
read-back commands \(em one tries to pronounce the words in a line
and the other spells out the characters.
The monitor commands allow the user to repeat the effect of the last input line
as though he had entered it again, to order the system to read back the
last complete output line, and to query time and system status.
.rh "Incomplete keying of alphanumeric data."
It is obviously going to be rather difficult for the operator to key
alphanumeric information unambiguously on a 12-key pad.
In the description of the telephone enquiry service in Chapter 1,
it was mentioned that single-key entry can be useful for alphanumeric data
if the ambiguity can be resolved by the computer.
If a multiple-character entry is known to refer to an item on a given
list, the characters can be keyed directly according to the coding scheme
of Figure 10.2.
.pp
Under most circumstances no ambiguity will arise.
For example, Table 10.1 shows the keystrokes that would be entered for the
first 50 5-letter words in an English dictionary.
Only two clashes occur \(em between " adore" and "afore", and
"agate" and "agave".
.RF
.nr x2 \w'abeam  'u
.nr x3 \w'00000#    'u
.nr x0 \n(x2u+\n(x3u+\n(x2u+\n(x3u+\n(x2u+\n(x3u+\n(x2u+\n(x3u+\n(x2u+\w'00000#'u
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \n(x2u +\n(x3u +\n(x2u +\n(x3u +\n(x2u +\n(x3u +\n(x2u +\n(x3u +\n(x2u
\l'\n(x0u\(ul'
.sp
aback	22225#	abide	22433#	adage	23243#	adore	23673#	after	23837#
abaft	22238#	abode	22633#	adapt	23278#	adorn	23676#	again	24246#
abase	22273#	abort	22678#	adder	23337#	adult	23858#	agape	24273#
abash	22274#	about	22688#	addle	23353#	adust	23878#	agate	24283#
abate	22283#	above	22683#	adept	23378#	aeger	23437#	agave	24283#
abbey	22239#	abuse	22873#	adieu	23438#	aegis	23447#	agent	24368#
abbot	22268#	abyss	22977#	admit	23648#	aerie	23743#	agile	24453#
abeam	22326#	acorn	22676#	admix	23649#	affix	23349#	aglet	24538#
abele	22353#	acrid	22743#	adobe	23623#	afoot	23668#	agony	24669#
abhor	22467#	actor	22867#	adopt	23678#	afore	23673#	agree	24733#
\l'\n(x0u\(ul'
.in 0
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 10.1  Keying equivalents of some words"
As a more extensive example, in a dictionary of 24,500 words, just under 2,000
ambiguities (8% of words) were discovered.
Such ambiguities would have to be resolved interactively by the system explaining
its dilemma, and asking the user for a choice.
Notice incidentally that although the keyed sequences do not have the same
lexicographic order as the words,
no extra cost will be associated with the table-searching
operation if the dictionary is stored in inverted form, with each legal
number pointing to its English equivalent or equivalents.
.pp
A command language syntax is also a powerful way of disambiguating
keystrokes entered.
Figure 10.4 shows the keypad layout for a telephone voice calculator
(Newhouse and Sibley, 1969).
.[
Newhouse Sibley 1969
.]
.FC "Figure 10.4"
This calculator provides the standard arithmetic operators,
ten numeric registers, a range of pre-defined mathematical functions,
and even the ability for a user to enter his own functions over the
telephone.
The number representation is fixed-point, with user control (through a system
function) over the precision.
Input of numbers is free format.
.pp
Despite the power of the calculator language, the dialogue is defined
so that each keystroke is unique in context and never has to be disambiguated
explicitly by the user.
Table 10.2 summarizes the command language syntax in an informal and rather
heterogeneous notation.
.RF
.nr x0 1.3i+1.7i+\w'some functions do not need the <value> part'u
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta 1.3i +1.7i
\l'\n(x0u\(ul'
construct	definition	explanation
\l'\n(x0u\(ul'
.sp
<calculation>		a sequence of <operation>s followed by a
		call to the system function  \fIE  X  I  T\fR
.sp
<operation>	<add> OR <subtract> OR
	<multiply> OR <divide> OR
	<function> OR <clear> OR
	<erase> OR <answer> OR
	<display-last> OR <display> OR
	<repeat> OR <cancel>
.sp
<add>	+  <value>  #  OR  +  #  <function>
.sp
<subtract>
<multiply>		similar to <add>
<divide>
.sp
<value>	<numeric-value>  OR  \fIregister\fR <single-digit>
.sp
<numeric-value>		a sequence of keystrokes like
		1  .  2  3  4  or  1  2  3  .  4  or  1  2  3  4
.sp
<function>	\fIfunction\fR <name>  #  <value>  #
		some functions do not need the <value> part
.sp
<name>		a sequence of keystrokes like
		\fIS  I  N\fR  or  \fIE  X  I  T\fR  or  \fIM  Y  F  U  N  C\fR
.sp
<clear>	\fIclear register\fR <single-digit>  #
		clears one of the 10 registers
.sp
<erase>	\fIerase\fR  #	undoes the effect of the last operation
.sp
<answer>	\fIanswer register\fR <single-digit>  #
		reads the contents of a register
.sp
<display-last>
<display>		these provide "repeat" facilities
<repeat>
.sp
<cancel>		aborts the current utterance
\l'\n(x0u\(ul'
.in 0
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 10.2  Syntax for a telephone calculator"
A calculation is a sequence of operations followed by an EXIT function call.
There are twelve different operations, one for each button on the keypad.
Actually, two of them \(em
.ul
cancel
and
.ul
function
\(em share the same key so that "#" can be reserved for use as a
separator; but the context ensures that they cannot be confused by the system.
.pp
Six of the operations give control over the dialogue.
There are three different "repeat" commands; a command (called
.ul
erase\c
)
which undoes the effect of the last operation;
one which reads out the value of a register;
and one which aborts the current utterance.
Four more commands provide the basic arithmetic operations of add,
subtract, multiply, and divide.
The operands of these may be keyed literal numbers, or register values,
or function calls.
A further command clears a register.
.pp
It is through functions that the extensibility of the language is achieved.
A function has a name (like SIN, EXIT, MYFUNC) which is keyed with an
appropriate single-key-per-character sequence (namely 746, 3948, 693862
respectively).
One function, DEFINE, allows new ones to be entered.
Another, LOOP, repeats sequences of operations.
TEST incorporates arithmetic testing.
The details of these are not important:  what is interesting is the evident
power of the calculator.
.pp
For example, the keying sequence
.LB
.NI
5  #  1  1  2  3  #  2  1  .  2  #  9  #  6  #  2  1  .  4  #
.LE
would be decoded as
.LB
.NI
.ul
clear\c
  +  123  \-  1.2  \c
.ul
display  erase\c
  \-  1.4.
.LE
One of the difficulties with such a tight syntax is that almost any sequence
will be intepreted as a valid calculation \(em syntax errors are nearly
impossible.
Thus a small mistake by the user can have a catastrophic effect on the
calculation.
Here, however, speech output gives an advantage over conventional
character-by-character echoing
on visual displays.
It is quite adequate to echo syntactic units as they are decoded, instead
of echoing keys as they are entered.
It was suggested earlier in this chapter that confirmation of entry
should be generated in the same way that the user would be likely to
verbalize it himself.
Thus the synthetic voice could respond to the above keying sequence as
shown in the second line, except that the
.ul
display
command would also state the result
(and possibly summarize the calculation so far).
Numbers could be verbalized as "one hundred and twenty-three"
instead of as "one ... two ... three".
(Note, however, that this will make it necessary to await the "#" terminator
after numbers and function names before they can be echoed.)
.sh "10.4  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.sh "10.5  Further reading"
.pp
There are no books which relate techniques of man-computer dialogue
to speech interaction.
The best I can do is to guide you to some of the standard works on
interactive techniques.
.LB "nn"
.\"Gilb-1977-1
.]-
.ds [A Gilb, T.
.as [A " and Weinberg, G.M.
.ds [D 1977
.ds [T Humanized input
.ds [I Winthrop
.ds [C Cambridge, Massachusetts
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
This book is subtitled "techniques for reliable keyed input",
and considers most aspects of the problem of data entry by
professional key operators.
.in-2n
.\"Martin-1973-2
.]-
.ds [A Martin, J.
.ds [D 1973
.ds [T Design of man-computer dialogues
.ds [I Prentice-Hall
.ds [C Englewood Cliffs, New Jersey
.nr [T 0
.nr [A 1
.nr [O 0
.][ 2 book
.in+2n
Martin concerns himself with all aspects of man-computer dialogue,
and the book even contains a short chapter on  the use of
voice response systems.
.in-2n
.\"Smith-1980-3
.]-
.ds [A Smith, H.T.
.as [A " and Green, T.R.G.(Editors)
.ds [D 1980
.ds [T Human interaction with computers
.ds [I Academic Press
.ds [C London
.nr [T 0
.nr [A 0
.nr [O 0
.][ 2 book
.in+2n
A recent collection of contributions on man-computer systems and programming
research.
.in-2n
.LE "nn"
.EQ
delim $$
.EN
.CH "11  COMMERCIAL SPEECH OUTPUT DEVICES"
.ds RT "Commercial speech output devices
.ds CX "Principles of computer speech
.pp
This chapter takes a look at four speech output peripherals that are
available today.
It is risky in a book of this nature to descend so close to the technology
as to discuss particular examples of commercial products,
for such information becomes dated very quickly.
Nevertheless, having covered the principles of various types of speech
synthesizer, and the methods of driving them from widely differing utterance
representations, it seems worthwhile to see how these principles are
embodied in a few products actually on the market.
.pp
Developments in electronic speech devices are moving so fast that it is
hard to keep up with them, and the newest technology today will undoubtedly
be superseded next year.
Hence I have not tried to choose examples from the very latest technology.
Instead, this chapter discusses synthesizers which exemplify rather different
principles and architectures, in order to give an idea of the range of options
which face the system designer.
.pp
Three of the devices are landmarks in the commercial adoption of speech
technology, and have stood the test of time.
Votrax was introduced in the early 1970's, and has been re-implemented
several times since in an attempt to cover different market sectors.
The Computalker appeared in 1976.
It was aimed primarily at the burgeoning computer hobbies market.
One of its most far-reaching effects was to stimulate the interest of
hobbyists, always eager for new low-cost peripherals, in speech synthesis;
and so provide a useful new source of experimentation and expertise
which will undoubtedly help this heretofore rather esoteric discipline to
mature.
Computalker is certainly the longest-lived and probably still the most
popular hobbyist's speech synthesizer.
The Texas Instruments speech synthesis chip brought speech output technology to the
consumer.
It was the first single-chip speech synthesizer, and is still the biggest
seller.
It forms the heart of the "Speak 'n Spell" talking toy which appeared in
toyshops in the summer of 1978.
Although talking calculators had existed several years before, they were
exotic gadgets rather than household toys.
.sh "11.1  Formant synthesizer"
.pp
The Computalker is a straightforward implementation of a serial formant
synthesizer.
A block diagram of it is shown in Figure 11.1.
.FC "Figure 11.1"
In the centre is the main vocal tract path, with three formant filters
whose resonant frequencies can be controlled individually.
A separate nasal branch in parallel with the oral one is provided,
with a nasal formant of fixed frequency.
It is less important to allow for variation of the nasal formant
frequency than it is for the oral ones, because the size and
shape of the nasal tract is relatively fixed.
However, it is essential to control the nasal amplitude, in particular to turn
it off during non-nasal sounds.
Computalker provides independent oral and nasal amplitude parameters.
.pp
Unvoiced excitation can be passed through the main vocal tract
through the aspiration amplitude control AH.
In practice, the voicing amplitudes AV and AN will probably always be zero when AH
is non-zero, for physiological constraints prohibit simultaneous voicing
and aspiration.
A second unvoiced excitation path passes through a fricative formant filter
whose resonant frequency can be varied, and has its amplitude independently
controlled by AF.
.rh "Control parameters."
Table 11.1 summarizes the nine parameters which drive Computalker.
.RF
.nr x0 \w'address0'+\w'fundamental frequency of voicing00'+\w'0 bits0'+\w'logarithmic00'+\w'0000\-00000 Hz'
.nr x1 (\n(.l-\n(x0)/2
.in \n(x1u
.ta \w'000'u \w'address0'u +\w'fundamental frequency of voicing00'u +\w'0 bits0'u +\w'logarithmic00'u
address	meaning	width		\0\0\0range
\l'\n(x0u\(ul'
.sp
\00	AV	amplitude of voicing	8 bits
\01	AN	nasal amplitude	8 bits
\02	AH	amplitude of aspiration	8 bits
\03	AF	amplitude of frication	8 bits
\04	FV	fundamental frequency of voicing	8 bits	logarithmic	\0\075\-\0\0470 Hz
\05	F1	formant 1 resonant frequency	8 bits	logarithmic	\0170\-\01450 Hz
\06	F2	formant 2 resonant frequency	8 bits	logarithmic	\0520\-\04400 Hz
\07	F3	formant 3 resonant frequency	8 bits	logarithmic	1700\-\05500 Hz
\08	FF	fricative resonant frequency	8 bits	logarithmic	1700\-14000 Hz
\09		not used
10		not used
11		not used
12		not used
13		not used
14		not used
15	SW	audio on-off switch	1 bit
\l'\n(x0u\(ul'
.in 0
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.FG "Table 11.1  Computalker control parameters"
Four of them control amplitudes, while the others control frequencies.
In the latter case the parameter value is logarithmically related to
the actual frequency of the excitation (FV) or resonance (F1, F2, F3, FF).
The ranges over which each frequency can be controlled is shown in the Table.
An independent calibration of one particular Computalker has shown that
the logarithmic specifications are met remarkably well.
.pp
Each parameter is specified to Computalker as an 8-bit number.
Parameters are addressed by a 4-bit code, and so a total of 12 bits
is transferred in parallel to Computalker from the computer
for each parameter update.
Parameters 9 to 14 are unassigned ("reserved for future expansion" is
the official phrase), and the last parameter, SW, governs the position of
an audio on-off switch.
.pp
Computalker does not contain a clock that is accessible to the user,
and so the timing of parameter updates is entirely up to the host computer.
Typically, a 10\ msec interval between frames is used,
with interrupts generated by a separate timer.
In fact the frame interval can be anywhere between 2\ msec and 50\ msec,
and can be changed to alter the rate of speaking.
However, it is rather naive to view fast speech as slow
speech speeded up by a linear time compression, for in human
speech production the rhythm changes and elisions occur in a rather
more subtle way.
Thus it is not particularly useful to be able to alter the frame rate.
.pp
At each interrupt, the host computer transfers values for all of the nine
parameters to Computalker, a total of 108 data bits.
In theory, perhaps, it is only necessary to transmit those parameters
whose values have changed; but in practice all of them should be updated
regardless.
This is because the parameters are stored for the duration of the frame
in analogue sample-and-hold devices.  Essentially, the parameter value
is represented as the charge on a capacitor.
In time \(em and it takes only a short time \(em the values drift.
Although the drift over 10\ msec is insignificant, it becomes very
noticeable over longer time periods.
If parameters are not updated at all, the result is a
"whooosh" sound up to maximum amplitude, in a period of a second or two.
Hence it is essential that Computalker be serviced by the computer regularly,
to update all its parameters.
The audio on-off switch is provided so that the computer can turn off
the sound directly if another program, which does not use the device,
is to be run.
.rh "Filter implementation."
It is hard to get definite information on the implementation
of Computalker.
Because it is a commercial device, circuit diagrams are not published.
It is certainly an analogue rather than a digital implementation.
The designer suggests that a configuration like that of Figure 11.2 is used
for the formant filters (Rice, 1976).
.[
Rice 1976 Byte
.]
.FC "Figure 11.2"
Control is obtained over the resonant frequency by varying the resistance
at the bottom in sympathy with the parameter value.
The middle two operational amplifiers can be modelled by a resistance
$-R/k$ in the forward path, where k is the digital control value.
This gives the circuit in Figure 11.3, which can be analysed to obtain
the transfer function
.LB
.EQ
- ~ k over {R~R sub 1 C sub 2 C sub 3} ~ . ~ {R sub 2 C sub 2 ~s ~+~1} over
{ s sup 2 ~+~~
( 1 over {R sub 3 C sub 3} ~+~ {k R sub 2} over {R~R sub 1 C sub 3})~s ~~+~
k over {R~R sub 1 C sub 2 C sub 3}} ~ .
.EN
.LE
.FC "Figure 11.3"
.pp
This expression has a DC gain of \-1, and the denominator is similar to those
of the analogue formant resonators discussed in Chapter 5.
However, unlike them the transfer function has a numerator which creates
a zero at
.LB
.EQ
s~~=~~-~ 1 over {R sub 2 C sub 2} ~ .
.EN
.LE
If  $R sub 2 C sub 2$  is sufficiently small, this zero will have
negligible effect at audio frequencies, and the filter has
the following parameters:
.LB
centre frequency:    $~ mark
1 over {2 pi}~~( k over {R~R sub 1 C sub 2 C sub 3} ~ ) sup 1/2$  Hz
.sp
bandwidth:$lineup
1 over {2 pi}~~( 1 over {R sub 3 C sub 3}~+~
{k R sub 2} over {R~R sub 1 C sub 3} ~ )$  Hz.
.LE
.pp
Note first that the centre frequency is proportional to the square root of
the control value $k$.
Hence a non-linear transformation must be implemented on the control
signal, after D/A conversion, to achieve the required logarithmic relationship
between parameter value and resonant frequency.
The formant bandwidth is not constant, as it should be (see Chapter 5),
but depends upon the control value $k$.
This dependency can be minimized by selecting component values such that
.LB
.EQ
{k R sub 2} over {R~R sub 1 C sub 3}~~<<~~1 over {R sub 3 C sub 3}
.EN
.LE
for the largest value of $k$ which can occur.
Then the bandwidth is solely determined by the time constant  $R sub 3 C sub 3$.
.pp
The existence of the zero can be exploited for the fricative resonance.
This should have zero DC gain, and so the component values for the fricative
filter should make the time-constant  $R sub 2 C sub 2$  large enough to place
the zero sufficiently near the frequency origin.
.rh "Market orientation."
As mentioned above, Computalker is designed for the computer hobbies market.
Figure 11.4 shows a photograph of the device.
.FC "Figure 11.4"
It plugs into the S\-100 bus which has been a
.ul
de facto
standard for hobbyists for several years, and has recently been adopted
as a standard by the Institute of Electrical and Electronic Engineers.
This makes it immediately accessible to many microcomputer systems.
.pp
An inexpensive synthesis-by-rule program, which runs on
the popular 8080 microprocessor, is available to drive Computalker.
The input is coded in a machine-readable version of the standard phonetic
alphabet, similar to that which was introduced in Chapter 2 (Table 2.1).
Stress digits may appear in the transcription, and the program caters for
five levels of stress.
The punctuation mark at the end of an utterance has some effect on pitch.
The program is perhaps remarkable in that it occupies only 6\ Kbyte of storage
(including phoneme tables), and runs on an 8-bit microprocessor
(but not in real time).
It is, however,
.ul
un\c
remarkable in that it produces rather poor speech.
According to a demonstration cassette,
"most people find the speech to be readily intelligible,
especially after a little practice listening to it,"
but this seems extremely optimistic.
It also cunningly insinuates that if you don't understand it, you yourself
may share the blame with the synthesizer \(em after all,
.ul
most
people do!
Nevertheless, Computalker has made synthetic speech accessible to a large
number of home computer users.
.sh "11.2  Sound-segment synthesizer"
.pp
Votrax was the first fully commercial speech synthesizer, and at the time of
writing is still the only off-the-shelf speech output
peripheral (as distinct from reading machine) which is aimed
specifically at synthesis-by-rule rather than storage of parameter tracks
extracted from natural utterances.
Figure 11.5 shows a photograph of the Votrax ML-I.
.FC "Figure 11.5"
.pp
Votrax accepts as input a string of codes representing sound segments,
each with additional bits to control the duration and pitch of the segment.
In the earlier versions (eg model VS-6) there are 63 sound segments, specified
by a 6-bit code, and two further bits accompany each segment to provide a
4-level control over pitch.
Four pitch levels are quite inadequate to generate acceptable intonation
contours for anything but isolated words spoken in citation form.
However, a later model (ML-I) uses an 8-level pitch specification,
as well as a 4-level duration qualifier,
associated with each sound segment.
It provides a vocabulary of 80 sound segments, together with an additional
code which allows local amplitude modifications and extra duration alterations
to following segments.
A further, low-cost model (VS-K) is now available which plugs in to the S\-100
bus, and
is aimed primarily at
computer hobbyists.
It provides no pitch control at all and is therefore
quite unsuited to serious voice response applications.
The device has recently been packaged as an LSI circuit (model SC\-01),
using analogue switched-capacitor filter technology.
.pp
One point where the ML-I scores favourably over other speech synthesis
peripherals is the remarkably convenient engineering of its
computer interface, which was outlined in the previous chapter.
.pp
The internal workings of Votrax are not divulged by the manufacturer.
Figure 11.6 shows a block diagram at the level of detail that they supply.
.FC "Figure 11.6"
It seems to be essentially a formant synthesizer with analogue function
generators and parameter smoothing circuits that provide transitions between
sound segments.
.rh "Sound segments."
The 80 segments of the high-range ML-I model
are summarized in Table 11.2.
.FC "Table 11.2"
They are divided into phoneme classes according to the
classification discussed in Chapter 2.
The segments break down into the following categories.
(Numbers in parentheses are the corresponding figures for VS-6.)
.LB "00 (00) "
.NI "00 (00) "
11 (11) vowel sounds which are representative of the phonological
vowel classes for English
.NI "00 (00) "
\09 \0(7) vowel allophones, with slightly different sound qualities from the
above
.NI "00 (00) "
20 (15) segments whose sound qualities are identical to the segments above, but with
different durations
.NI "00 (00) "
22 (22) consonant sounds which are representative of the phonological
consonant classes for English
.NI "00 (00) "
11 \0(6) consonant allophones
.NI "00 (00) "
\04 \0(0) segments to be used in conjunction with unvoiced plosives to increase
their aspiration
.NI "00 (00) "
\02 \0(2) silent segments, with different pause durations
.NI "00 (00) "
\01 \0(0) very short silent segment (about 5\ msec).
.LE "00 (00) "
Somewhat under half of the 80 elements
can be put into one-to-one correspondence with the phonemes of English;
the rest are either allophonic variations or additional sounds which can
sensibly be combined with certain phonemes in certain contexts.
The Votrax literature, and consequently Votrax users, persists in calling
all elements "phonemes", and this can cause considerable confusion.
I prefer to use the term "sound segment" instead, reserving "phoneme" for its
proper linguistic use.
.pp
The rules which Votrax uses for transitions between sound segments are not
made public by the manufacturer, and are embedded in encapsulated circuits
in the hardware.
They are clearly very crude.
The key to successful encoding of utterances is to use the many
non-phonemic segments in an appropriate way as transitions between the main
segments which represent phonetic classes.  This is a tricky process, and
I have heard of one commercial establishment giving up in despair at the
extreme difficulty of generating the utterances it wanted.
It probably explains the proliferation of letter-to-sound rules for
Votrax which have been developed in research laboratories
(Colby
.ul
et al,
1978; Elovitz
.ul
et al,
1976; McIlroy, 1974; Sherwood, 1978).
.[
Colby Christinaz Graham 1978
.]
.[
Elovitz 1976 IEEE Trans Acoustics Speech and Signal Processing
.]
.[
McIlroy 1974
.]
.[
Sherwood 1978
.]
Nevertheless, with luck, skill, and especially persistence,
excellent results can be
obtained.  The ML-I manual (Votrax, 1976) contains a list of about 625 words and short phrases,
and they are usually clearly recognizable.
.[
Votrax 1976
.]
.rh "Duration and pitch qualifiers."
Each sound segment has a different duration.
Table 11.2 shows the measured duration of the segments, although no
calibration data is given by Votrax.
As mentioned earlier, a 2-bit number accompanies each segment to modify
its duration, and
this was set to 3 (least duration) for the measurements.
The qualifier has a multiplicative effect, shown in Table 11.3.
.RF
.nr x1 (\w'rate qualifier'/2)
.nr x2 (\w'in Table 11.2 by'/2)
.nr x0 \n(x1+2i+\w'00'+\n(x2
.nr x3 (\n(.l-\n(x0)/2
.in \n(x3u
.ta \n(x1u +2i
\l'\n(x0u\(ul'
.sp
.nr x2 (\w'multiply duration'/2)
rate qualifier		\0\0\h'-\n(x2u'multiply duration
.nr x2 (\w'in Table 11.2 by'/2)
		\0\0\h'-\n(x2u'in Table 11.2 by
\l'\n(x0u\(ul'
.sp
	3	1.00
	2	1.11
	1	1.22
	0	1.35
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 11.3  Effect of the 2-bit per-segment rate qualifier"
.pp
As well as the 2-bit rate qualifier, each sound segment is accompanied by
a 3-bit pitch specification.  This provides a linear control over fundamental
frequency, and Table 11.4 shows the measured values.
.RF
.nr x1 (\w'pitch specifier'/2)
.nr x2 (\w'pitch (Hz)'/2)
.nr x0 \n(x1+1.5i+\n(x2
.nr x3 (\n(.l-\n(x0)/2
.in \n(x3u
.ta \n(x1u +1.5i
\l'\n(x0u\(ul'
.sp
pitch specifier	\h'-\n(x2u'pitch (Hz)
\l'\n(x0u\(ul'
.sp
	0	\057.5
	1	\064.1
	2	\069.4
	3	\075.8
	4	\080.6
	5	\087.7
	6	\094.3
	7	100.0
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 11.4  Effect of the 3-bit per-segment pitch specifier"
The quantization interval varies from
one to two semitones.
Votrax interpolates pitch from phoneme to phoneme in a highly satisfactory
manner, and this permits surprisingly sophisticated intonation contours
to be generated considering the crude 8-level quantization.
.pp
The notation in which the Votrax manual defines utterances
gives duration qualifiers and pitch specifications as digits
preceding the sound segment, and separated from it by a slash (/).
Thus, for example,
.LB
14/THV
.LE
defines the sound segment THV with duration qualifier 1 (multiplies the
70\ msec duration of Table 11.2 by 1.22 \(em from Table 11.3 \(em to give 85\ msec)
and pitch specification 4 (81 Hz).
This representation of a segment is transformed into two ASCII characters before transmission
to the synthesizer.
.rh "Converting a phonetic transcription to sound segments."
It would be useful to have a computer procedure to produce a specification for
an utterance in terms of Votrax sound segments from a standard phonetic
transcription.
This could remove much of the tedium from utterance preparation
by incorporating the contextual rules given in the Votrax manual.
Starting with a phonetic transcription, each phoneme should be converted
to its default Votrax representative.
The resulting "wide" Votrax transcription must be
transformed into a "narrow" one by application of contextual rules.
Separate rules are needed for
.LB
.NP
vowel clusters (diphthongs)
.NP
vowel transitions (ie consonant-vowel and vowel-consonant,
where the vowel segment is altered)
.NP
intervocalic consonants
.NP
consonant transitions (ie consonant-vowel and vowel-consonant,
where the consonant segment is altered)
.NP
consonant clusters
.NP
stressed-syllable effects
.NP
utterance-final effects.
.LE
Stressed-syllable effects (which include
extra aspiration for unvoiced stops beginning stressed syllables)
can be applied only if stress markers are included in the phonetic
transcription.
.pp
To specify a rule, it is necessary to give a
.ul
matching part
and a
.ul
context,
which define at what points in an utterance it is applicable, and a
.ul
replacement part
which is used to replace the matching part.
The context can be specified in mathematical set notation using curly brackets.
For example,
.LB
{G SH W K} OO		IU OO
.LE
states that the matching part OO is replaced by IU OO, after a G, SH, W, or K.
In fact, allophonic variations of each sound segment
should also be accepted as valid context, so this rule will also replace OO
after .G, CH, .W, .K, or .X1 (Table 11.2 gives allophones of each segment).
.pp
Table 11.5 gives some rules that have been used for this purpose.
.FC "Table 11.5"
They were derived from careful study of the hints given in the
ML-I manual (Votrax, 1976).
.[
Votrax 1976
.]
Classes such as "voiced" and "stop-consonant" in the context specify sets
of sound segments in the obvious way.
The beginning of a stressed syllable is marked in the input by ".syll".
Parentheses in the replacement part have a significance which is explained in
the next section.
.rh "Handling prosodic features."
We know from Chapter 8 the vital importance of prosodic features
in synthesizing lifelike speech.
To allow them to be assigned to Votrax utterances, an intermediate
output from a prosodic analysis program like ISP can be used.
For example,
.LB
1  \c
.ul
dh i s  i z  /*d zh aa k s  /h aa u s;
.LE
which specifies "this is Jack's house" in a declarative intonation with
emphasis on the "Jack's", can be intercepted in the following form:
.LB
\&.syll
.ul
dh\c
\ 50\ (0\ 110)
.ul
i\c
\ 60
.ul
s\c
\ 90\ (0\ 99)
.ul
i\c
\ 60
.ul
z\c
\ 60\ (50\ 110)
\&.syll
.ul
d\c
\ 50\ (0\ 110)
.ul
zh\c
\ 50
.ul
aa\c
\ 90
.ul
k\c
\ 120\ (10\ 90)
.ul
s\c
\ 90
\&.syll
.ul
h\c
\ 60
.ul
aa\c
\ 140
.ul
u\c
\ 60
.ul
s\c
\ 140
^\ 50\ (40\ 70) .
.LE
Syllable boundaries, pitches, and durations have been assigned by the
procedures given earlier (Chapter 8).
A number always follows each phoneme to specify its duration
(in msec).
Pairs of numbers in parentheses define a pitch specification at some
point during the preceding phoneme:  the first number of the pair defines
the time offset of the specification from the beginning
of the phoneme, while the second gives the pitch itself (in Hz).
This form of utterance specification can then be passed to a Votrax
conversion procedure.
.pp
The phonetic transcription is converted
to Votrax sound segments using the method described above.  The "wide" Votrax
transcription is
.LB
\&.syll THV I S I Z .syll D ZH AE K S .syll H AE OO S PA0 ;
.LE
which is transformed to the following "narrow" one according to the rules
of Table 11.5:
.LB
\&.syll THV I S I Z .syll D J (AE EH3) K S .syll H1 (AH1 .UH2) (O U)
S PA0 .
.LE
The duration and pitch specifications are preserved by the transformation
in their original positions in the string, although they are not shown above.
The next stage uses them to expand the transcription by adjusting
the segments to have durations as close as possible to the specifications, and
computing pitch numbers to be associated with each phoneme.
.pp
Correct duration-expansion can, in general, require a great amount of
computation.
Associated with each sound segment is a set of elements with the same sound quality
but different durations, formed by attaching each of the four duration
qualifiers of Table 11.3 to the segment and any others which are
sound-equivalents to it.  For example, the segment Z has the duration-set
.LB
{3/Z   2/Z   1/Z   0/Z}
.LE
with durations
.LB
{ 70   78   85   95}
.LE
msec respectively, where the initial numerals denote the duration qualifier.
The segment I has the much larger duration-set
.LB
{3/I2   2/I2   1/I2   0/I2   3/I1   2/I1   1/I1   0/I1   3/I   2/I   1/I   0/I}
.LE
with durations
.LB
{ 58   64   71   78   83   92   101   112   118   131   144   159},
.LE
because segments I1 and I2 are sound-equivalents to it.
Duration assignment is a matter of selecting elements from the
duration-set whose total duration is as close as possible to that desired
for the segment.
It happens that Votrax deals sensibly with concatenations of more than one
identical plosive, suppressing the stop burst on all but the last.
Although the general problem of approximating durations in
this way is computationally demanding, a simple recursive exhaustive search
works in a reasonable amount of time because the desired duration is usually
not very much greater than the longest member of the duration-set, and so
the search terminates quite quickly.
.pp
At this point, the role of the parentheses which appear on the right-hand side
of Table 11.5 becomes apparent.  Because durations are only associated with
the input phonemes, which may each be expanded into several Votrax
segments, it is necessary to keep track of the segments which have descended
from a single phoneme.
Target durations are simply spread equally across any parenthesized groups
to which they apply.
.pp
Having expanded durations, mapping pitches on to the sound segments is
a simple matter.  The ISP system for formant synthesizers (Chapters 7 and 8)
uses linear interpolation between pitch specifications, and the frequency which
results for each sound segment needs to be converted to a Votrax specification
using the information in Table 11.4.
.pp
After applying these procedures to the example utterance, it becomes
.LB
14/THV  14/I1  03/S  14/I1  04/Z  04/D  04/J  33/AE  33/EH3  \c
02/K  02/K  02/S  02/H1  01/AH2  01/.UH2  31/O2  31/U1  01/S  \c
10/S  30/PA0  30/PA0  .
.LE
In several places, shorter sound-equivalents have been substituted
(I1 for I, AH2 for AH1, O2 for O, and U1 for U), while doubling-up also occurs
(in the K, S, and PA0 segments).
.pp
The speech which results from the use of these procedures with the
Votrax synthesizer sounds remarkably similar to that generated by the
ISP system which uses
parametrically-controlled synthesizers.  Formal evaluation experiments have
not been undertaken, but it seems clear from careful listening that it would
be rather difficult, and probably pointless, to evaluate the Votrax conversion
algorithm, for the outcome would be completely dominated by the success of the
original pitch and rhythm assignment procedures.
.sh "11.3  Linear predictive synthesizer"
.pp
The first single-chip speech synthesizer was introduced by
Texas Instruments (TI) in the summer of 1978 (Wiggins and Brantingham, 1978).
.[
Wiggins Brantingham 1978
.]
It was a remarkable development, combining recent advances in signal processing
with the very latest in VLSI technology.
Packaged in the Speak 'n Spell toy (Figure 11.7), it was a striking demonstration
of imagination and prowess in integrated electronics.
.FC "Figure 11.7"
It gave TI a long lead over its competitors and surprised many experts
in the speech field.
.EQ
delim @@
.EN
Overnight, it seemed, digital speech technology had descended from
research laboratories with their expensive and specialized equipment into
a $50.00 consumer item.
.EQ
delim $$
.EN
Naturally TI did not sell the chip separately but only as part of their
mass-market product; nor would they make available information on how to
drive it directly.
Only recently when other similar devices appeared on the market did they
unbundle the package and sell the chip.
.rh "The Speak 'n Spell toy."
The TI chip (TMC0280) uses the linear predictive method of synthesis,
primarily because of the ease of the speech analysis procedure and the known
high quality at low data rates.
Speech researchers, incidentally, sometimes scoff at what they perceive to be
the poor quality of the toy's speech; but considering the data rate
used (which averages 1200 bits per second of speech) it is remarkably good.
Anyway, I have never heard a child complain! \(em although it is not uncommon
to misunderstand a word.
Two 128\ Kbit read-only memories are used in the toy to hold data for about
330 words and phrases \(em lasting between 3 and 4 minutes \(em of speech.
At the time (mid-1978) these memories were the largest that were available
in the industry.
The data flow and user dialogue are handled by a microprocessor,
which is the fourth LSI circuit in the photograph of Figure 11.8.
.FC "Figure 11.8"
.pp
A schematic diagram of the toy is given in Figure 11.9.
.FC "Figure 11.9"
It has a small display which shows upper-case letters.
(Some teachers of spelling hold that the lack of lower case destroys
any educational value that the toy may have.)  It
has a full 26-key alphanumeric keyboard with 14 additional control keys.
(This is the toy's Achilles' heel, for the keys fall out after extended use.
More recent toys from TI use an improved keyboard.)  The
keyboard is laid out alphabetically instead of in QWERTY order; possibly
missing an opportunity to teach kids to type as well as spell.
An internal connector permits vocabulary expansion with up to 14 more
read-only memory chips.
Controlling the toy is a 4-bit microprocessor (a modified TMS1000).
However, the synthesizer chip does not receive data from the processor.
During speech, it accesses the memory directly and only returns control
to the processor when an end-of-phrase marker is found in the data stream.
Meanwhile the processor is idle, and cannot even be interrupted from the
keyboard.
Moreover, in one operational mode ("say-it") the toy embarks upon a long
monologue and remains deaf to the keyboard \(em it cannot even be turned off.
Any three-year-old will quickly discover that a sharp slap solves the problem!
A useful feature is that the device switches itself off if unused for more
than a few minutes.
A fascinating account of the development of the toy from the point of view
of product design and market assessment has been published
(Frantz and Wiggins, 1981).
.[
Frantz Wiggins 1981
.]
.rh "Control parameters."
The lattice filtering method of linear predictive synthesis (see Chapter 6)
was selected because of its good stability properties and guaranteed
performance with small word sizes.
The lattice has 10 stages.
All the control parameters are represented as 10-bit fixed-point numbers,
and the lattice operates with an internal precision of 14 bits (including
sign).
.pp
There are twelve parameters for the device:  ten reflection coefficients,
energy, and pitch.
These are updated every 20\ msec.
However, if 10-bit values were stored for each, a data rate of 120 bits
every 20\ msec, or 6\ Kbit/s, would be needed.
This would reduce the capacity of the two read-only memory chips to well
under a minute of speech \(em perhaps 65 words and phrases.
But one of the desirable properties of the reflection coefficients
which drive the lattice filter is that they are amenable to quantization.
A non-linear quantization scheme is used, with the parameter data addressing
an on-chip quantization table to yield a 10-bit coefficient.
.pp
Table 11.6 shows the number of bits devoted to each parameter.
.RF
.in+0.3i
.ta \w'repeat flag00'u +1.3i +0.8i
.nr x0 \w'repeat flag00'+1.3i+\w'00'+(\w'size (10-bit words)'/2)
\l'\n(x0u\(ul'
.nr x1 (\w'bits'/2)
.nr x2 (\w'quantization table'/2)
.nr x3 0.2m
parameter	\0\h'-\n(x1u'bits	\0\0\h'-\n(x2u'quantization table
.nr x2 (\w'size (10-bit words)'/2)
		\0\0\h'-\n(x2u'size (10-bit words)
\l'\n(x0u\(ul'
.sp
energy	\04	\016	\v'\n(x3u'_\v'-\n(x3u'\z4\v'\n(x3u'_\v'-\n(x3u'  energy=0 means 4-bit frame
pitch	\05	\032
repeat flag	\01	\0\(em	\z1\v'\n(x3u'_\v'-\n(x3u'\z0\v'\n(x3u'_\v'-\n(x3u'  repeat flag =1 means 10-bit frame
k1	\05	\032
k2	\05	\032
k3	\04	\016
k4	\04	\016	\z2\v'\n(x3u'_\v'-\n(x3u'\z8\v'\n(x3u'_\v'-\n(x3u'  pitch=0 (unvoiced) means 28-bit frame
k5	\04	\016
k6	\04	\016
k7	\04	\016
k8	\03	\0\08
k9	\03	\0\08
k10	\03	\0\08	\z4\v'\n(x3u'_\v'-\n(x3u'\z9\v'\n(x3u'_\v'-\n(x3u'  otherwise 49-bit frame
	__	___
.sp
	49 bits	216 words
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in-0.3i
.FG "Table 11.6  Bit allocation for Speak 'n Spell chip"
There are 4 bits for energy, and 5 bits for pitch and the first two
reflection coefficients.
Thereafter the number of bits allocated to reflection coefficients decreases
steadily, for higher coefficients are less important for intelligibility
than lower ones.
(Note that using a 10-stage filter is tantamount to allocating
.ul
no
bits to coefficients higher than the tenth.)  With a
1-bit "repeat" flag, whose role is discussed shortly, the frame size
becomes 49 bits.
Updated every 20\ msec, this gives a data rate of just under 2.5\ Kbit/s.
.pp
The parameters are expanded into 10-bit numbers by a separate quantization
table for each one.
For example, the five pitch bits address a 32-word look-up table which
returns a 10-bit value.
The transformation is logarithmic in this case, the lowest pitch being
around 50 Hz and the highest 190 Hz.
As shown in Table 11.6, a total of 216 10-bit words suffices to hold all
twelve quantization tables; and they are implemented on the synthesizer
chip.
To provide further smoothing of the control parameters,
they are interpolated linearly from one frame to the next at eight points
within the frame.
.pp
The raw data rate of 2.5\ Kbit/s is reduced to an average of 1200\ bit/s
by further coding techniques.
Firstly, if the energy parameter is zero the frame is silent,
and no more parameters are transmitted (4-bit frame).
Secondly, if the "repeat" flag is 1 all reflection coefficients are held
over from the previous frame, giving a constant filter but with the ability
to vary amplitude and pitch (10-bit frame).
Finally, if the frame is unvoiced (signalled by the pitch value being zero)
only four reflection coefficients are transmitted, because the ear is
relatively insensitive to spectral detail in unvoiced speech (28-bit frame).
The end of the utterance is signalled by the energy bits all being 1.
.rh "Chip organization."
The configuration of the lattice filter is shown in Figure 11.10.
.FC "Figure 11.10"
The "two-multiplier" structure (Chapter 6) is used, so the 10-stage filter
requires 19 multiplications and 19 additions
per speech sample.
(The last operation in the reverse path at the bottom is not needed.)  Since
a 10\ kHz sample rate is used, just 100\ $mu$sec are available for each
speech sample.
A single 5\ $mu$sec adder and a pipelined multiplier are implemented on
the chip, and multiplexed among the 19 operations.
The latter begins a new multiplication every 5\ $mu$sec, and finishes it
40\ $mu$sec later.
These times are within the capability of p-channel MOS technology,
allowing the chip to be produced at low cost.
The time slot for the 20'th, unnecessary, filter multiplication is used
for an overall gain adjustment.
.pp
The final analogue signal is produced by an 8-bit on-chip D/A converter
which drives a 200 milliwatt speaker through an impedance-matching
transformer.
These constitute the necessary analogue low-pass desampling filter.
.pp
Figure 11.11 summarizes the organization of the synthesis chip.
.FC "Figure 11.11"
Serial data enters directly from the read-only memories, although a control
signal from the processor begins synthesis and another signal is returned
to it upon termination.
The data is decoded into individual parameters, which are used to address
the quantization tables to generate the full 10-bit parameter
values.
These are interpolated from one frame to the next.
The lower part of the Figure shows the speech generation subsystem.
An excitation waveform for voiced speech is stored in read-only
memory and read out repeatedly at a rate determined by the pitch.
The source for unvoiced sounds is hard-limited noise provided by a digital
pseudo-random bit generator.
The sound source that is used depends on whether the pitch value is zero
or not:  notice that this precludes mixed excitation for voiced fricatives
(and the sound is noticeably poor in words like "zee").
A gain multiplication is performed before the signal is passed through the
lattice synthesis filter, described earlier.
.sh "11.4  Programmable signal processors"
.pp
The TI chip has a fixed architecture, and is destined forever
to implement the same vocal tract model \(em a 10'th order lattice filter.
A more recent device, the Programmable Digital Signal Processor
(Caldwell, 1980) from Telesensory Systems allows more flexibility
in the type of model.
.[
Caldwell 1980
.]
It can serve as a digital formant synthesizer or a linear predictive
synthesizer, and the order of model (number of formants, in the former case)
can be changed.
.pp
Before describing the PDSP, it is worth looking at an earlier microprocessor
which was designed for digital signal processing.
Some industry observers have said that this processor, the Intel 2920,
is to the analogue design engineer what the first microprocessor was to
the random logic engineer way back in the mists of time (early 1970's).
.rh "The 'analogue microprocessor'."
The 2920 is a digital microprocessor.
However, it contains an on-chip D/A converter, which can be used in
successive approximation fashion for A/D conversion under program control,
and its architecture is designed to aid digital signal processing calculations.
Although the precision of conversion is 9 bits, internal arithmetic is
done with 25 bits to accomodate the accumulation of round-off errors in
arithmetic operations.
An on-chip programmable read-only memory holds a 192-instruction program,
which is executed in sequence with no program jumps allowed.
This ensures that each pass through the program takes the same time,
so that the analogue waveform is regularly sampled and processed.
.pp
The device is implemented in n-channel MOS technology, which makes it
slightly faster than the pMOS Speak 'n Spell chip.
At its fastest operating speed each instruction takes 400 nsec.
The 192-instruction program therefore executes in 78.6\ $mu$sec, corresponding
to a sampling rate of almost 13\ kHz.
Thus the processor can handle signals with a bandwidth of 6.5\ kHz \(em ample
for high-quality speech.
However, a special EOP (end of program) instruction is provided which
causes an immediate jump back to the beginning.
Hence if the program occupies less than 192 instructions, faster sampling
rates can be used.
For example, a single second-order formant resonance
requires only 14 instructions and so can
be executed at over 150\ kHz.
.pp
Despite this speed, the 2920 is only marginally capable of synthesizing
speech.
Table 11.7 gives approximate numbers of instructions needed to do some
subtasks for speech generation (Hoff and Li, 1980).
.[
Hoff Li 1980 Software makes a big talker
.]
.RF
.nr x0 \w'parameter entry and data distribution0000'+\w'00000'
.nr x1 \w'instructions'
.nr x2 (\n(.l-\n(x0)/2
.in \n(x2u
.ta \w'parameter entry and data distribution0000'u
\l'\n(x0u\(ul'
.sp
task	\0\0\0\0\0\h'-\n(x1u'instructions
\l'\n(x0u\(ul'
.sp
parameter entry and data distribution	35\-40
glottal pulse generation	\0\0\0\08
noise generation	\0\0\011
lattice section	\0\0\020
formant filter	\0\0\014
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.in 0
.FG "Table 11.7  2920 instruction counts for typical speech subsystems"
The parameter entry and data distribution procedure
collects 10 8-bit parameters from a serial input stream, at a frame rate of
100 frames/s.
The parameter data rate is 8\ Kbit/s, and the routine assumes that the
2920 performs each complete cycle in 125\ $mu$sec to generate sampled speech
at 8\ kHz.
Therefore one bit of parameter data is accepted on every cycle.
The glottal pulse program generates an asymmetrical triangular waveform
(Chapter 5), while the noise generator uses a 17-bit pseudo-random feedback
shift register.
About 30% of the 192-instruction program memory is consumed by these
essential tasks.
A two-multiplier lattice section takes 20 instructions,
and so only six sections can fit into the remaining program space.
It may be possible to use two 2920's to implement a complete 10 or 12'th
order lattice, but the results of the first stage must be passed to the
second by transmitting analogue or digital data between each of the
2920's analogue ports \(em not a terribly satisfactory method.
.pp
Since a formant filter occupies only 14 instructions, up to nine of them
would fit in the program space left after the above-mentioned essential
subsystems.
Although other necessary house-keeping tasks may reduce this number
substantially,
it does seem possible to implement a formant synthesizer on a single 2920.
.rh "The Programmable Digital Signal Processor."
Whereas the 2920 is intended for general signal-processing jobs,
Telesensory Systems' PDSP
(Programmable Digital Signal Processor) is aimed specifically at speech
synthesis.
It comprises two separate chips, a control unit and an arithmetic unit.
To build a synthesizer these must be augmented with external memory
and a D/A converter, arranged in a configuration like that of Figure 11.12.
.FC "Figure 11.12"
.pp
The control unit accepts parameter data from a host computer, one byte at a time.
The data is temporarily held in buffer memory before being serialized and passed
to the arithmetic unit.
Notice that for the 2920 we assumed that parameters were presented
to the chip already serialized and precisely timed:  the PDSP control unit
effectively releases the host from this high-speed real-time operation.
But it does more.
It generates both a voiced and an unvoiced excitation source and passes them
to the arithmetic unit, to relieve the latter of the general-purpose
programming required for both these tasks and allow its instruction set
to be highly specialized for digital filtering.
.pp
The arithmetic unit has rather a peculiar structure.
It accomodates only 16 program steps and can execute the full 16-instruction
program at a rate of 10\ kHz.
The internal word-length is 18 bits, but coefficients and the digital output
are only 10 bits.
Each instruction can accomplish quite a lot of work.
Figure 11.13 shows that there are four separate blocks of store in addition
to the program memory.
.FC "Figure 11.13"
One location of each block is automatically associated with each program step.
Thus on instruction 2, for example, two 18-bit scratchpad registers MA(2)
and MB(2), and two 10-bit coefficient registers A1(2) and A2(2), are
accessible.
In addition five general registers, curiously numbered R1, R2, R5, R6, R7,
are available to every program step.
.pp
Each instruction has five fields.
A single instruction loads all the general registers and simultaneously
performs two multiplications and up to three additions.
The fields specify exactly which operands are involved in these operations.
.pp
The instructions of the PDSP arithmetic unit are really very powerful.
For example, a second-order digital formant resonator requires only
two program steps.
A two-multiplier lattice stage needs only one step, and
a complete 12-stage lattice filter can be implemented in the 16 steps available.
An important feature of the architecture is that it
is quite easy to incorporate more than one
arithmetic unit into a system, with a single control unit.
Intermediate data can be transferred digitally between arithmetic units
since the D/A converter is off-chip.
A four-multiplier normalized lattice (Chapter 6) with 12 stages can be implemented
on two arithmetic units, as can a lattice filter which incorporates zeros
as well as poles, and a complex series/parallel formant synthesizer
with a total of 12 resonators whose centre frequencies and bandwidths
can be controlled independently (Klatt, 1980).
.[
Klatt 1980
.]
.pp
How this device will fare in actual commercial products is yet to be seen.
It is certainly much more sophisticated than the TI Speak 'n Spell chip,
and a complete system will necessitate a much higher chip count and consequently
more expense.
Telesensory Systems are committed to producing a text-to-speech
system based upon it
for use both in a reading machine for the blind and as a text-input
speech-output computer peripheral.
.sh "11.5  References"
.LB "nnnn"
.[
$LIST$
.]
.LE "nnnn"
.bp
.ev2
.ta \w'\fIsilence\fR 'u +\w'.EH100'u +\w'(used to change amplitude and duration)00'u +\w'00000000000test word'u
.nr x0 \w'\fIsilence\fR '+\w'.EH100'+\w'(used to change amplitude and duration)00'+\w'00000000000test word'
\l'\n(x0u\(ul'
.sp
.nr x1 (\w'Votrax'/2)
.nr x2 (\w'duration (msec)'/2)
.nr x3 \w'test word'
	\h'-\n(x1u'Votrax		\0\h'-\n(x2u'duration (msec)	\h'-\n(x3u'test word
\l'\n(x0u\(ul'
.sp
.nr x3 \w'hid'
\fIi\fR	I		118	\h'-\n(x3u'hid
	I1	(sound equivalent of I)	\083
	I2	(sound equivalent of I)	\058
	I3	(allophone of I)	\058
	.I3	(sound equivalent of I3)	\083
	AY	(allophone of I)	\065
.nr x3 \w'head'
\fIe\fR	EH		118	\h'-\n(x3u'head
	EH1	(sound equivalent of EH)	\070
	EH2	(sound equivalent of EH)	\060
	EH3	(allophone of EH)	\060
	.EH2	(sound equivalent of EH3)	\070
	A1	(allophone of EH)	100
	A2	(sound equivalent of A1)	\095
.nr x3 \w'had'
\fIaa\fR	AE		100	\h'-\n(x3u'had
	AE1	(sound equivalent of AE)	100
.nr x3 \w'hod'
\fIo\fR	AW		235	\h'-\n(x3u'hod
	AW2	(sound equivalent of AW)	\090
	AW1	(allophone of AW)	143
.nr x3 \w'hood'
\fIu\fR	OO		178	\h'-\n(x3u'hood
	OO1	(sound equivalent of OO)	103
	IU	(allophone of OO)	\063
.nr x3 \w'hud'
\fIa\fR	UH		103	\h'-\n(x3u'hud
	UH1	(sound equivalent of UH)	\095
	UH2	(sound equivalent of UH)	\050
	UH3	(allophone of UH)	\070
	.UH3	(sound equivalent of UH3)	103
	.UH2	(allophone of UH)	\060
.nr x3 \w'hard'
\fIar\fR	AH1		143	\h'-\n(x3u'hard
	AH2	(sound equivalent of AH1)	\070
.nr x3 \w'hawed'
\fIaw\fR	O		178	\h'-\n(x3u'hawed
	O1	(sound equivalent of O)	118
	O2	(sound equivalent of O)	\083
	.O	(allophone of O)	178
	.O1	(sound equivalent of .O)	123
	.O2	(sound equivalent of .O)	\090
.nr x3 \w'who d'
\fIuu\fR	U		178	\h'-\n(x3u'who'd
	U1	(sound equivalent of U)	\090
.nr x3 \w'heard'
\fIer\fR	ER		143	\h'-\n(x3u'heard
.nr x3 \w'heed'
\fIee\fR	E		178	\h'-\n(x3u'heed
	E1	(sound equivalent of E)	118
\fIr\fR	R		\090
	.R	(allophone of R)	\050
\fIw\fR	W		\083
	.W	(allophone of W)	\083
\l'\n(x0u\(ul'
.sp3
.ce
Table 11.2  Votrax sound segments and their durations
.bp
\l'\n(x0u\(ul'
.sp
.nr x1 (\w'Votrax'/2)
.nr x2 (\w'duration (msec)'/2)
.nr x3 \w'test word'
	\h'-\n(1u'Votrax		\0\h'-\n(x2u'duration (msec)	\h'-\n(x3u'test word
\l'\n(x0u\(ul'
.sp
\fIl\fR	L		105
	L1	(allophone of L)	105
\fIy\fR	Y		103
	Y1	(allophone of Y)	\083
\fIm\fR	M		105
\fIb\fR	B		\070
\fIp\fR	P		100
	.PH	(aspiration burst for use with P)	\088
\fIn\fR	N		\083
\fId\fR	D		\050
	.D	(allophone of D)	\053
\fIt\fR	T		\090
	DT	(allophone of T)	\050
	.S	(aspiration burst for use with T)	\070
\fIng\fR	NG		120
\fIg\fR	G		\075
	.G	(allophone of G)	\075
\fIk\fR	K		\075
	.K	(allophone of K)	\080
	.X1	(aspiration burst for use with K)	\068
\fIs\fR	S		\090
\fIz\fR	Z		\070
\fIsh\fR	SH		118
	CH	(allophone of SH)	\055
\fIzh\fR	ZH		\090
	J	(allophone of ZH)	\050
\fIf\fR	F		100
\fIv\fR	V		\070
\fIth\fR	TH		\070
\fIdh\fR	THV		\070
\fIh\fR	H		\070
	H1	(allophone of H)	\070
	.H1	(allophone of H)	\048
\fIsilence\fR	PA0		\045
	PA1		175
	.PA1		\0\05

	.PA2 (used to change amplitude and duration)	\0\0\-
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.sp3
.ce
Table 11.2  (continued)
.bp
.ta 0.8i +2.6i +\w'(AH1 .UH2)  (O U)000'u
.nr x0 0.8i+2.6i+\w'(AH1 .UH2)  (O U)000'+\w'; i uh  \- here'
\l'\n(x0u\(ul'
.sp
vowel clusters
	EH I	A1 AY	; e i  \- hey
	UH OO	O U	; uh u  \- ho
	AE I	(AH1 EH3) I	; aa i  \- hi
	AE OO	(AH1 .UH2) (O U)	; aa u  \- how
	AW I	(O UH) E	; o i  \- hoi
	I UH	E I	; i uh  \- here
	EH UH	(EH A1) EH	; e uh  \- hair
	OO UH	OO UH	; u uh  \- poor
	Y U	Y1 (IU U)
.sp
vowel transitions
	{F M B P} O	(.O1 O)
	{L R} EH	(EH3 EH)
	{B K T D R} UH	(UH3 UH)
	{T D} A1	(EH3 A1)
	{T D} AW	(AH1 AW)
	{W} I	(I3 I)
	{G SH W K} OO	(IU OO)
	AY {K G T D}	(AY Y)
	E {M T}	(E Y)
	I {M T}	(I Y)
	E {L}	(I3 UH)
	EH {R N S D T}	(EH EH3)
	I {R T}	(I I3)
	AE {S N}	(AE EH)
	AE {K}	(AE EH3)
	A1 {R}	(A1 EH1)
	AH1 {R P K}	(AH1 UH)
	AH1 {ZH}	(AH1 EH3)
.sp
intervocalics
	{voiced} T {voiced}	DT
.sp
consonant transitions
	L {EH}	L1
	H {U OO IU}	H1
\l'\n(x0u\(ul'
.sp3
.ce
Table 11.5  Contextual rules for Votrax sound segments
.bp
\l'\n(x0u\(ul'
.sp
consonant clusters
	B {stop-consonant}	(B PA0)
	P {stop-consonant}	(P PA0)
	D {stop-consonant}	(D PA0)
	T {stop-consonant}	(T PA0)
	DT {stop-consonant}	(T PA0)
	G {stop-consonant}	(G PA0)
	K {stop-consonant}	(K PA0)
	{D T} R	(.X1 R)
	K R	.K (.X1 R)
	{consonant} R	.R
	{consonant} L	L1
	K W	.K .W
	D ZH	D J
	T SH	T CH
.sp
initial effects
	{.syll} P {vowel}	(P .PH)
	{.syll} K {vowel}	(K .H1)
	{.syll} T {vowel}	(T .S)
	{.syll} L	L1
	{.syll} H {U OO O AW AH1}	H1
.sp
terminal effects
	E {PA0}	(E Y)
\l'\n(x0u\(ul'
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
.sp3
.ce
Table 11.5  (continued)
.ev
N@```@@@@@@@@@@@@           (   0                                           **  **                              e      **        **  **  **   K      e           P w }L bX 8 Aʀ B7 BXX Br BX B Bx B~ BT B B BK @ - *@ G ` , @ ¼,    V  B, B)H B9d Bb B B, B B B Bp B B? B( (  4d b  $  {  ` e ? ( @ B< BOh BZ Bi BH B B B B Bh B: B  .\ ^8    `< \ h f 4 B` B5L B2T B8 Bc B< B( B B B Bl BH Ak@ - =  Q  ¼   « $  j I4   B>X B_ B_| Bq4 B  B B B B BP BXP A@  , :, ^h  T  ³   ~< j [ 0  A B1 B[ B$ Bx Bo B[l B` BL B] A  B 1 A ft _ ^T m8  p Jd *   B B* BP Bil B B B B Bx B\ Bu B:<   8 A       P   tt fX N  ` B B7  BP Bw BD BL B Bu0 Bp  B Bh B " (d ' ?4 l  £ @ s v f( @ A B B# B: B{ Bx B´ B, B B Bh B BC   . . W    L ´ ¦ ¢D n8 O $T   B B-8 BL< Bgd Bt Bd, BwX B B B B/    2 Yl  © ®(   c OL 7  $ A@ B' BB< Be B BT B B  B B B BT     D ·P 4 ½0  p  x@ T ' B< BAd B\8 Bi( B B B B B Bu BJ B   d@ # iL  ¥@   |  v| `4 (4 @  B@ B@d Bp B0 Bl B B B B4 BL8 @ 1D  & _       8 pT B e B0` B< B_ B B| B B B Bm Bi0 Bw BP  9 /8 S\   ¡   }  {  j FT  B B$h B: B~ Bd B BT B B( BL BP BQT A   =t U  © ʀ ψ ψ   :   B8 B%\ BIt B B  B B Bj BW BJ BG B$  ' ) 4 `8   ²  4 ´L  |@ T , B8 Ba Bx B( B B$ B~ Bjt BN B@ B-D A  5 r  ¦d «h  $ ~ ~ Ol " Aƀ B# B6` Bb B Bd Bd BT B B Bt BP B"      U  ( n< d _P _d F >h   A B=L BS Bb By  B Bv BH B B BC     I y |  X ld d } } =$ Af@ A@ A BK B Bd B Bkt B_L BXD Ba BAT   ' ) 7T [ | ® £  {< X R< < @ B+ BaX Bv B}  B B( B( B~h B|| B  Bq B     P,  £T «X ¯  } Zd , ` B B4 Be\ BD B` BP B( B  B B Bp, B+ l 18 F ]| v$  ­ ¬ £p  c (   B, Bp B B B\ B B B Be BWX B/   Eh R D( g ´ ¿$ d Q k ` 8x B BL B* BZ BD Bt< B B@ B Be0 B[l BP  A , ;< R(   T ʀ £  u0 V #@ B B5 B4< BC Bf\ B$ B B} Bf$ B@ B B BC A!   *8 X< z     L l k r P  A!  A&  B$h Bx B B B B\ Bf BO B6 A@ 7@ j| r wh  ¯ µd    , c  A3  B= BIL Bl8 B B| B BH B B| BQX B0 B @ ,| G Z( y ¡ ¡ P   h *t A7@ A  B( BJ Bg B4 B< B B} Bm B~8 Bi\ B  / Tx   < ¨ ´  r V, \ -t A B4 B= BFd Bw B` Bh B B8 B BT BE  B AT  !@ O$ hD n | t w vl | N   Bd B$ BI( Bx B B~ Bx Bm( B^d Bd< B= BL  t ( #0 W  ­  \    Ql @ B BA B{ B B  B B8 B Bv Bc B^ B* j   5 jd  ¯P  o  ] [t N ) B B&$ B  B Bk$ B` B$ BD B Bw B B BF A [  >| x   ¨ ² ¯8 \ { Jp 6X ' h B#x BUx Bgd Beh Bu Bw| Bw B\ By B;   \  / a  h, x r pH U 3 d Aq B# BM B BL B BvD BY| B\@ BW BJx B`  / 0 5| a    8 @ s| Qt ,  B(H BO  Bo B B Bd B B B B B] B` H ( Cp r8  ©  ¨H  @ O ` A  B" BHD Bq Bp B Bq8 Bj Bu  B Bm B) A B`   KX ~   · µ4     a4 - B B2 BRd Bk B B B B Bp B] B? B @4  %4 J z  <     zX n 8H @ A{ Bl BN BvX BD B B| B4 B Bnd BQ BAD B*t A  J 0  } s   wD F   Bl B8` BA0 BQ Bt B B B BP B B B^ B$  ;d pP    BD B Bx Aa  A o I4 BF B BJt L ¶ n 6 W  B BH /  ' } Bi4 B AЀ y$ ¡  $H B B4 B B Aw   _ Bm BΈ A" °@   I @8  B! B  A'@  " D d( B B B=l  ¡, $H BL B B B< A@ z 0 A  C Cd B#X ] )  Bv B B B| B{ jP k8 B C C Be  b\ N ƀ B) Bp Bg H ¿  0 Y B B$    ¦ h B4 BS  Ұ  » BJ\ B BQ ²  D B@T B B` B U( ¶T  X B Bذ A  4 (T BF BP Bw    ¼ BnT CN B1    H< Bq B B ByX 2 y ? B C C B B @  Bn C C C B  N B H Bh C B, ^    Bt By AH  " V  Bt B M   v Y B3h BB B !    4< B BY `   { B#H B B @ 5  a@ B0 C B  e 6 B B B Br B1   BX CX C B$  X BD C CV B Ar  B8 d z B CJ Cg   U / Ba B Cv B  o OH B B B\ B0 g D  B" BŨ Bd T -  t@ BX B Bo QX U g u BȤ B؀ ? N w   B Bڔ W   Z Bop Bmp B9| A ° E ¶h Bg C BT ¢   B^< Bt C Bp B+ $  B5 C| C#a B  < Bm C| C C" B  8   I B  C6 C B)l   bp Cu C A  0 `    BE( C Ar@ ' q O BQX B0h * e   T e  B C X\   A'@ BD B Br >X  : ­4 BT C_ Bd   L B0 BT C B ; wX J BmT C Ci Bzx t  q C Ct N@```@@@@@@@@@@@@           (   0                                           **  **                                e       x  **        **  **  **   P      e           B BP B  ( ± A  B8 5P B H B B [ Xd BmX B B   « eH BG BcL B7T B B ¨$    B B  B6$ ¿l  G, 1  B Bm4 0  Nx B< B$ Bm B7X ¾`  B)p B= BZ B Bt 0 º BZ Bx B B' L   BB\ 0 BF B o$ V  Bu8 BɌ BvD $h ¤ :d B\ B B^ C. Bc   ­ BHx B_ B9 B10    C   y  B B C C7$ CG CD C2 C;  # $4 %# $   { 0 5n 7t > 7 * % l C# CKl C^x Cqh Cx CXP C5n C2M C.O C B< 
 ;j Q` ^, h( c Tx M J ' Bmd C  C5  CL CO CQ Cb@ ChT CX CF C. Bx  ' 6f K R X@ hH ` @ &D   Bh C! C/ CD CZ@ Ca` C_ CUP C6O C CP A( $u 1 2 H Z S A /m E ¼ µ AE  CO C% C0 CF CB C.m C.} C3 C" C= B" u 2s 3 (U ' $'  !p   E BC C C BCd Bt C" C&T C] C#v C BC h` A  B k  * $n  N   8 r BL C C#Y C  C B < B3< B# B BdP    . BF B B6  E BS@ B B/ B C Bd X  AC A@ *H j  K t B$ Bg8 C C` B| B C B B B֌ 7 ', +   , ©l d 
  C C# C C = Cp B B  C B< B BC,     ¯    =  g@ B, CM C C? B B0 C C C? Bl :4  j  ɀ 8     *  BV B, B80  A C/ B B C4 B  « C Cb B  Bd B ~\   P ¯ zT _  (  BL  B! Bq Rd  B)h B| C1 C, B |X O Bq Bmt B C  C  4   Cn C  ' m B B B C B] 3 1 B C"" B1 A  CZ C I@ =  C'^ C'I / F  C7w C9m I  "  ¯ c@ )h B; C C) C[ B B@ B,( 2,   '  BR B[| T0 mH  * * 1 B΀ C C0 Bz 4 BH  B` 90 x B BFt B BT B B Bx| L,  !  ^ ? Bt B4 r A  B\ BX BJx B B  0d e B` B  Br B B0 B B B4 BJ B( BGd   Bh B B( BH BJ   j A݀ B/|    ¡ B AR    Bq B4  /P B<X BD B B\   P B AU  d4 /@ p J | B9 B5$ B7L  ( BI B Bܬ B B  B{ AX  BB| B B.x B" @    !` B( ( ­| ·$   T : BKX CU B,  ] Bb B$ C C!# C B U D O    ¿   A . # Ai j ¤\ H A0 B! B+$ -( Ǡ ­  B( BxL B@` B}p Bf @< 6` B:\ Bjp Bh C BW    B Bt Bh$ Bg  B:  5d K, J A _ g   T B6 Bo B! r = Bh By  < R8 B' A"@   ` S  BH C` C B C{ C B t B} C  S At X C' C>x CD B$ Yx f _ CA< C"L   C C% C' C B1D  ,b 2	 !T B] C$ C- C1 B ( A   B( C" B@ B2@ BT BQT BƐ C B@  # & C8 C C0 BHx B7< B B Ct C B  Av@ .(  E    ) 2 ,    <  I M  B" C C'C C& C! C BИ B>@ x A d 6 Bp C
 C$ C*" Cn B: / "   º  @ 0  F$  < `    A  B@ CX C Ci B:p yH H B B BTd B#d BD  B7  B  BbX B@ = ̀ t Bc  C` C BX B5 7X © µ  BL n   % {     y +X C C!@ C C BVd 0 Aπ B C2 C B B> B1 B$ B` CW B %  Ð B}T Cl Cb B BrT B :  ©@ }     Ҩ B8 C BO$ ¼, z ¸ BV8 C C C B &|  x l( [p  e  d *P B$L  D 7   B8 C BT A|@  D Ǆ 6 B C C B Bw B C B4 Ap@ h wh 5L B@ Cj C BT  ";   B&h B2 { 4 ¿ fX Bi B Bq    % C C( C1 C' C( Bd, B B@ C Cc Bp BP Bx B' B B B| P  {   B( B BA §\ W  H| B^0 B)| U  נ c   ~ Bl BGL z  %  L| B B Bl \ lx B B C B u   q B\ C BK P  3 , B BΌ B. L  @ Bˀ C1 C\ B {  B t Cq C C BeP 4  B7| C C%q C  8  BD C C! C9   ? C
 C2 BP 6L    A9@ C B`    B& C C: B  £  i BX C  B   !I  BC$ C/ BD  '4 '4 Y B B8 $ -    A C4 C D@  Y  ]| BT Bܼ A@    C C! C Bk A' B  B C9 C% C 9   C4 C) C&[ B S( D BL B C9 C$ C  ¦(  C C p CM  */ ) C  BQ< A @  % 8 p B¨ BÌ ¥D ! $  M@ B C Nx  *8 S M B BN 0  d q@ C C$ C iT u d Bt C!3 C" Cq @  S A Cs C(3 C/4 C \  B8 CM Ct C B  uP :L B? B B  #Q ! ¨8 C C  Bh + "k : ʌ Bk$ B8 [    B C B! t    w B} C CB @  R ]\ Bp Bެ B6 ©` h ¡ B& C= C$ CC $ u ¦L B C C< B[  T  B Cb B ɜ D  B C| C B L  t @ B` C B    B C Bx V   « 2 B C: C ¨  6  B Cr BK  !    B< C +T `  º B$ C B l  l   B BX @  q t C7 C$ C#2 B ,  L N B C B   A  C C C o, j H 7 B Cn C     t Bh Bf       BL B BVd D 0 ® B*T Ch CQ A \   D BIh BP }  [ Bĸ C  C C   } | B C  C h 6   B C6 B7    l B B B C   S B CP C B [p rP Q$ B C2 Bc  U £ Ba B B( j4   w< BX| B B G     C C Bx 	 u A4@ B@ BL BƠ  V S :| B0 C{ N@```@@@@@@@@@@@@           (   0                                           **  **                                e      @  **        **  **  **   U      e           R 9l BIt B\    I BP BN Ȁ  ² e B< BЌ Bռ B ä  $ B58 A@ 0  AV ` B  B CK C B  Yp  Bt` B BNT z4  ʜ B/ B Bq 0  Vp BV, B| B\ @ *4   @  B, BXH B) wH \ P B  BI B* @  * &0 Ah T  K &  B` C& C= CF  CG C= C# B  ` "        ., H` WL U H ' B C> C^8 Ci Cg C` CU CN CJ0 C9@ C B|  ); @ U g8 uT q W 7  U C5 C( C2 CA CT C]P CYp CTh CFt C) B  ¶ ' Ml ap b< Z( O = "f a< BL C C8 CU Cc CV( C?T C4 C1 C' C\  P 7 T T C ? B ; %"  Ba C C5{ C<@ C84 C: CCx CC C6 C& C Buh  ) 4 6 6} <8 ?$ 3)  s BMT C} C C C C# C2 C6Q C.6 C  Cx B4 t º  % .L . #  d Bt Bˬ B=( B C C"_ C' C#b C C B@ B(d O t Y $ 1L (     h  A B? B C C& C$ AH Br B( B B@ Bt Bh B] B B B\ BM $$ op AQ BN    B3 ؀ £ °| , A  < _ w| g Zl ^ \(   ~` ( @  N@```@@@@@@@@@@@@           (   0                                           **  **                                e        **        **  **  **   Y      e           f BT B B5 v [  V < ] j  B  | Bl B B` - A3 H y4    BYL BM` B   A@ B= X ¢   @ B; B Bp BiH BWX BJ B,d A   U g 5 AT  B B$| BEp B; x h   T   k .I 0  BB C' CA CUx CdP Cc CKl C4 C+ CA BH  -, A$ \ xh Ê Ð Öl ÒP u B@  CE CK C{0 Cl C C C C Cl C4 C1  i ä  ָ ϐ ü ãD Ç j H " Bt C> C| Ch C C CT C CzT C1 g X Ã Ú â Ú Æ o4 [ G *\ X C C?T Cc C$ CX C C Cp CI C #Y P@ h t$ v n a, Q A / h B^$ C$ C>8 CS Cg Cvt Cy Cg CD C BUx 9 2N C B@ > A< C 8 %>  / h B C C$ C+ C5} C7 C. C  C< Bd B: g , V Q #. ( %  -  p BPt B0 C C C C C C# C<$ CE C / Oh Q H  # B<| BH BX C  CG CJ C  N Ci C% C B C C  B + u\ l C( Cp   ù CEP C C IL C? C  Cs O ê ñ x  Ä C$ Ct C C C CD "H } ß fd C C C CӰ Cp Ct $( É ( P Ó 7 C CE CJ C1 Bz r .F 8 -~  BP C! C' C^ B]$ °$ # @ I 3 ® C C3C C6 C7 C:= C- Cu Ad@ Bq C C CU C C C! C Bp   $ (   -  :     B & (C   Ό BN C" CN B B C? C&P C, C) C& C$ C" C Cz B BW ~  ,      - 8
 = = 7 4 1 / *j    _ BO B C C1 CC CP CX CY` CT CL C> C-- C"8 B  @ %} 8X @t DX GX I JT D 4"  ` C C$ C1 C@, CN  CW` C] C] CS C? C-C C> C# BfL    .- 3x 6 ; : 1~ . 0 )   2 Bd C B Bl C C6 CA C C* BN ah U    b ³   3, B2 B B6   l P     $	 - 0L .k - - '" $ ' &,  >p BT CO C C C! C* C+ C0 C; C; C9 C> CH4 CPD CQ CG( C8' C,* C& C  C= CO C B " F Bt BUh BD S@  l T T    ' . /. *  % > G ? :- =T ;; 6z 6 7 / * / l p e ¸ BP0 B C C Cd Cn C C# C*. C< C= C2: C0e C9@ C9 C6 C;x C>( C1" C C C C( C  BaL μ p ²`  !} !    & %  J a0     J< ! X|  §P q AP  B C; BP @ 1 p s D BL B^( A. 4 _ ´ B* B BdH d i Bc C C Bp B=D ½ H    B  BX " p  ? < e j  º( L  Bt C Cj CD A  B~( BΤ B B B BP$ B" B CQ C: B4 ?l }T A B B B C B BL H f B B% W8 µp    K w, k ©    . ® B A   ҈   Y B3  # #  < Ba@ Bݴ Bq    ³ ( BO   ¢ ` Bk C C)Z C# BP %X ¶0 R Cq C!z C"` C Bt B] B Ck C  C/ AJ B B B B C! C    x B CG M  A    MX B8p d E N P ¥ ¶  r f  ª  L V0    > Bp C A     BI B C+ C6 B` B BC\ C C  C Bp S ¼L ] & B B  B 1$ Լ l B CO C 9 ¶ | B Bh CI C B ¯`  ¢ B C! B  ; 9< A A. B  / W  BF$ C C BA  i X<  3 B%| , ) f 0  B CM B7 Ϩ 1 < Hx Bn C BL t  4 Bp C
 B u O ( S` A  B B| B84   ¨p Ba| C C Bݸ 9 b B B8 B^ BD BH Y   ` B C C B3 \ 3 |  Bj B ) l 2 @ B0 C? B  b  W Kl B B  B^ bD \\ B C C  m /  ڴ - B3 [ J  q B C	 B( L<  S` D B, B B A0   { B^ C C B3 T « ­  AM B BW tx x `, BdX C C B4 D Sx BZ B@ B  B$ BP v  A@ BP BD q g  [X px t BM B B| b  t BGL BΈ BT 8H d  i  Ap@ BP Bz 9  P %L -D (H   B BP @ * J L H i {  ª ³ ¯(  `  θ £ _  # Q P J\ Q g< L0 Ak B, E ), Ap (0  l A  B! B"T B B,( BV B8 B B B0 Bx$ B BP By Bo Bo< B`( B< Bt B B. B -t R, M K [ iT W  ,  ` D@ B& BT4 Bs B` BJ Bg Bl Bt< B>| B/0 B X 5@  A`  B  A  )P # % .d D< G G W  Y <@ *  8 , h AU@ A    ,T S F t  = g f ] T S< J 4D % p  A B0 BG BJ  B) B B3 B5d B0\ BKD B{L ByX Bx| B[H By BpT Bp` B] BT BP BH BAH BR< Ba B^L BA B4 B8 BG BJT B7 B/ B!( A@   3< + " 0T 6 V [ @ A M F0 7 8 5L Ah Ap C d ml a ^ Z\ hP   iT Y I B > @ p  A@   B B6 BQ BIP B)d B B B#D B0 B5p BK BXl Bj| BhP Bf Bo Bt BY BA BF B< B% A  Ao@ A @    B BL A1    *  M @ 8 FL ] = A^ B B"T B:  BS BH| B- B4 BA B1P @p  @ ?@ % K At 1 8  ; | Aa B A@ B B+X B(L A A  B <  3 e\  } u U C %t  A! B* B^ B Bh Bb BY` BM B(x  0D 0 6 *  %h   @  A B A  Bl B!0 B Bt B< B( B& B+ B:\ BD BE  BCt B"0 Bx B B AK A.    @  ) & U   O@ B BMx BG BP @  ̀ @   X } W H J A` )` 24 5\ / < A J A> AM A  3 + , A\ )l   t ( @ $  A  B2 B- B) B% B& B6 B;$ B+8 B% B A @ * ! A  A Z  A^ A@ BD B< B% B2 B H AW S   | # #  A B8 B0d B]D B[l B4  T  A(  x ) 2d 80 N@```@@@@@@@@@@@@           (   0                                           **  **                                e        **        **  **  **   ^      e           » B B BF B B B B B'  d  ¦x Ԝ B) BX B{D A d  7 7 B B B 7@  M & BT Bn4 Bl BA A  r ( B7 B&8 ` a  & 3 P i a ?  CeX C D( D D D C8 ] Þ 0 3  ;  õ Ùt Ï Ã z d 4 C C De D D D D Dy CH CwL C S ëH     T  9   Ú0 $P CN C D D D D D
 D Cp Cp BH R Ô `   L ɴ é ÑL qP >  Bm  CB| C Cڈ C| C C C4 Cgl C8	 nL W Ó ç  æ Ĥ @   Ýp @D C CK  ClT C C Cp Ch C CxP C, C C Ct C4i  ~  H Ïp Ép ? 8 Ba Bx 2 ` D `x t@ × â  z U D 4b  B;, B# I CB C3 C0 C/ C, C>0 CU C\ Ck C C CUH C= Bx B @ l L <   H ^ i Ê î æ ÑP ÏL Ï v ; B0 C2; Cn C@ Cˬ C  C@ C, C C CxT CI B 1
 n Ù0 ã çl é Ô s Z K ? ,. [  1l C C/ C=D CM CbX Cx CX C C C C0 C Cf CQ C- @  ;n b Á Ë v< [< H ! C CCx Ck C Cd C Cm( CE C&\  Z é   1  h    ˬ Í *I C&b Ce C C` C C0 C  D C C C< C C] C1I C B, ¥ &f  _ BKT Bb B` C* CF CN| C` C{ C Cn CW CL  CA C ڬ  6 \l À Ñ@ Ú< ÿ    ä4 Î Æ r = (4 C  CF Cr` C0 C CP C C C Cu, Co C] C; C   .n E S ^ m Á4 Ö Õ Å ~, u fT X I ; " x BA C C; CE C58 C(C C-9 C@0 CKT CW Cq Cx CbT C@ C#m C2 CbD Ct Cl CaL CB$ C  BP@ C C# Cn CO B   U `  w B [  - =( I N0 V V MD J M S  XX Ld AT :r ,
 "I "?    	 j B B C9 C C C< C"> C-l C-$ C( C+ C- C2 C6  C- C(f C% C&H C/ C4 C4T C/[ C / C CL C# C' C&+ Cx C B  BIH Aa  " / ׄ C,4 C8_ CM P +H I G< -  J   / IH F8 3 "7 X ,  ) # i    4( H BR Bc B#  B\H B| C@ CO Cc C C CJ C C% C CG C C B | B( C  CA Ba   X e 4 B C/ C B Ay T © < Bʄ C C Bh \  , } B>< B, AՀ ®h º   #   Bv` C 7t *~ =l C 0P j CR C B    %  C( C! C#& C BR A > A8  B| B\ B Bd ʹ ¡ ³   {X  C C, CA CC C 1! ^ p\ mt M  B C9 Cw C  CP C| C Cې C4 C CX C0 Cv@ Cn Ce  CY CN C>  C* Cw  > e w | Ä0 Ã { o( fP b R *  +& FL 4 ڀ BD B C- CS Ch Crx Czl C{$ Cr CY C+  Kp d\ j } ã`  û Þ0 z Wh 3  C CG\ Cm Cd C CD CX C C Cr< CMh Cx  ? W X Gh 1  ³ B2 C C#| C  C C ^ % $ # #    X $  B C B BD B8 C Ci B Bw A  * 0z ,< 2 C G 5*  BA C C! C8 CM CV CR CN CN< CG0 C/ C Bu B: > =( 0 " $     ·  ]  ¡   &# !/   U ² B[ Bb B` B_ B B Bp C B; `  X  K   Ș Bd C( CB CS C_` Cg Ce C^ CW CL C,M  'S D@ h\ Å }d d| b j SL  B~ C C { C0 C5 C+W C' C1^ C0I C R   S  Bp BK BYH B24 B, Bkl B Bd B B^< B, P © ­  w  ! (X ".  § N   B B< Ch C C! C$ C B݀ B B C? C B Ah  c8   `  X| |   q M|  T   AN S K( B CB C" B B8 C: C C'2 C# B1 K e Bx Cb < )1 "4 @ B< d !  J Bτ BJ\  s ~0 B0 B   X n  D    } _ / BL Bb B?X B% BxT C C)! C,v Cg C CR C C! C Bh V  N A@ B$ SH h 3p B4 BK B# BNP C* C} Bx -   BU %D P r  M ¨  0 i  3P h ²l g B| B B d F A T    ¥ C & u o B$ B B?p [ j  B,D Bz B< H BR@ Bt Bl P  BS B\ Bd c ¸  b B  ©  Aƀ Bݐ BX BA, Be@ B B A>@ B@ Bl B   Nl e  [ t | U   B( C B8 B2p AS BP B Bo Bc B B| Bd j  $ A 0 Z8 = gT « W B4 C- B^ £   R4 B B BUp *  A@ BB ` -p Bx C
 Cr AY@ 'L B Bp n  8 ¬ Z   Ŕ B4$ B]   +t B B n@ < BBX B B  ¬ BH B B=   6@ B*X B ª z B4 B B\ B| ;D A 1 A A@ ^ ¢@ T B& A@ ! B+ B B A  Bl C C BqX B B Bh B= BE Bn\ B `| et @4  BEx  g ` A "   ­ " B D, p I 8 L v  H # <d 4 w B BD Br   0 B BL 6 o @ B' B? B< B Bpx A, r  B9 BUx @ hd 6 B5  X b BC  B BCT Ai@ AW B& B] BK0 !` : BF B0 Aр ]@ XL  B#p B0  R| #` B+ B*   %@ ( ¢t ( uh m D >| L B% j  i\ > B5T BW4 'l } ( Bv B B! ' BH B   @ Bn B ^@ ] B& B B 9    B~ B} B 8  BL A S4 ¥ x` B/ Bh A ] g n d B CA BL Ȭ © B BĴ  j B(( BK  J` A B$ B B hh H A  BY B$l A@ A@ A ­p    » .x C   O  Bh LH  ) Bl B e4 P B| B B\ B 58 A@ BE BN BKp Ba` B7 Q \   B@ C BC  A B C B%  £, - A Z8  y ND 9( E  BQ Bg A@ 6| ( c A@ @ B . B= BA c X <x B B8   Ҹ B" Bp @ p `| B^ Bg B B< B|H Be B6T BU  B Bݔ B Bx B @ B B!( F ª 8 7, id N@```@@@@@@@@@@@@           (   0                                           **  **                                e      8  **        **  **  **   h      e           B> BD B B+ BN B!  . C 1 AZ  B(  6$  # + A]  B  R ± e 1# ht  ( ! ( %} h C D3y D\X Dzt D Dy DZ D.. ? 1 S b8 e c Z` L F P Q< A 4 "( C D* DM Dc Df DXp DD D3m D" D C D D( D)I D4O DI  DR DSx DU DP D3. C( 0 oL ľ  3   l l H ZP D# D E E E x E$ E& E& E"  E E Dit R w 	   $ #    ļ  _  C1# C   ( '  D DY D D E E E Ee E E Dp DR  k Đ   O   ! Ľl [ C Da D D׼ D D D D DK Cp@ : r0 ě ĴH ĺ Į< đ gt 3 C: D7 Dc( D DD D@ DL Di( DL D.m D     ! #o $ & ( *_ +b +h ) & #J     ÎX  C D DC D" D&> D% D!b D  $h ( B* BZx BL B/ A@   A B&$ BI B:8 @    & A B5 B7 B: B1 Ah  B B9 B AR x E bL a E8 " 0 z P G AA@ B& B0 A~ An B4 B$ BG Bo( Be| BG B A B8 Bl BP Bv B$ A B/ B| Ba BI BK B)      P '@ m  N$ @ N@```@@@@@@@@@@@@           (   0                                           **  **                                e        **        **  **  **   l      e           B7 B( B) A    A;@ Bl   8 BX ) "l Ad  B# B9\ B1 B7 B1 BF B] BK@ B%   \ ,L : 2T   M@ @@ B BQ B\@ BH< B+ +  * I e q ` / C Cr C8 D D D D C C  µ\ à ( 6   d  J   9 C_0 C  Dk D!| D' D) D'f D" Dv C C) Ð K >  [ " "   7  ޤ L CMx C D D  D  D!l D. DA D$ C Ct n   , 4 , _  _ í P B Cf C D D^ C CH Cd CD C  R q J\ B CF Cz C` C C@ C\\ CM CO CM0 CK C> C/ C9# CE C*s  s ռ    K  ݜ H CQ0 CL D D D  D D DA C CH " B Á0 ù0  @ @ < Ö H 7 C) C; C2 C+ 4 6 K N = 2 C CI Cr C C8 C Cap C%W l X Ã Ó Ã Z " C" CY  C C C C C Cp CC C@ H    CB C; CY Cl< Cj CK B Y\ ӄ   %u * -& + % m  I, C Dt D-\ D8 D? DC, DA D<d D3X D' DQ C( !  S   $ & % "  V e ˌ ~d E| "  ". >H f Ó þ    (   Ä 2 C(j C8 C݄ D D Db Du D D D D C C CB B= 0 WL o | | q ^ F ,  Bp C# C3 C? CD CE< C@T C7g C* CG W\ # C d Æ8 äD úT , ( þ ç< Æ aL 8 ° C" CL Cs C C$ C( C C CH Cr CJ C ـ 8 ^ zp Ë Ó  ÓL É uD X 7|  B C' CBp CUL C` Cgp Ce` CY CF C3 C  B =    ^  e B Cg C! C, C4 C;^ CA CC C@d C6 C,r Cp B #  ( * 5 < ?, ? A ?D 8 - $h  ? ² n _ Ed 0 1  a µD 4   #  _ + x |p A@ B, C% Cg C/ C p C" C% C' C' C#Y C C+ C2 C C? C" C B BƘ BŜ B B| B@ Bvd B B BL BT B B B, B%   E     4         " %h % $     Ѽ ]D B Bp BH B CZ C B B BD   H   ºX  b  BM Bh C C C'd C+ C. C1` C2K C1
 C. C) C% C B B} A@      Y   = W   l   Μ ¨  {( z  z p a8 R  B1 BeP Bc Bm BOx BS B[ Bn B? A@ 9x c  ¢ ©  w m m` i| 6 x  BCL Bo B|H Bn  BM BL @|  ! 6$ 9@ 1 6@ *| * X A  B= Bp B0 C* C C4 Ce C C C C C CY BX BL B6 A{@  E j@     d §< ¿ 0      	 ) , n Y ` ³  e %X d@ B1 BD BPP BF B1 B2  B4( B'  B` A A^ B B. BBt B\, B_ BwP B} Bw Bn@ B  Bt B}P BE B. B- BL A!  p  ^  A@ B < BC( BA8 A & B*p Bf B B B] BT B6( B B"( B1 BAT B<L B  AT   =t [ n qd  ¤` ¿ \ Ę ±   [h =8 '  A@ B2 BO Bh BM BD BM B- B A     0  P  @ B| BLh B` Br B B$ BD B^ B8 B4 B? B. A  1 Ex N 0    &     \@ B B2 B*\ B B! B)d B(x B A  A @   AT 2     !h   @   |   AQ  B B% BP BIX B>( B>| B=8 B$` A!  # 4 U p r n | j8 Y 8  A A B A Bx A׀  x A/       AH B! B, B) B.| B= BY B\T Bc$ B] BO BB B)0 B(\ B+` B$ AE  p +D 3`   l@ B B, B3$ B! B8l BE` BUH BVX BI B   # ) H [ d u$ p  kx I M4 _\ ^P Zx : / ,` * @ 1  A  B- Bf Bd B[D B: B5L B& B+ B<t B7 B I    B%@ B-d B# A  Ag@ @ + 6 - #h 8 N F\   X A@ B A  AA    A2  A@ B B AL@ A Af@ B" BHL B` BC0 B* A A B4 Aɀ  ' H4 S| ^4 C(  "0 7 E< /     B B,T B B# B7  B< B, A AJ  @@  !l   A-@   E > B Bgt Bh   4 C G r  |  Ќ L ` ۄ  R ~   t X    ³ 0 kX Nh : .d  B BN B_\ Bl B` By B B BX B B̄ B  BX BĬ Bx Bd B Bl B` BJ Bb\ Bd BM  I , B' Bh Bvh B`d B8 A % 1 d AՀ A ( S p vx pp r     ¦@ °X X r l, a x _P :D ! D  ( ' (x h ) A*  &l   A B B A/  D  A\ B! BB BMd BC BB B; BG Be B{H Bv< Bj B[ BE B? BLp Bt  Bl\ BZ` BK, BMh BY BbD BP BA B2 B' Bl B2 B9l B& =  "| % . 8d H T q 8   ^ M D Gl A 5    #T 0 F J< A K JX S  Z Z < (`  @    B( BD BX B<P B4 B(  BTh B^ Bj BR` BR BE0 BA B/4 BB Bd Bg B0$ B"` B)| BF B7` B3 B (  *  AX  B! B#d A@    \  A@  A@   8 U( ] Tx I Gx I Vt Z E     { W ;   B  B. BBP B7 B A  Bp B  B4 A;@ Ah  @    ` Aj  B"4 B! A@  @ A Al  B B  Aw@    A B& B  AI    0 : 0\ $$ :D ]4 bd > p  < < V A  A B-$ B> B> B! B B5 BO8 BQ Bc BM B   A@ B A@  H ) <  . @ B A    Bx B _@ c Ar@ A>   + Bp B' B @ AN  B@ A]       + R i\ \ K EP B8 ? 5 )   A  B` A A@ B B* B; BR| Bm BXT B4  B:, B]| Bf B[ BT B. B A A1  B A    / - !( + < 2 % 4 A <T      ) " AT B+ B @d  @  " !    A1  ) d A AQ B4 B0H B:l B! A@ @`  B& B* B  B| @  ! x  |  ڀ  1 A v    B B9 B/  Bt B B!$ B, B0` B @ `   B B Aq   B A B  B B A  + 2t       0  A B B$ B- B  $ %t N@```@@@@@@@@@@@@           (   0       "  
                            "      **  **   "                          "   e        **        **  **  **   q      e           B"x B B Bt B@ B(p B' B  B B B B/H B( B% B$8 BX A   A&@ 8 x  $  8 ! D A A  A@ A  B B'@ B&  B"  B" B\ B B B(D B, B- Bh B B'l B/ B2h B(@ B Bx AӀ E   A( ª  !a ) * "  BH C1 C[ C{ C C( Cw CS C" [ = a { Ñ0 à ê í è Ö r > BA  CN, CT C D$ D DU C8 C4 Cs C4 d B zP ë \    @ ß \  C8 C~ Ch C C@ C Cׄ C$ CD CN C -h g  Ø þ 4  T à p$ 7c B C9< Cf C< C C@ C  C Cr CS C/Q B _ = Y m x y( o _ G ) ¾< C C) C? CP CY C\d CZ CR CBH C-a C @@   + 9V B D B ; 1 # + { Bq C C C& C+ C- C+ C%! C CW B 8 װ 7 %V + - * $M   m@ B  C C) C1p C5 C4 C0P C*B C* C*i C BP B -|   ¾ 3 k, B Ch CR B 2 D Y & < Q U J @d ? EX B$ 0 ( 3r 0H  i \ 8h C#M CF CV C^d Cf Crt Ct ChH CW CR  CPP CI CAP C: C2# C 2 B;  B b` {< É Êd ~ h M\ 0R   C6 C+g C> CJ CO CL CC C5 C!+ BՔ A H  8 & & " x   ¸ µ 0 m  1 !e $ #   #  B C C' C: CK CX Ca4 Cc$ C^ CSH CC C/I CL B"  & 5] A G H| G  C = 5 , !  C  B C C) C5 C@@ CG CJ CG C@ C4 C! BԌ |(  5k Jd [4 d i` g \ K` 7. !5  C C) C< CK$ CU  CX CT CK C?( C.e C8 B#  % 4S ? F\ H F = / + \ B C C0 C@ CJ CT CZ CZX CS CH( C9 C(y CV BC 8 3 + 5 =H Al B @ <8 5 -1 " 0  IP B5 BP C C Cx Cb C C  C  C b C!# C! C Y CC CV CY C B B A f Ш   U   % )T +V + * )# &Z #M !   ³ H B Bm B  B0 C CT C C* Cj B B B B BT Bl B>4 B.  BHH B| B B0 C C C C C$
 C) C* C* C' C%f C! C+ C7 Cl B\ Be c@ Sp , 8 H V )   Q !M & ,r 1L 4 7 ;* > @ @ > 84 1 )o  B s ¨  B Bx C C" C(i C. C2s C4 C4 C3 C2G C/a C) C% C$ C"
 Cv C C9 C Cx B0 B Bq( B5T  `D  ½, B(  B_ B B$ Bd BRh B7 B%P  (0 C C F G 4  @  o e  D  A B0 Bl B) B6< B- B%l B#d BH      & - ;h > H /\ $  3 A@ Bh   B A B B! B, B5 B\ BO BQ  BD BA B4 AI    p '  C > "  t   B Bp B) BJ Bd B_ BS( Bb  BF B/ B B  Bc B B% 9X P   ¢ ( )  Bw B0   1 t   §0 B" BO  BcH B C! C6 CH C C C C CE C Cd Cs C0 B$ Ba B B C C C CU B B w 0       ! "2 !    O J O     Ba Bd C C4 Cx C C C CI C B B B͔ B Be  B^ BT BH Bl B| BR B5H B. B  4X - M th  ²T     ¦P  _h 2   B0, Bi B8 B, B| C5 C C C2 C C& C^ C B  B@ B< BW A[@ I ( h  s   / L      ¹ ] @ B>h B~ B Bp Cs C C> C C[ B B BL BG B 2 ~4 ª ۰    J  ³t  nX . B By| BH C C C Cn Cv C CF C C CD Bݴ B` B, 5h zH      H   0  D ¢ | D @ B3@ Be$ Bv B B By Bv Bp\ BH B6 B=p B@ B-0 B B BH A  As B Ar@    ;p 7 2 +t 0 N b H { y m h l w j \  I8 5` %@ 3  BH B(8 B. BE  Bj B B| B BP B Bא B BP B  B, B Bp Bb@ BMX B2 B A  p    A:  " ,8 . 1 C ? > B4 Z l0 jx lh q     w W W  b e TX @ 't P A@ 6 4 h  | | ! )| / / "0 . AC  W  Ap@ B B- BE8 Bg  Bm B  B$ Bϴ B B Bt B C
 B  Bݐ BX Bp B\ B BT Bxh B@P B\   0h VX z\ { 4 ±8     ¼  ¥| ¿8 ļ Ҩ L º(  S, 0 #    S  B B) B$ B Ad F  B` B @|  Q  B0 B$l B  B< B B. B# B B B# B A@ A|@ B A  N A B A B B+ B? BL Bc$ Bk Bc Bd8 B B@ Bv Bj( Bj  Bb< BL B4 B5 B< B4 B' B( B2 B/ B ( B B$ B A / ؀  , E F J` ] |   «   @  ½P ¦ ¦p ´( ­     v\ b _8 J 1`    A@ B& B0 B8 B:0 BV B[ BP  BH BS Bu Bj Bj8 Bj B, B` B  B B B$ BP Bd B  Bj$ Bj  BzX B_h BR BI4 BN BC B$` B* B!h Bd A r A  A  A T| ^ t 4  p d ºp ¬ £ § x H { m\ ch [ S = * / =p 2x #   d p  A@ B B# B" B% B7 B= B9 BM< BtX B Btt BU$ Bw\ B BcD BSX BH BIt BGl B6p B" B2 B4 B A@  A@ B, B( A  { A[ Av@ )@  A5  A  B(  ǀ  A@ A-@  + 1 < O  ` ^ bp l,   i ^\ H B 9 ! ,\  S  A  A B B B; BX( B^x BN| B7 B; BD B= B@  B8 B5 B* B( B"L B. B<  B- B' B$4 B* B Bh B  BL A _@ A  B B B 3  A  @     %p C Hd A< 3 ', 8T 8 &@ . 0   8 , 3 P 3  A@ A  @ @ Al  B BT B, B'l B)0 B B` B B" B)h BG B6 B| A Bp B B A݀ B Al  Aj  A Bp A@ X@ A  A  A_ > Y@ Ag  A   (  A B A s@ @  B B\  ) 8 ;t ,4 24 *H * !  p # #4 @ A Ae A  A~  Ax@   AX@ B +@ 0 * A6   D   Af @p  A  B* B( Bd BD B+h B/ B B A  A N@```@@@@@@@@@@@@           (   0       '                              '      **  **   '                          '   e      h  **        **  **  **   v      e           - iX M  @  B4P B- AB@ B q  N( @ B A0 }  #x @  $p B8l B{d Bf B< Ad T @ B@@ BD B (t ]8 HP B< B^H BQ A@ <8 J  BX@ B BR A݀ 9 Q ( B; BL B( 3< _ H Bp BfT Bh B.  8  BlT Bz< BS< B| 4 )l B  Bl BX B Qd T } 7\ ) o  $     AZ  B C! C2 CE CS CV CJ C0f B 
 7 K \ g n8 o j` Y > ! ;h C~ C@ Ce$ C C` C C  Cz| CX C4z Cb ȸ 2 Wt v( Ët Ô Ï Á n< Ud 4 ® C"Z CL Clx C Ct C< C|x Co CYl C7# B8 Z = W g  p u( rL dt MH .x | BP C& C8 CF CRL C[ C\ CT CB C.q Cj B G  ' 9 I0 @ ^p ; @t n<   ` H o Y Hx q8  Fx A B Ao@ m  / m 8 \ @ % ^@ 0   V Q 2 B P` ' B5D Bll B Bn B-H   B0 Br Bz Bc B[ B6 B/d Bv( BH B$ BL B@ B)0 B BA B_ BYP B'  , t   B B1P B + A @ B B0 B. B * 9 !  /8 @h  L « k8 D # ! X` rp C4 8 Aa @ ? l \t    O@ B AD -  BD Ba Bjt BZ B T   N@```@@@@@@@@@@@@           (   0       +                              +      **  **   +                          +   e        **        **  **  **   z      e           B, B. HD `  C A(   0 > H ;0 B. B B B *  D B B` Bf| B?\ <  2\ _ 9 BEX Bp A X e & B# B7 A # 5 ` P B4 B BD 5  % B8 Bb  Br BP B$ ڀ DX = B+< B B~  i8 a  B% B(  ,X 1 ) B# B< BH B MT G$ A BX Bf B% ` ( 5 # BB B BZ, !P tX `` )$ 5  8x v ~ R@ N  B0 C C C+ C C C B0    !' 0; 9F :} 4 - * ' x X BȘ C C, C9N CA CDl CG CL CF, C0 C DP  %= 4 B KT M\ K C 1  r BO C4 C% C9X CF CF CA\ C9 C1 C BD B4   (g 05 .0 % N  N ­$ AK  B C C+ C, C$ C\ C C) C B M   d   ©x    @P  B B B0 BT B BH Bѐ C C] B  B h  Z \  | |  4 ` BA B{h B R T c AB BT B9   K Qh E X A    8 ´ 9 B# B% l R0 ¨   A #$ o  ¦$  B B7 Bk B6 " _  [  B' B B[ A\ ' A@ Br BL BX Bpl B9  A@ B CM B BC ) WT M , P L 4 O   B` B8 B B B B C C C Bp B J0 Pd -T 9\ ( l p  h<  B( Bd B{P Bq` B C C C B BD B: B@ BT B) :$ ¦T g  l Xd $ U p 3 B@ B B  B BXh 0 f  B{D B B; [ ψ ¹ m T pH o \ j M$ BS( BL B  Bs A B BzD BT B B0 Bu B"@ X B( B BT @  ь  ª ¥ Ȍ    	 ·   BrX B 5 c F Ch B` B, B| B@ W| Am@ B C B| /   B C Ag  ʌ k `  f BI B4 @ B C C~ 7( Wl B< A*  B( Ca CA C BŤ B BO@ Bn\ B BM0 «x  v B  ¼| " t T    t           B* - } ( m( B% B C B0 B{ B=\ Bj Cn C C C_ C& Cz C( C/n C0 C- C)  C{ C CR C C Be :$ O B 5P [   `  r     $i ( %o    Z # &4  y  [ D F 8 Bx CN C!= C$ C# C#8 C : C C# C(8 C! Cd Bx B BF BZH B04 Ih  L  B O  & )    ¶` µd ` y  f Bb C C B B B0 C C C B֬ Bw l mh E @,  +\ ¸@ s  x   T   P   B4 B B B   BW C C C< CB B B< BX B C
 C B|D x E _@ BD` B_8 B! 1  ­X d H E  ¯ 	    ` Ȩ  #   @d Br Bv  B6x A@ B5 B CL C C B\ B| Bc B  C< C4 B B) B BR BL B Bp, AI  |@ \ £  BW8 B0 rD ¬ j B Bb BX  B A(@ 5 = B/ BL Bո B.$ aX kD  BGd BM  ~P   §  BO A@  ® L BK B  B Bx B? @  Ba B B@  i M B B[ Bs4 BO B < 54 N B" BP B Bj   T B@ B B ByT B2 x Xp )X B^L Bp B] Q ¿ º C B4 B/ # d j( H B;p BL B BC0 -4 @  Btd B B B B{ B<  A B. B B BD P h ¡( KT } y W § \  ( BN BK, '  g B)T B8 B BM B&h A H  B> B  B  B@ L , bd  8  G4  `   D B0 x º  ֐ >$ B , O0 h ±  A@ B Bb 2P r -L BB` Bl BÔ B Be BP B7 Br B0 C Bp Bj, B4 BZ  Bx B0 B A  W ( h  BAX A5  ~| H U\ @ B. BY A#  `   / =H     » v K0 o ½( @ P  B!L Bl Y  p ¼ _<  Ai @ -, M F 4 BN B0 B Bj B3 Byd B Cn C> C B BT B,$ Bc Bՠ B, BZ ; T   BB Bx B)h H 8  ` c H Fd » < @ f E@ B  S\  B C C C5 B CM CJ C C D C#A CM BlP BZ B B B( BD$ O` ¿ Ԝ ¥X < B  -  0 @ ¾` 08 A{ B  `` l xP A  B Bjp  v ¬ -| A B/ B8 Z0   @ B; B B'` j 0  Br B Bx BQ| B B B= B C B߬ A )@ B BT$ B BL BN D k Ih  Bg Bx # < ¼ Fx B BH B u, ±T ¤  ] B(X Bh @ l  l H BU BP 2  i CH B B BD B d 2D B" Bb B BL B;  B@ A@ B) B B A  | j 5 M @ BJ @  X + t BM Bn B 2 B B BX Bͬ B BS A Ab BYp B B   ¯L « V(     ]H  h t 8T B2X BZ ,   º ^D B&d B Bkp B5  Ac  B4 B B BH 8 p A\ A BU BQ$   4 P  ` 4 h    ٠ Y q  m  L ! B Bh B( $ Z < BH B0 B0 B> 6$ ND u Bd Bt BĄ B   n Be B| B| Bd =  BW B C^ B$ '    B BŸ B  B<H D ] @  Bb Bp B{ .  τ @X B't B >d    n B" B7 8$ ± ¾ e B6 Bl BT  g h ) BX B Bq 2D H A BD4 B B B0 >P X ' B\P B` Bl A2 u y 2 Bh B7 \   ¡D ^ B B| AH  »t  D B84 B B Bi A B( B| Bh Cg C B  q@ BY B B B? N  Y @ BR Bh4  £$ µ Z( B BO B6 6 L ( jl @ B| HP    »X @\ 4  ª0 £ d B! B< Bl B-P $ @ BK B CY B֜ BQ\ B@ A B@ B B, B? ` 0 q  B4 B3 : %< <D 7 BF Bθ B A <L  B> B B B0 BO$ B- B0 BnD BӼ B B44 k\  f, |  B2h   ¹ ¢ V B4 BUd A@ | È H ! B5| B@H ! ( 0 T A_  B;` AM  ` ¹  Ŝ y s  B8T A@ R q4 G B Bw B B" H XX j@ Bg BX Bd B4 B<x B BI B Bx B 9 Q IX c  Bb B@ BC4  - D  Bid B Bv F g$ ~ a B! Bo B& ML fT O ' B4 B[   ` ]| & B7 BC  [H b E A BT N@```@@@@@@@@@@@@           (   0       0                              0      **  **   0                          0   e        **        **  **  **         e           BT  d T H 8 B/ B @   4l $L Bl Bc BN AC  C NH   B> BD A A "  ,   BAp BW !@ `0 f0 @t A  B- B T@  X A7@ B[ B BS A @ BX B< Bi B BZ< B T 'D B B^ B@ &D n j,  BT BD 3p B 7 G B< A B? B <0 jT D A@ B. Bh  ]8 u Dl B< B$ @ J h @ B 4 B[  BL BD| BG B$ B BS$ BH B B5  R DL  / u ² < X ` Bo CE C C1 C% C C C B$t f  -t 4z /\ (r % "D  ¿4 B B0 C C&H C. C2 C4 C9 C;X C1S Co Bb    " / < B0 C ? 2     B C C*p C8@ C?p C= C8u C, C B B^ }p  ' 0	 1 +u !x g  ] B7 B C C%Q C% C"
 C C C B B|$ = ,    3     D : B CA C C
 C C C C C B B g| Ʉ         B B\ B BŬ B C C~ Cv BΠ B A   L    ;    > A B.P BA  B^  B Cu C B8 B By( B;T BQ B@  sx    §  S ] SL " + B~ B@ C$ B BX Bf B1 B1 BMH A'  O m4   6 ) Z$ j q, h L BUT B  BC B4 B9 B5\ BL( BI4 BH  @ I -@ - BI B B@ B A  " A@ Bv Bl B$d 3p ?$ ,   Ft e b l O B< B/  4 ? Ml @ Bu Bt Bt  &x " B8` BVH  sd [ Zl I@ BH BaD B, A@   B$d B, BWx Bt BL    B_0 B$ B? B G D LX c@ B5 @T  7 U `  ` Bo B_| !$ ^ S, ;D B&< Bqt B;d   ' # 8 BS B BM E@   0 Ao@ BI B7@ +` 4   s  Kx ¦| ` [  BRl B BvH Bh BX BD B~ B B B< - [ d * A@ # i L ­ ` @D  BSD AE R DX -$  BB8 Bf BA@ Bp # C8 B BT B   W g / B.< BZ BF B p bP 0X B B BLx I` ~ X   B? AF E N < A B C C+  9z . B C- CR 7 Bd C6 I    B B X   B Ch Bظ AC " !   Bv Bt B@ 0x H ¯h B$ B B^ A+  {| P H $ t {p d L  A{  B.x BQp Bh BpT B` B B B, B  Bq BW B38  FH n ( ½ ° w O *` / G , B( B7 BK Bxp B B Bx BtP B=   `   « t G  A8 BW\ B} BX BT$ B "  C( n  4 P ,0 Ax@ B, BI Bc$ Bg Bp Bp Bo B] BI  B @  (@ [@ o X 1 D O ,< BH B8 B3 B3D BZ Bz Bl B> B%4 B(T B N@ T !T ) * 7 D < D, / \ B B& Bt B) B+ B` Aŀ    8T B D #\ p T  A  B84 B: BM BW B[4 B7`  < QX rt    | QD  B# BE Bv B  B` BX BP, B< B5 B2 B6 B? B# " Q| j £ |  ²t  G B Bv  Bp BИ BT B Bd B B BK B+ BT " N Q NL ` s8  e( FL Ap H S< K( 9 + 0 /l ^ B B% B!d BE B[ BX BBD BV BD B; B64 B/| B" B A @   L @   ) 8 |    d ) !| / ' g  {       ' : J 9 "4 B BU BX B` T @4  A4 Fx X  (@ B:t B!L  ( B9 Bh\ B5t  O t J  B Bp BSl #L Y Z ^t r h  B^( Bi Bs Bͬ C C B D  P0  d ® [$  !H 4  BG\ ހ , < B Bf Bw B\T  Bp CP  J B> B   B8 BӔ B2 }  B A@   e BH 4  ? Bش Bf@ : B.$ B( B! L & B$ @ ! BB B` BfL 9 A  B Be` q  BF B B- A@ BW Ba X  @ BUL B8 BI  c B% B h @p #   Bt  s, 4 4$ N G @ A!@ 7|  l A B AH   A B(< B >@ A" A@ B0 A΀ A7@ B A  A @ p +  3L K0 -     A,  B, B|  9  8 E( Id A J +< ` v@ B) B_ B_< BM B3 B<D BN B*P A`@ A7 B B   A B&  + ! Aa   .` @ Ax@ A AQ@ B B! B% B4D BHd B- B  B'd BP A  B' B"  A Av B B+ A A A  8 $ 9 8 /D  @ $ 4 >  B B k   v    #  B B     ?  A   N< U , " , )  B  B(D B9 BJH BYp BC BA BR B?\ B$ B!x B) B A  '   9 U B L # 5` C     Ac@ B B#| B$ B2 BCX BV BKh B( A  W  @(  @   V@ O  A  @ |   "$   `     /( O c` [h X d8 j ^( F\  L  B4 BF Bc Bb Bn` Bt Br BK B   A p L8 c M( @ @t N  B) BF BN BX Bu Bt By Bx BP B B{\ B> B* A   | E g ] 5 ) 0 @ B B+ B?H B;H BC B) A & 4$ % ( K _ S 9 <0 9      A@ B+p B,H B14 B.D  * Dl =( U4 wd ( 0 {T ~ kP XT O8 A  Bx B.` B> B< BL BJ BX$ BP BW B] B[ Bm Bz BT B@ BD BEp B" B Bp BX B    @ B" Aa 2 7  A + S * A W Ax B B- B*x B A@ A B, 0 |    @   T 3 ? $ , , /L #   0( I ' < 0 ap ` >$ ' F F< *  x  S B B B   BH Bd B$ B$ B) B2 B>X B6 BS BV BJt BQ8 Bd B] Bb BPl B| B Bmd BVT Bo Bn BBD B  P % M m ` | u b @< ? - A. B* B% B(x B B   B, A   ? S [ e4 s   y e< Y MD 8    A@ B( B-p B | B,  B9 BH B/ B B&  B5 B  B B4 A    $    @H  K @X  B B=4 B> BM B\ Bbx BW BF B6@ B Bh l ( 3 (  @ B B7 BA BU$ B| B} Bw B Bt BY\ B\@ BI| B!( @    7t U( ^ p8 c V ` q ~@ nd [ x  B  A  5 ® T #| 8 \ ¢   t< R S @L 4 *0 4   AP@ B2L B:` B+ BBH BK BB BM\ N@```@@@@@@@@@@@@           (   0                                           **  **   5                             e       P  **        **  **  **   O      e           BA C B҈ t  -l B{ B\ B.L l4 y  Aހ , d$ 0 B B, ! ­d ] B C BX ?   '  B B V  ظ Bg Bk 4<   P Bk B< }P % B B Bj ] [ BOx B B| B a  θ « , B<  <  d B* Bw B@ B A ` dT B BX B B bx   B9 BG BQ @ l   = BQ< BT BY  v X d  Ǡ ¯ >` Ba C C C' C( C (8 1 A  V  ] V  p    L  Aj  C C) C5 C9 C2? C Bɐ B h, |\ ¯ Bۀ B$ Bք Bh B B B B B| BiT B_ Bm Bi BX BVd BX BD, BI B]4 Bq Bn, Bg Bd B| B Bt  By BcL BG B6 @  P % % 0P Z ( $     z    d y X ¦  ¬ ¯P ¶  ¶ ¹4 ²P µ ¸  h >    B$ BK Bu BT Bl B B B BP BH B| Bm BT  BS Bb B_ B[, B^  B B~ B{ B B B B B\ B, B B{ Bd4 BE| B*  B  < _ t q z { | zH [ Q S P C Id O\ n } s0 f d sh | b4 ] Y = 2 ' 2 3 5 ' h  < 3 @$    A~ B@ B2T BF B@ B' B8 BP N@```@@@@@@@@@@@@           (   0       	  	                            	      **  **   9                          	   e         **        **  **  **   S      e           u@ t  B B+ A  р @ AN A@ B( BT @ X  h A AZ A~ = 3  &<   A@ AU@ | - *   B( B A   +t l A:  Bt B/  B$ 8 A BL B&( B; BC B/ B%D B AT   Am AL   >< HD 6 (  \ "x   A  B<8 B`L BN B"` B! B,l B B' B%X As@ ) c      { B B0 CZ C#c C$N C Bp A · w  -  t  0 > s   C 4 B C C* C2 C3 C- C%: C C Bx  ³    &u )$ '3 $    $ B, C CA C  C# C% C#T CW C B B ¬0 H  '    h    l  B7H B Co Cu CW C C CV C C B` B[ > ¼x ?  ! " !   ½L E@ B C Cn Cu C! C v C C B BC 8 ¢  x   i   4 ­ Q@ Bh B C& C C CV C BP Bn  h ±    0  h M0 @ B$ BbH B B B@ B Bt BD Bzt BH B AJ  & = T ` Y| W [\ k ]T =   B* Ba B  B B Bd Byd BSP B ;  ª ĸ t  £8 e O 4 B B^ Bp| B[ B@ BM` Bp B B B} B BZl Bd 'd @ C$ ] a s, ml `X 1 A B; B@ BAd Bd0 Bg Bw B~ BL BV A@ , @ t  H  £  b ,  A A  A@ B+D BS< Bo B B B B Bk BUH B)D A  p ?0 V S .   Ag@  ! $T "  ,D G M cX i\ - Bf B B7   B -  C C B  h  7 B^ B4 B, ?    ³ B` C* Bx , § {4 B8, B C! BT BC | B< B Ck CE B B0 H ,  q ] I\ 5     * 2x .| 4< ( 7 +( !   A@ BT B, A B& B9P BC B: B't B1x B* Ai@ # V r 0    b$ X< F = @ : / "L 2X O  PD 7 @ B+P BT BtD Bl Bx B BH B̐ BL B BsH BR BC@ B1 B An AE@ H 1 9 +D d % 0 5 M  ET     "h 3 &p D B B#  B\ B B B BT BI| BY BA B$4 A= A;  A@ B$ BK B8 B&p A A3 Az @  A- H  4 D 8  | 1 /| & A@ BE Bk Bw BXp BE B" B8  4 h  µx 0 4 ¬( l ,d A@ B>T Bg B B B B\ BĠ B B} B> B- B`  8 V ]$ Z\ = <    ) R8 \ S\ A s p p  uP Y\ p B- B\ B] B~ B B8 B` B Bz B]| B"t A AE   Ay A\   1  @  .` (X 3 LX E @ / 1  P8 m QT ' A@ B% B# B B BL B4 B8t B64 B( B A]@ A A@ B B# B.4 B" B B B) B? BE BH B5X B)h B4 BNt Be BO@ B)$ Bh     $@ A   @ \ j@ j d v ¤ ¿ ¬| 8 g` Vt D\ B| I P 7H "  J ( A8 w B B.\ B3t B8 B/ B# B2p B?X BD$ B5 B  B, A A A@ B!8 B'$ A@  v@ B< B) B: B9  B(t B Aj@   B B' B, B Am  A B! B> B: BB BNd BW BK, BXh B`d BvL BV B; B B( B0 B1 AJ  ` (H    ; U k    D \    p  f@ VX H 0  \   AB A  B BH A D 0 A B#x A|@  $ '@ Bt B BP B* B& B B B, BJt B`X BZ B@ B2 BH  Bf Bj` Bj B B` Bh4 BQh Bi Bg8 B BQ BD @  Y@  6( E ST U @ \ A B, B) À A B&4 BL0 B6   ' ; S\ P M g( xp ,   ¯  o r d ^t i<  kh < ;p c` t Y  D  9 58   @ A@ B# B: BN BO BA BC BP Bq BX B$ Bh B B B B BΈ B B B B| Bd Bd BX B BT B˼ B B B Bh B B BH AZ@ A  B" BU Bq Bc< Bb8 B8 B B Bz Bg B[p B7 B< BL B$< B,   AU@ B) B@ BI  Ah %  /,  ¼    |    F 1 x k  q  ª x  U +L B B-t BA BW BH B BD B B Bр C CF C9 C C C C C C C C9 CN C- C C C B Bx B& @   & | ª  ~ X  x ip   ¨ ·D   * 5   %   , ;  x  v    i A   B  B   "d "L   j    k 0  B B_< BȘ B@ B CC C C  C C C! C&t C$ C#D C! C  C C^ C' C B B B Bd B# } Հ   4 ax ` y h ¨ (  7    \    Z       
  ²   }( C ;X   X  3@ Af BA B, BL Bx B B B4 B  BT B C C BP B Co C C B B B< B B֤ Bè Bh B0 BL BT BL B B~l BM4 B  a A 2D o s u  ¾, `  א t  q  p  0 x » ½D ¤ l| 5 9H ;T  B A  Bh B?< BSh B9 B; BB Bb B} B B_l B BP B B B@ B B4 Bp B~ Bz B^ Bv` BM B- AL  ! JT OP N` M \ r e L *| *@ B B B B B B\ $  A - L S` I D I Bx < 9 : A] B;D BR BD BG Bc  BhD BT BA B1 B  Ql ` `X _ b4 kX , h\ S@ Dl +   B48 BD B< BJp Bs B8 Bf  BI B( B B A!  t 5 HH WH x M % @D  m A(@ B4H Bn Bz Bj  Bv B B BVL B'\ B B  7 Sd k   0  oP q R & Ac B" B B0  BG B4t B B90 B>8 B)( v d  A. At  A< <    A B B%D B4 BI BUH B8, BP BY4 B0\ B# B.$ B ) 4@   d T 4   8 j ?` B" B2 ,  B B=$ B ^ A*  30 ^ ' 0  S :  Aƀ  0 3    B't B   A A  O h % D I < 3 3P  d b@   , !  A B! B7 BE\ BP BKH B? BL Bb B BT B1 B B  B` B BT B B'x B$  B B! BEp BF BS BBt B=l B" B AR@ @  = d  {  f j   dL F| 7 &8  B B)| B; BR8 BT BVL BZ BL B!P  /L @ S o  ¿L N@```@@@@@@@@@@@@           (   0                                           **  **   >                             e        **        **  **  **   X      e           J  B\@ By B  B Br$ B Bo B8 B Bc8 BHL B ? >,  J ¬P | E` L R<  Bp A/ Ay@ B  B B B> B!\  x  T P !x M w TD  |  @8  B BS B\ B B B` B$ B~ BiH B[ s@ 4    @   < # ",  ¦, C C; CT C[8 CP C;4 C$ BX P   S % / 9c Kx cL sl sp b8 << G C5 C`d Cxp C C Cs\ Cd8 CT$ C@ C,f C ¢ * J g | Ä0 z( g Op 1  Bm C% C? CR Cb< Co, Cp Ce( CQ C5 C l ( AL S [d Z  R F 7 " ± BȤ C!v C9? CB CM CN CF C< C- C( B@ G  '
 2 8 ; 8 .& !  Q  Bh CY C"! C& C' C(4 C& C  C C B /  $  
 "8 " - c J  d ]   B BH C C C C C C& B@ Bb\ % p   w4  ¨l  o l O  J  c  A  Bs Bޤ C Cj B  B B B B״ B B$ Ba  uL µ    , Op Bz Bd B A@ o ) B C~ C CZ C B| Bh B B 0 Q      A1 B BB  L t u@   Bр Ci BL Bj Cx C BX wP 3     U     / * Q 
  B C C- C;2 CBT CB$ C9k C-M C' C!] C' B$ Bc B5 " §|       | ̈ £$ n )  :$        8 §< vp  BO B B~ B|D B[ B4 A@  % N ^ ? ( l B BY B4 B Bl C C C* C C  C: C  B4 BD BVX B *` } ¾  : % 4  K     « m 7 B BZ, B_ BW8 BR BJ| BHD BX  Be Bl B B` B B B Bv BOl B2P A T  P  #t # '  B| B94 B B B B Bv B* A  i 8  R    P   N @ + B BqT B C6 C C C C$ C%^ C#= C! C! C C C	 C Ca B B>x A  + j ¡ H  ³  l     B   ! ! "&  G   4 r p  l  ¨ 7 A@ B]h B B C C C+ C/ C. C( C 
 CZ B  BW A  B6 B2  c    . *i P B CW C C  Ct   B, C Cb Bg0 ¥ V0 C> C< CU COh C5P C CX C C Bt 
 E b f Y J > 4 - $ U BL C0 C$ C& C"A CX C B h   + @  µ B C C% C2 C7 C8 C1 C% C Bo § ] - :4 @  @ =\ : 7| / '# s /  BG CE C C) C8D CE CQ CZl C] CY@ CP CE, C7 C% C  Q   , 3~ 7 6 3 / * # m  l   " ( ) ++ & ( D BQ C C7K CP$ Ce@ Ct0 Cl C C Cv$ Cc CJ C+ BX  8 VT pT Â ÌD Î` È | lP W @x ({ @ Bh C! C3 CC CO CT CR CM CC8 C6 C% C B B% Jt   Y  4 " ' +b . 0x 3" 4 3. 2 2 2 . %   0< B C C& C3 C8 CAd CG CKL CL CQ CVD CW CX CZ| C]X C\ CX CR COx CJP CA, C5. C(Q Ct Bs t !X 4 H [ l xx Á Æ É Ç Ä Àt y qd e Y, M ? /  ­t Bh C C* C9 CFd CPx CZ, Ca Cc Ca  CZh CS CN CE C9 C1 C- C' C! C C C Cr C B B B7 0 P   #N -' 4 : ? C C AL < 5X ,. "  ҄ ML B@L Bp C C C  C# C' C* C( C( C+w C, C) C$ C# C"P C C B B0 B a ؈    & ,% .d /
 . - ,l *
 & "     s   ~0 *| A@ B6 BQ  Bi B{ B B B0 C C C C" C' C) C+ C.r C0 C0U C/ C. C, C) C% C! C CK Cv B BWD   _  I - o   $ ( ,[ , -# - / .| ,2 ( % $ #      h v ! B+ Bl BD C C C C C! C! C C!
 C% C&j C! C C C CU C C CT B@ B BP By BY B2 m F _   8   C  6        ¾L  x Y   \ A  B B B. BF B] BA B,l B4 B9 B, B/P B@ BD B@ BM Bt B B B Bǈ B Bd B B\ Bd B| B] B&h B- BM0 B2  . p    ( ED N H8 X tp  p p d H x  $ ¢p  qX DX F /8 AS B+ B9 B4  B* BH  BX  B? B+8 Bt @   =< D c t z   y h } ] P B   A#  BJ B@ By B` BH B B B B B B B@ B B^ Bd B] BQP B? BC Bnt B] B; B+, B: BF BF| B:P B Av @,   8 ^ j  ¨ ¬X l L t || {X nX j zh p| {<    l bl ;t / $ AR@ B" B A  B5 BF< B2` B  BK Bh BE B:$ BLd Bk BJ B B B3p BI| B50 A  A6 A B B& B0 B8X BX @  A6   h   $ B% BN Bo, Bf, Bw BH B B_ BP0 B: B< B#T @  D  , 8 F E MD Y Kh + &H , 5H M M _ it ^ Gh T c b = & GP I 10 . F Td IL 9| (, - .  B B!L B+X BA BV BQ( B\  B[ Bcp B Bt BW BC` B\( Bft B\ BS( Bp Bbl BH B? BD` BO BU BO B., Bp B"  B7 B1 B  A %@  @   q A r@ $ * X  / X, lx ed ^d h PH P \8 h p$ fD E RT c f f l o VT K 5 ,L 4, h B B? BG Bl B B Bkh B< B B BT4 B\ B B7 B' AZ L BP BD x @X  B:H Bi BW@ B&X B8 B. B@ B/h B$| A B" B&x   \ @ A @ I Q( 8 C$ F )@ A B$ B A@ BE, Bu Bh B:L A A B B6  \ @ d W  d ¶  ° n, s ƴ  ¢ = 8 J @ B|x Bڴ B B B״ C% BL BT BP Bn BH @ 6 +$ | < n k >( $H ' &l @ B B*l Aq    B B`    B B@l x  ;H  A`@ A9 @ 2 B l B At  Ab@ B*@ B/  B6t B< B, B: B> B= B=( B$D A @      -l B  A G  ] u 4  ~ u O@  A AZ  B($ BU( Br BvT Bf@ B B N@```@@@@@@@@@@@@           (   0                                           **  **   C                             e        **        **  **  **   ]      e             A A߀ B B| B A  A A @h  ( @  A B A   .  t     e A  ǀ  x  A!@   A6 B A@ > x  A  AE A'  A@ A& < Y  ` 0 AL C 0  CDl C C C Ch Cp C/4 K$ ó   0  Á + C C0 C
 ] U Ä( É ZD BR C{ Cp D D D7 C` CHx #? u è ø ò Ý Ã kT W D / B BU BT A B9 Be Ba8 BN BR BR B#8   0  B)$ B7 4  ż X ½4 i   Ud  [ $ B=` B B   Q$ ) BRh B B BzD 6 V( Y o  B BL Bmd j {  B; B(t x %( ( ? K A B0 BP B"  ¿ ht ( B_ B BG U  $ Bp BԤ B Bh Y 1@ B. BA@ B BD   x p ߰ ! B BE ©   B$ B B, B0 Q  hp B BS B"$ S 4 kL  B B! A5@ ) H >@ A) Bq B B BTh /  Bb( Bl BH BGh  3  A  B& B, A;  ] ¶ ¶ ZL  {  &t E { w A@ B BH B- .\ fD N A BtL Bi,  g$ U4 1 A B3` BD A Od N$  B B$` B A7 $ gh \  B B  ´8 P B!@ B B @ ¸| ( ,  BȤ CF C N@```@@@@@@@@@@@@           (   0                                           **  **   G                             e         **        **  **  **   a      e           <, 2 !L  T B B! B B@ BX B B8 BL B/P B# B B: BGX B,l A B B$ 5@ "0  V$  5@ v    `  6 D D'~ D9
 D> D5 DQ B  ,r 1 + q    C2 -| ð  # %  _ D D0O DB DG@ D@ D/m D
 C Þ R    $x % !    Ð  Cn C DU D Dp D C@ Cm C)* C C! C4E C,! C CG CI C Ch D D Dj D D6 D" D$ D Cp o  z 9l M Z ^ Yd I\ /  C D% D5 D; D8 D/ D% D D D! D) D3 D: D; D5 D) D Bp  1 Gx W@ _ ^ W Jx ; +T  ׌ F@ C0 D< D D!w D# D# D D D C Cr CJ CR| C C Dd D[ D) Db D D Cd CP % Ã þ8  æ ] Bu  Cq CL D` Dy D D CŸ Ck4 B M Ø x )       # &r (T ( '[ #{ 7  ñ 1 Cx D D D$ D) D,x D, D+g D(Q D# D! D Dm C CI  m ø 0  N ,  ( ñ< j s C( Cc C Cl C~X CW C + ~,  j  o    '  g  C+f CH D5 D D"5 D%! D%F D" Ds DX D C C WX úl  > U    j $ rL ! C( Ch8 CH C C  C C C CY C, BL ] A\ \L m v { |8 w n a Q >0 &  C< C- CJ Ch C Cd C Cd C C CD Cb C;a B@  FX i\ Â< Ñ Ôl Ê v \, < a B@d C#m C= CL CT CWd CQ CC C02 C- B  2 F Q TX P G : ' + P B4 CR C C! C4 CT B Bu B&h 9 ~ { S @  Bt C C Cw C q CM CM C C B` BP Av  L8  »< Հ ( H h B* C C% C  C%h C' C% C CK B` B ­ q g  "  d   G !Z $l $? d    h  Bz B C C  C+ C C C\ CH B8 Bz B1x *  $t 1 V { X   ¼  L ·8 ²L \ B A^ B- BO B{( Bs B< B̜ B Bd B̤ B C C C C C C Cc C BP Bp ,0  Ҭ  ٜ   ±X £T  { s It 5 R `4 t ½@    ^   %> )w +
 ( #b ?  \ Bpl C  C] C( C-O C-O C+ C&A CW C B B| B)`  Q qx p0 G 2  \ AG B.| B\T B  B B8 B B| B B= 0  P o   ' B ? M  µ l A/ Bm B B0 C Ce CF C CV C B B B' D8 r    wD j 0 B B5 B A Ӏ \   W s x t ¯T ± ¬4    §< WT A BP B{ B B B B< B Bd B B B Bu4 B`4 Bi Bz BD  B A   6X 5 Ft U m z x s4 n  8 fX J RD 3  D  @  +  @ . I  . 8D 9 BN Bid B B B  BӸ B B B4 B Bq B"t @ ,D D< Fh G Wp _ bH b lP u  a Hp X Y < ,  2( > +   B#D B@ BU Bv B Bp B|H Bx B Bh Bn Be BIT BM B8 B3` B(P B A_ ? ; A h p a V b d J Y P L o L   °L ©    R  B  BP By B B B B B B B Be B! B A@   @ Ak B! B? B.8 B$ B3< B   # % X 8 F X G d    AE@   BT BA` BL| BC Bax Bn BN BR8 By Bb Bc BD B: A@ l 3 1 !L 6 V [@ YD KT L i i V b0 \ >( 1( 7 'X  Ae@ B"( B) B$8 B,d B< B  T # +H l  h D @x  A% AH  N   % &    x  ~ 5 < Ȍ } 4  !   B BO BXD Bq B B| B C: CM B B@ B BX BT B C; C CH C C C' C B0 BP B` iP °x      + < X !  z L 8  ®  I FT s u [ 08 B B\ B}< B B Bۨ C4 C C B Bx B Bvl Bd B^ Bv8 B+ . S :   8 \ _ jp cl J =\ N   $ D  B  B2( B4$ B= B[ B, Bl B` B B B Bp CP C B@ B< Bu BY B AE AM@ :L      D £ ®@ ´8  u S E d< L ´ ¬D  d ¥ °$ $  ¦ \ ' A Bt B$, BA B B B0 B B Bl Bs Bw Bz B  Bm` B/X 4  B BR B^ Ba B^4 BL< BU Bu B By$ Bjl B- Az A܀ BH$ Bf A   A@    \@ B)L B( %H W Q : 8 I S@     { Z bP ol  ¾  ©x }P c| C C /  5 B& BF B\H BD B4  B( Bj Bp BH BBL B@ B> BP Bf BxL BE A6   x  h  B  B3h B t A B+@ BIl B| Bx\ BX@ B8 P  @  B( ( 9 Kt M J +  6@ @ 7x G  )<     , #l  B BV Bq BbT B5 B A>@ Bl A@    ( A A& 5  B\ B?X B <  < S u v w  v |T  u /  B B $ %  AJ@ B, B0 B   8   B7 BST BJ BG B@ B! B8 B: B\ B]X BQ` B; B@ Bn4 B B B Bh B Be B\ BK A@ 2 x | º x l( Ph I sP x K0 $  D  : n ]`  B B+t Bl   +X  I < .( 6 ` r0 N -  BG BX, B: A  Bt B2 BH B4 B @ [ X  B5T B: B7X B. \ AȀ BW Bd BI B% BX Aj@  A@ B> Bo B> Y ;  B. B)l B 7h \ M \  B!x B< B*` ,< N\ Հ B# Bp ' h ~ s \8  B. B  / B BQ Bh4 Ba BD D@ =$  B.T B; B> B/L A  l Ao BX BX B | MX ] N 3t  ` X| { w l B) B2 B< @ 8$ @   B B1( B : ` : B' BL B;l B$ % & A@ B@ BO BIx B(   A B@h B Bgp Bg B8 \  6 @ B= B,@ `  8P D " B BR Ba BJ A 0 2 B B6 B, ), e k * B B+< Bt _  ; D A  B A 3   W,   B8 H = R 1H B BIh B0` 8@ G K 2| B BO Bl B@ B p B BkX B` BRh B >| \  -x B` B   ( !  B N@```@@@@@@@@@@@@           (   0                                           **  **   L                             e        **        **  **  **   k      e            B BD8 B<8 BD B\ B\ A@ AG BU Bk B? A[ B# BF BP BG BC< B.  L  @ AZ@ 8 / ^H |` v Z @ X  3< M « j : f Ë Ó k ¬8 Ch D D- D D D C, C#T Ø    A       å J C.o C( Dh D D&H D( D'+ D  D* C D @    F    . Ø  * Cd C D' D D D - D$ D C  CI VD   
  v   y  v  C# Ch CL C D D D D/ C  CL C΄ C C C4 C C C Ch Cmh CD C. Br _     
 # "  f 2 UH C D D6 D D9 DS D C4 Cb , _ ç0 Ր  $ ٨ ó` À > Bx CL C C| C| Cd C Cl Ck CK C,W C B]( 0 ? ( & %_ a @ C !x C b + F V ] _0 ] TL B & L8 C CA C_< Cr Cwx Cn CV C16 Bp 9@ w ó d      Ñx Nl A CZ< C D D D D D D% D0 D D C CS ¸ c ï \ S  H m ܼ è k 4c  BP CO C B  < i Ñ` ñ$    |   ̐ å t 9( BZ CB8 C|D C C C D9 C C CΨ C C Cth CY CF C; C< CEX CQ  C\L Ce Ci CgL C^h CQ C@ C(~ B l /G D, SH ] b b a  [H S( M J K< O [ g( p x À Åp Ël Ð@ Î Æ {h k U  <   B7d C* CN  Cl C C C C C C| C C{ Cet CO C<8 C. C# C CN Cm C C$ C/ C7 C<d C: C5H C, C  C B1`  % = Np W ^ c d b ] U G ; 1K (z !< v   Z 4 0      - B,t BT Bp B@ C C C! C# C"p C CA C C C C B Bd B( B C C C~ Ci C C Cl C C B B`@ B Ҁ ,   $8 H  g4 a8 9 # A@ B 4 \  {d `H 4 0 : ) D  / ¿ Cn CVD C9 C l 23 P jD x { t c I, ) ¥$ CL C/ CFh CS C[ C_ C[ CP, CAd C/< C< BkP  ! 0 9O @ D0 B = 7 -     C C"x C1r C> CE CH CD, C:, C* C Bx P } . :l A B = 4& ("  N  C C' C9O CF CQ CH C._ C, C8H C.w C B BJ  }  X YL B}l B B{ B` Cf C B w +r ? N ` n| jX S ?8 1  BP C B BL Bd B4 B B B BD B  C0 CB C+ C3N C: C@< CG CT Cdl Cl Ce COL C1 B(  8 Q b g b  N /  B4 C$K C7 CAx CA C7 C"G B2 # LD s  Ñ ä ë âH É8 bL 2  C3+ Cc@ Cd C CL C C C( C CeP CAt C 7 ! < S4 a\ hD k hp ^ M :[ #  B C  C36 C@ CI CP CR CNh CH CA C7 C,k C  C Bgt   * : K  Z h pP s( qd h Yt D +  B C( C@ CT< C_ Cc C^ CQX C= C% B( ¢P  (, , %  > C C*8 CA CS C]X C`, CZ CK| C3> C p 3R W y Ó ä ìT éd Û| Ã d$ ?  B C5 CW Cs C C$ C C( Cd C~  Cl CV C@ C+C Ct Bt J  #  = u b   (   r (/ .f : F O V \ ^ Z T\ Jl ?\ 0    B  B C C% C, C1, C4s C4 C2 C0 C- C+T C)# C' C&b C% C% C% C$ C# C!r C CL C C/ B B@ ,   V Z  b   S E T ̜ ( u4 x0 ~ H   1 5       w   Bh C	 Cj C C$ C& C' C% C  C) C* B@ Bm ƀ u     B   O  p »t  s ^ J\ @0 D8 K C 9D 9p 2 T B BXh B B B CC C C C> Co C C C C) C B B BK B| % H| j P °    0   @  7 O  t r * a [  @ ±`  r S   B* BDX BZ Bz B Bx B@ B@ Bь B B( Cr C C CN C C C CA C8 CD C( C B BH B Bs BE B$X 2@ t : M gD zT  t z  º ¬   L   h ٸ Ȑ ­   < x< |<   \ $  T ¨ ª4  b< NL >t \ @H  B| B3 B\ Bo0 Bp Bnt B] BT BYx B[ B[ BZl Be8 Bf$ Bw B BŔ Bܜ B B B B٬ Bx B8 B\ B Bn B@ B < d T 6 c, m C` + +P  5@ A@ A B| B' B/ B% A   H  A( h &d ?\ b  s n N E F O T LL 18 # `   (D 4t 9$ .@ 4 H i o V 1  $ A@ A A_ Aۀ B1 BW BN BX< BD B8 B8 BL4 BA B,  B w p  Aq  A@ @   =L B *    , 7x  AX  B B,  BC B1 B3 BD@ Bz Bht BW BSP BZ B7t B5< B6 BG B9 B|     Ae A% t  0 h (x , I@ A  ) . H @ L |   " A Z _ V fh   ¿X ¢| T d  ? 3<  Aa@ B B4 BiD B B` B` Bh B]P Bq` B}| Bo BM B' B  0 >, ; <x E g ` e< @ , A"@ B Bt Aǀ B B) BC BD B% AP  Ad@ B  B* B( B,x B B B+ BL0 BX  BT4 BB` B A B B h B  B! Av  $ #D " %  B| X t |< c$ > 0 +( ($ 4  A@ B8 BG  B<p BL A  A B% B AS@ A  /  Bl BH B A   @ - B@ B-| B( Bt AL   8@ B| B" B   ) 4 $ $ (  "x 0 2X  A  B     Y  B` BP AA@ w   &p #4   B B&l B An A  B% B> B6D B2 B" A  AM  B B A    @@ B B h BP A@@ v  $ 7 $` @  & 6 6<    @8  At  Az ~     A  A  B A  @ A@ BT B* B5 B? B'8 A B, BG$ BB B,\ At@  A A  B B B A@ A@ B B: BX BQP B98 BD     )    2 M e [ =  @ P p , '  @ Ao AӀ B B %d =  2l   ( E N @ , <  B Ai  8  B, B\h B?\ B# B( A  A B(t B+ B A D $p $     8 H >  L  B@ B., N@```@@@@@@@@@@@@           (   0       !  	                            !      **  **   Q                          !   e      x  **        **  **  **   p      e           A7  & n    >@  ! K@ A A@ A B B$ B#\ B( B% B,8 B) B&L B  B# B!p B B B   @ * % 't 70 ? @\ A :  1 /\   B$ B A Bl B! Bl B B( B (  P  @   !\ BL BR B^, B6  9 P B B "@   C pp ^ T B  B" Y 38 4x " A B  1 i(  M Ѐ B| Ag  , *  B BD, Be Bi B] B; B> Bx  B B Bc A < /     # 9 L ; AC B6 B)`  <t 9  @x  B< B  9 M` $h B, B9 B " I( 2 AP B( BC BU$ BAP Bl B BT B~  B B2 !P X _ J Pd Z\ q, P ½4   +, B( B- A  Ӏ AP  B? BbL B} B Bd B8p A  Bt BMd Bc B;  Y d J +t  0 qH  yX $ B% BH0 BD B( A=  B(p B_ Bo B BR A %  B90 B; BH #4 V@ k S    @ 3H M A| @ B< B[ B^ B    @ B B: BH` BB B   Ab@ BAL Bc( Bx B>  Q O0 ; C0 d  ­ ³ X + B B> BA B$ B! BGL B}8 Bv Bl B0  /  B% B ( M r  ` 5 x B B  $ @ B3 B^ BsL Bh B; A B B> BV0 N@```@@@@@@@@@@@@           (   0       %  
                            %      **  **   U                          %   e        **        **  **  **   t      e           AЀ 7      B B. Bt B B` Bt A@ L A  T ¢H ,T Bp4 B B:t 2p @ B7 BX B<p ]@ h ¸ 0 ·  8 B,p B@ B1 BE B B  B$ B B^ B " x( ® ¶( ­ b  B! BI( BG B7 BFp BG BM B9 B| B$ B0 B  =0 U lX x \  B- BH$ BL BO B` BM A@  5\ B 2  B4 B% B4 BT BO A   ;   P &(  < A B s  AE B B<x BX BC B<` B0 B     <@ A B' B'L B B` B1 B< B1H B  BD B/ B$| 4   B BH c  Aր B B B A{ A! 8@ 4 Am B l AN@  )T 4 * @  B` A@    B4 B+ BT A@ B( B2 A      + T AS  ŀ A B AÀ   B@ B   ,L .<   BD Bh B` A  W 0@ + B B B B B.d B! A@ @ g  A  AO AH@ A )      (L d A@   s@ R@ A  A  $  ! -@ ( t  5 7X A B', A  Z @ B%p B50 B B2 B @   h Aր B AҀ B, B4 B"H h  (t 'd    A B+| B4 B$ A B& B5 B4    A  A  $d $   -   <  ! $` p Av@ :    Bx B  )  AT A@  A)@ A=  C@  ) "  $<    A  B 8@   B B B B<| BC BD A@ A B3$ B1P B A@ A1@ A     A A@ A A >@ J   A Au  A  B  B| A   < @  Ai@ Ӏ Ae BX B   A@ B. B AҀ B' B8 A     F Ԁ  A  A A@ A5@ < BP A@ Bl B4 B* A  / T A6 A B B  AK B| A A  T @      ]@ ݀ % $ A@ Ai ` -T  B B  B BH   A 3 \  @4  A@ A  T C X    B#P B3 B& A A  B B'< B B& B*P A]    8 2, ) A  B\   ( & L  A Ao B BP  ^ B B1| BL 0 \ A A@ A @ c  J    A    n   Ai      B- B* /  _@ A A @  A@ A~@ - / <   ', L A  @    A(  %    B   B  !p (    A  Bx B ʀ @ G@ B A@ Am  Bl A   ]  AE@ A A Ae B% B    m B\ B 6 B B @    \ X G - A@ B( B, AP@ AB  $  #  A A@ 6  A-  AH  B B! A/ A@ B  + $h g B B$ Ar B!  , 0 L    $\ A* B B A B B BD    B" A@ t   8 L A A B B'T A ^@  (  ? ;  B< B#l A B B(4 B2< B @ A B  ,  A;  B! A  A B| B, A A  A Aq B\ BL BDH BF B"  1t  A  "@ A@ A A  } 7  A> 8   E   1 9@ 5   @ ( Y Ar@ A: A @  A B4 B#8 A@       A$ B r @  Bp B B| '  @l  B h B8 AӀ B0 B! B B A B  B@ B4 B%h B A@    A  X  B< B$d B Ay@ . (          B B/ B* B A  4 2 ;l /   N G          AE  B* B+ E 4H 3t   -        %` L @  $ $ 6T @ A5 A  @  # Bx B3\ B& B BD    Y @  B A@ @  k  A'  B B3 B A A@ B A"   $  A} B  B&0 B B A2 x  H @ l h B    ªX %     " B'l BY By, Bp BL B~ B CY B Bi Bc Be BH BP CD C' C BT B Bݬ C B( B_x <  ¤  |  .   o R ¤p   &  , A B6\ B B B, Bm AO  L I4 A A7  jt ƨ  ³  L B# BD B9( B4 B: BF B  C C B Be B7 B1@ BN Bel BQ Aπ $ ] I B  BX Ap@ OX c H  B5 Bc BJ B+ p@ 3t  B4 B2< -  d  (  @  % y   }, A  BBT B0 Az B*x Bj< Bp Bp Bt B  B Bd Bf B C% Bh BC4 L @ B* Bw Bi BI B& A F@ B< B B B^ @   +@  T F  ¶`  \  %(  M k > @ B.  BW BH B7L B 8  B<( Bk B/ / fx e Fx @ A  Y  4 4 B( B B BS  * l   #` & J H         ?d Dd A  Bw B B B` BT B} B; BE Bl Bx` A c ¶t   ]P EH '` ( h D  By Bp BH A Bx B5p Be B BP Bo  B1 @  B; B0 Bm( B !P  B*P Bv B B B B_ B6 BG@ Bm4 Bf0  D @  h s 5    $  ¯$ ax `` ip = Ah B\| B4 B܄ B B BW B[ B4 B B  B9   - | B B6 BB B)  4 B Buh B B@0 4 v4 ¤ \ T * . X    Bxh Bx Bm BG Bv B B C C C B B BX B C B BR@ B @ # ! A]   Y µ@ ߌ ±L ] b £|    R | ´L  P H   l A@ A  / >4  BD Bgh BL BP B BDX Af  B' B< B B Bt   AF B2 Bkd B B Bg B0 B+ Bn B B Bx BA@ Ay B B7  BF B9 B% , | §` _t " R p ±  i|  B X B=` B) @ + Al Ba8 Bx B8  ;| M C`  @ !4 ;( n X # BY  B` B' A A@ A  B* BE BD, Ax ;$ | v  A:@ 6 r  X , B* BW B B Bk BE BvH B Bհ Bo B 4 " / & )4 < Q $ bx  B/ B/ A+@  @ BT B-@ BN BJ B9` B$ P  B-l BI   C ip c M A :x T O uh y ; Bh B  G$ V E H 0 &l - > c DH A~ B] BN< B B B> Bp Bz B Bn BK B' Al B \ B Bv BA B B B B; Bz B BK B6L B) B B2 B\ BIL A$ 7 HP 9 < J( i 8 x D ¸  s< | ¨L D q P@ !  A B B @ B Bd| B^ B(8 / [ B B/ B18 B2l B2 B*x B34 B! BF Be BK$ B! B&( B, B-< B? BM B/ B  B  A Ab B B)  @ ,  R Bt B'$ B+l N@```@@@@@@@@@@@@           (   0       *                              *      **  **   Z                          *   e        **        **  **  **   y      e           ( AC@ B h @ T ] 4 P  H  B B5 ( [d  BQ BLx A 3 B B 3H P| , A@ Mh    M@ 78 6 H -  U  A  Bk< Bh B)H 1T @ BEh BT0 B A  B B ) A    B A,  v "< A& -d ;  A@  ;, %  i d  A@ B'  AA@ BC( BX BQ  B1h @ ! P   vL ·   f I "D B[ Bp C^ C C# C& C" C" \ 
 0 %* .= 3l 2 -6 (%      B B` C	 C- C< CB CA C= C6 C' C < " ) -6 :N ;$ 3 0d #    B B CR C% C2 C7 C0  C& C C B   #: )o 1 46 , !   µ$ BW C C Cq C { Ca C C B Bl BS `  ` µ ­ X ,  M 5 " B_| B B԰ BwH B^ Bu` Bh B` B  AY@ B Z ( B2 BS D p ¹ n ? =p K @ B@T B\ B7 BE Bp Be A   B= B B B  Bd@ BH| B)`  Y 2 Ao  ` P(  2 d ݘ p ¾d 8  ®( p B*0 +  B* Bu B B Ba, Bj B~ B- "@  B0  e`  N   B   B B! @ G Bm B| B8 ,D & A t  + W F B&` Bx B@ BL$ BO Bu BU ! U L8 @8 cd v 4P B W 00 Bl Bo B` B' BA| B B BL B BM B6$ B$ E` h 'l , lX ¾ ¢ T ? Xp  l @ B/  Bh B Bl B  ¨  vP & ?  [ #T B3d B D   B44 @  zp wD g BZ Bpd BG B;\ BZ Bx BYd B: Br4 Bsx B%L 7< 5 x  -x ) T 8    {|   i< BH` Bg B=|  d I  B C B xp Ӝ  B C Bܤ B!@ X  B C$B C%a Cx B D s B( C Cm B B { h BQ BP C Cw Co Cc C
 C! C  Cf BP B6  K V\    *K )  B P   | B Cs C  C% C# CS C C&I C1D C5 C.R C$r C C\ B Bb | %5 ? W a W E <P 5 &   BǠ C%+ C< CNL CX CY CTd CRd CR CH C/F B  - J \ f mh s4 t e E\  t C C1d CK C^T Cg4 Cg` Cc CX C>, C= A - (y G a( j k f| V A< , O _ B C ^ C4A C@, C@ C:p C5 C2 C* C  C BT  S ' %   ' ! ¹ @ B CD C C u C4 C C C C B Bm BXP BS B+T B B&< A/ ]<     Bx Bb A  B B~p B Bڤ C C C B4 B` C Cr C B Bc B$$ # $ AN  ¢@     Q     Ǥ B B BW4 B  BfL B) B B BҨ B` BO BF Be, By Bx BQ  d  k  ֤ 0 »t dd t4 A  B4 CN B B+ B,x B B` B B Bq  H  n(  | ¤, ̼   x B BR BV B B4 B( C C C B` B BU B?h BE A _ f W`  º  f  q P    Vx B(8 B4 B4 B} B8 Bl B B B BL BO4 B*P BLT B BVD D x   ۬   ­ ® , L D " B: BW\ B0 B/ B D 0 < BL BQ A@ {t  X k S t ±  ^ 9P B  Bx( B B Bg  Ba B B CG B B` BѨ BD BO Az B   8 ;  ĸ    ~ A 4 A@ B C# B B4 B B( Ck Cv B Bm B< B BZ C    1   BE B B|  " .L ' V 4 B\l Bw A v »  B Bc B A@ BU Bd  AK@ S` D A@ B[ B B B  BD   \ ½  8   Bh CO CS B P   H {  ³  @(  Y  | ;    } B B x B+` B BP ) $ BD B Bm` BH B[ B| C C Co C!_ C C CR C n C
 C C Ct B Bx B6|    i  ̠ ? v s   o G  a . Q F8 0 l l  §d ]X ` ~ \ A1  B+$ B  B` BD C Cj Cb C C C_ C B BL B, B BU B] Bc  u8 ³   P ® ³,   E µ Ġ  P ¦8 0 X wx A{  /h i 7 Bp B# BP B Bl Bi B; B= BJ B L l _ \ u q . A B A? "0 9 @  B> BC B7 B{ BL B BL B] B Bx B0 F( B+ B Bl B  Bl Bg B+ BQ B, BT BD Bpt B B_p B\ B BB :P 4 ,   ¡    t  ( 0 x mD ¢ u  !\ i  ® B BNt I ®L U BSp BC Y P  B& z, § B(P B| B|x  @ B B B- Aր Bi| Bt< A A, B B R ?` B B, A BH B- A7 /h 0 B  B@$ BO Bg, Bx< B^ B> Bu  B` C Bd B Bӌ B< Bt B B Bh Bu A  I y4 j E -p [ k _ B 2 . B ]@ i ` #T B: Bg BC A@ E @ « ³t  l ¬  6  ¦    }<   B B BV B< B C B  Bp B C B BL B B B BaX B= B:H B2\ Bp B B\ B q Ac @ 4 < M4  $ 3 
  ²X    h |X ¡X 1 B/ B7l A  h A BM BD B A  @\   AC Eh Y@ e B=< @l  D @ Bd BØ B^H P B= B B(d b / BL @h     (P Bt @( aT BDx B B-  B B BP E A Bd B( BJ BF B` Bi\ ) 2L B* B64 6  Y , B    Bl B?$ BK  B8L C  A  B  ( 3X QH n e ]|  ª   < l8 I 6 A@ B^X B8 9 ,x B0L B<4 AF A@ B! B' B9 BDh B6 B- B$ 0@  B0 BL( BI BLL Be Bd A A@ B@$ B^t B"< ^ ( @d B@  ` o8 B"` B)T l ɐ  Bb, 6T ¶< @ Bl B (  B-d BB4 A @ Aj@ AS B" Bt BT B x BK B BP B BBH Bb BA B"\ BYP B<p  gL  ®  $ | | ¹  U !@ A[   \ Up Bn BL BS ? B C{ B x DT Bp B@ P  BY B B+ BT B  BO4  ` l BM BI t B  BC Az@ , A> BZd BZd   DT A Bf( B;@  B[D B B A  B B B / ; B<   ~l   P   Ĥ ¬0  o @ ¶  v " B. B 5 @ B4 B1 B, A! B:4 B9 BH B Bb4 B B N@```@@@@@@@@@@@@           (   0       /                              /      **  **   _                          /   e        **        **  **  **   ~      e           A] B* BBX B- B& B 1 BD BDl Bt  B D Y N %h AX , [ C Cx Cb CN C: C ¦ /1 E8 U4 i |L Ã {D h U El 1 P CE C: CLH C] CrL C C CyX CeH CO C; C!W \X , F V8 h z Â |\ l4 V C 0  C C8Q CK C_\ Cu C C C{  Cf CP C>8 C" Tp -) E< U h( yd Ád |` mh Y G 2g  C C3 CF C[ Crp C C Cx Cgd CR C? C&?   - F W h yh Â } n( Y( F 2%  C C4 CI C] Crh C8 C C{0 Ch  CQ< C=\ C$ B % B( S eD wH Á } oh \ I 4 b C C1 CE8 CX Cn C C C{d Ch CT CB C*) BJ$ & @ Q eT x  Á |< m, Z I 7 s B C/ CC CU Cn@ C@ C CL CkL CT  C@T C' B5t %j @ R e w À ~ q ]| J 7  B  C1G CFd CW| Cn$ C C0 C~ Cl\ CX CE| C, B\ ! ?  T4 g y Ä4 ÁT t bD Nx ; #> B C/ CD CV Cn  C  C$ C~ Ck| CV CB C* B{ ( < P b t À  ÀL u a L  : ! Bt C- CF CW Cj C} Cl CD Co CYx CE C/, B  ; N  `x t À(  vl dp O <H # BB0 C* C@ CQ Ch C}` C C N@```@@@@@@@@@@@@           (   0                                           **  **   c                             e          **        **  **  **   M      e           B"   # &< $X A&  A t@ # Q >   A  BX B8 AH  @  @ B*X B1 B   BL ; = 8 !| +| =H [h 3X  AL Ax A  _@ $  X  B" B@ B*( B L B Bt B6( BV B@ B+, A@ < &  B B B  @ $t % @  B2 B6 B0 A; & :P  B B& A  * Wt O  B8 A.@ A@  #l  B B< BC4 B5| B& B  B0 B? B? B%   Q ¦ ܨ $  AK B C C C! C C Bc ¤   ! p  ;  l     ^  ¬H B\  Ce C$n C+ C)/ C  C{ BpD /   ½8  ²\  ; \    [ BB B C C_ C> C  C C B| Bc| [ U| T       ۈ ph  B8| Bq Bϴ Cj C, C C Bd B 2, o $ ©h ¿ 4 ºl  d 1 B' BS( Bf B\ Bw$ B B B B( BH Bw B8 t  8 g ¦8 P  » ` O : >L ` i I 4 B0 BW Bu Bq B] BH BP B[ B@ B@ B:\ B5 BY< Bi8 Bg` BV, A  : mt n, W )D  0 %\ B  88 :4 ?| &   x A@ B5 B4 B00 B X / I M I R0 N< F 6(  B3 Bh0 Bm B| Bf B> B2@ B B.  B'( B At  AX A  B B#0 B! Հ /p D  = * " #< 1 2< +  Au A a  L AQ AY  A@ B B\ B Bh B8 Bi8 Bt BJ BT W  @x  L + ! ^  A  AT B B:x Bdp BUt B,0 B A/ B B Al n $l N 4 ´ p  © v Y 4 A  B2 BBT B`H Btd B Bp B BD B BX Ba Bl E  U uX @    i W Hx  B&, B8P B8$ B$ B\ B , N = 7 OP V Gp X A BP B\ B, B6 BQ BLL B@ B A   / $ h - 9 =0 $L A  0 B B;4 B[ Bn\ BP  B? BM B\ B>P B  0  %` -` !4    ـ m B B> Ba BU  B` BXD BU B1L B @  ) = B !` A  A  ; ) d    & > ,x B, B B} B- H  S A@  AH B0 Bt@ B BZ< 70  l A{ Bc BK B4  V4 z  sH °    j, @ B( A   #  B(P Bc Bo BE B' A| d@ %  A B B Bt A    {@   $ B BL BK BB B? B-D B. AЀ Ad      A BH B' B9 B; BR BD B=H B% B A } (  <  < B *t   o@ A@ B) B)X B% B8| BDh B1 B$ BL @ i@  , 0 -   1< :<  @ L   ,l -   B B A@ B` B% B&x BJp BB B( B- B-t B B *   d x ( 6 G >0 FT . '  T  A B  B0 Bd B A@ @  @  8P N TD K@ 9 3| p d <    A B   B  B! B&` B$ B&` B. B4 B>  B, B$ A3 U  Հ A  A  *, 0   B B B B, B. B)L B' BF BQX B4 B  B AS A T  ր B  B & D  B B/ B,D B" B!h B& B58 B0 B0 B4 B. B\ A  B U ր + 9X C G ; : A > E S, L Yl <( " 7\ 9x R =L *H   d  ( 3 2 ) 4 B A$  B< Bd B B< B3l BX Bcx BS BI BEX BO@ BI BO B:p B"  Am@ B" B B% B+ B! B f    @  B\ B< @ "X  > { @  A? A7@  \  B B A   A@ A A@ A  B?( Bwl BP B4 B' 't . Hd ^ np p  k o8 j `$ \ X ) 4  B B8 Bh B\ Bg\ BO| BG B$ A@ @   ^ 4 X< UL Y `0 ] I #l  h Aa@ B(P B:, B> B5 B* BC B$ A    4 F 1h A BE BA BX@ B< B B BL Bq B Bk B3  B  B B4 @  H D , S r ` Z Q J 8 T  B0 A  A6@ B Ba Bel B2 B> BQ B/ B(  z$ t D 2 N f ;H  ` 'P &@    o  0 B B| A B2, Bd B8 B< AZ  v @ 7 I  P l y hH !@ A  B) BL A B B%T B$ B  4 MH b` JH >$ R @ , ( @ A9 B+@ BP BK| BM Bp Bp Bn Bi B B Bc B  A  >@ A@ X 5  B B0 B B* B, BCx B8 BO B}p BTH B6 B(\ AG 8  ! S L T sD | |0 r q g .P R  ( B B= Bm Bp  By0 B Bd( BQ B<( B, B= B' [ @  A 4 =L 4 D T 6   A  B A@ BH A A@ B A@  !8 ) 2 Pp J  D   @ 0 / %    B   < }@ A Bh Y AA  B# B" B!H B&X B B B, A B*d B B B, A B, B$ AC A@ B$ B( A B B B&@ B(T BF Bux BO B- B"l A  A A#@ P  % F ? 5 @ @ @ A B)P Ad B` B G  i      ) LT 9 ` 3 6X - % A%@ B, [ B4 BH B B  B B( A@  @ Ҁ 1 ) <p T\ > R i< | T    y i ^D ( x   Bt B4 B[ B{t BH B B B B B B  Bt B Bq BNH B8 Bh A B| B+ B1$ A@ @   A@    7T 7x `X f [0 H (  A@ B? BP BW BH BZ( B[ Bl| BS BF B  $t <h ^ q   z u   ~    yL d f j ]$ X U ZL g R@ P i\ a c< M <  T An@ Bt A@ B2l BJ B]D B BD B B  B Bɠ B B BL Br BX BU B+  Ah  B AX A} B  BY B Bh BӤ B C CN C	 B B@ B B_< B   A, p ¥ ´ ׈ M          ¿(    $ Y ' #P D Z H AF B B+@ BC B2 B#t B' B+ B& B   A  B AS A] A@ BD BA BE Be< B B Bx B8 B By Be BK BYT BJ BX B<0 BSx BX BB B? Be Bh BeX B_ Bq BTt Ba B3 AЀ Bl  @ YD H @  ¦ (  \   u | t  h   i ]\ GX ;, | B8 B; B3 BG BJ BF B08 BT Aƀ A; /| 7 I g r  w :  -`  B B4 BX$ Bu B, B Bɜ Bl B Bפ Bň B B Bt Bd BDh B%\ B Ab@ @ @ B% BC B3$ BK| B}| BT$ BH B/ B. BL  Ph ut  4  ¬8 H P º ¤ © »< »P §t { R< a N@```@@@@@@@@@@@@           (   0                                           **  **   h                             e         **        **  **  **   R      e           B$ B!$ B A#     = Lt >l L$ Y Jt 5 5  "h $    "| 8 18 /@ 7 :l - !  c@ A B+L B4T B2 B2 B B B A"@ @  A@ AV   A@ B4 B BL B$ B+h B. BB BS BB0 BJ BET BG B. B6 B)H B B "  5\ B > 7 8 AL 6 0 A؀ B| B*8 B<d B>D B6h B0   ;` _ S<   Bdl B\ C` C C C% C B A x <            u  B'h B C C  C$b C% C$ C C B  AW ¯   ~     nP % Bm$ B C C C Cb C 	 C C) BL B; r  K  " # ! %   k B< B( C C Cq C b C") C  C& C B B5 y    > " ! Z    a BQ B C C C C C CM Cz B( {@ k     ;   9 ش oP A  B Cg C C CK Ce C5 C B BX Ay . U g0 t » ¯p  z R [  BK By| B$ B\ B B B~ BJ` BL B  H n  ½  &     V  B> B| B  B C C B Bx Bx0 B 0 o4 µX `  , ´h t O ! B BU B|P B BL B B B Bk  B  > r ¥ ͌  0  $ « v 6 @ BM  B8 BH B` B  B  Bޘ BX By B> AG 7 U x } z P w s( e A l AB  B7 BX Bv BP Bp B< Bx B Bdh B) A A AS  @   . ?  H( KD [X B,  i A4@ B' BC B` B$ B} B B B B` B  B9   D( X     * N x E @  ! Bd BE\ >p @h B& B B  B BFp \\ o\ @ B4T B!  s, ,  B B Ba BhX 3` D % B@ B0 B@ B B8 i ¹ kp A  3x      C B C C. C; C7  C$ C} B)h \  #U * !"  , ·<   (G 7n 4 0 CV C0 CA| CA C: C6 C3 C+ Ce }@    9 b &- 4 8. 1 'Y  : C C) C/G C+7 C(6 C(C C) C' C{ B>(      U ' 1Q /( "5  B B C C C C# C* C* C& C B4 - є   i   &} ' $$  |L B1 B0   B( BX CO C( C( C` C] B B B BB AX  (  b  K x ވ  t Bbp Cm C C C B A@ A@ B= BF B p(  J  »0 ] u, h ˌ t B3 C CZ C C B| B B B| C C BX " ( º  LT ad |  < hD B? BP B8 BJ Aj  B3 B B B  n ¿ ¦ ^d A BKD B? ( ¥  ¿ Z@ @    ;  @ Bπ C B B Bg B C C C& C# C 0 < µ B: B D 
 #1 !f   ( @ h  w4 /  @   W \x B1h B4 BѤ 0 X BP\ B B+ O 2 {, < ^ Bь C  C= ´T v   B C BP +  Bִ C4' C9 C" B B; B$ B$ B*h Bt Bp BA<     8  r  B/P Bx  Bi Ba B B Bh BȔ B BQ Bc B B B@ £H  "-    s Q  a   b B B- @  1 A B C- Cv C C C CD C, C) C.0 C% C BAp  B8 B B-  " /3 - #   O "   $  B C& BĐ B  B C C' C* C# C B B h i    MH ¹ k   l  F _0 ư   B@ C C B Bx B* B Bt C B` BY a  mh B B rl  H s · Q @ A@ +< A + BQ@ B< B߀ B B! Ad BC< BP CU C C Cv B( B B Cq C! B BU4 ? u Y 1 Y   " "b p    [ 7   \l   ր X  Ќ Bd Bd B BT B\| @ B B C C" C CL B B CD C Cs C B@  F  Bb  B B   6 @ j  $ t    Bh B` B& @  ;0 BA B C Cb B B Bʐ C C CD C* B BVP  B%\ B B BA, `@  @ ¸ b8 |     c ) ª p ª,    ?x BV  B1 J0 X ¥d  E B, B9 *   h * B B' B À 7 A@ B C CE BĤ BDT B$x B  Cd C Cb B B B BD B( B Bϐ Bp BY 5\ h @ Bu| B BI G\  Lx AJ  B"  B,` B, A  Ac@ B7 BX B? BX  6 !T B B< BL g,   «   ¹ A R  ,   ­$  p ] n ²  ¼( =    {  KH * Aˀ A B Bq  B, B Cx C C C C B Cq C C" CN C; C. Cq C C Ci BQ M B! BPl BQ B3 B& Bl ( n  }|  h u  >     ; ׬ l  J > mL =h ² &  2 B$X 3` ¶  ± < B^ B*    BYP B BO H @L  B B  B Bl B&` BI B C C B B\ B B̌ C2 CZ C C B4 B"  B% B( A@ B# B), )   d ; B#L BF B' : y n8 H B(  D \ X ¾d ` 1 ,   (  p kl 3 Ep v   K B(0 B| BLT 8  = B=p BP Bz BQ4 BD( B4 B  B\ B C^ Ci B B=\ Az  Brx C C BD B8 9 6( B- B@ B BC|  p ® A߀ Bz B: N § z4 -, B Bs B B8 D ª µ x }L  t   º ` B Br B7@ @ t BG  Bd B Bh8 A  4 B# BV t  ®0   Q BF B^ @ ^ p4 D B C B B# 2 B44 Bh Bͼ B4 Bkd BN  ¢ · _ H @  @ P Yt  B{D B B BX r@ $ B8 Bn Bj B; *@ 1H `  O # B=L B? A N u T A# BG BoH Bul   ¡   BP B Bk x | « H B6 BF  | ¡ o` U Be BrT B%h / _ J\ B Bi\ BRX B ( %t B  B A @ d L \ q M@ BHD B,$  i y0 t FX B0 B@ Ay JP Zh A  B{ BH B! 7  W ; A B:( BE AE  X   U0 BD B B B Aɀ Q 8 BQ BoT B[ B" J P @ BF B BD| M   !8 BsP Bل B̠ BI Y vh  Bqx B  BH ! qH _ :@ B_ B BZ @ d {  BhP B Be = ¯ ¬ E B" N@```@@@@@@@@@@@@           (   0       
  
                            
      **  **   m                [  A@ B. B4$ B0 x ( 3@ + 1< H =l Dd v @ n O< Y c SD Nx @l #| [ AW  A@ A@ B# BT< Bu Bl Bw Bv, Bu, BZ B<H B* B( @  0 2t 7p 5| . " π ?  @  2@ B B\< Bj Bx B B Bj B Bp Bt B? A   C ]l S s`        q J 5P 5 ) & A  BH B6 B* B< BD B< BJ Bh` Bl BL B ڀ 3 @ D kL <  @  d$ 5t    A2  A  B- BLl BWH B\ BR BG B4 B. B7 B;X B/< B)( B)H B4 B! B0 A$   / - I K C` - +( 2p .8 9 7 A BQ B{ By Bzd B B8 B, B< B B Bc B?t B  :` o  ºt H @ ¦0  d ¶ X N@ . A B9 BJ BY  Bm< B$ Bs Bp$ BO BGt B8 A% x@   "      ~ At B B( B< B< A  B| BD B- B` B s  h   B @  3x 0     A B# B A  Ao  Al A  B B4( BX i A@ B A  W A n@ ! % p M x L  I<   f c F| P r N B l B!  Bx B]< BE B+, BZ Bh B{t Bup BZ BB BV B<4 BL   AS@ Aj 9 C #  ` ; G ( j@ @ x A@ B B' B8l BJ BJt BM4 B` Bi BE B BC BL| Aр 0  -P   0  `x Xh 6 N@```@@@@@@@@@@@@           (   0                                           **  **   q                             e      0  **        **  **  **   [      e           Aր AU B B, B@ BE B @  @ @   ' 7  C S EP 1@ 2  ( @ \  B0 BH Bp @  0t (X  A Ag@   Ap B. B4  BC BQ BL BV BHd BK Bv BeL   s (j *`   C  C> CS CX CM, C6h Cj B4  $ -9 /l / - - 1 ;
 F< L G$ 5  B C0 CO Ce Cs CwL Cn C[ C< C  2 L Y  Y P\ C 7 . &G l ¢ B C!> C7 CI@ CS CR CG C6b C  BL ¿  * 4 ; = > =  5K &Y  B9, C C2 C@ CF CD C=L C1 C$f Ci B{| \ x $ - 2 2 /L (  5   BF C C C" C&U C%t C# C  C Cn B A9 £ M  S     x W B4H B B C4 Ct C C C Bܴ B9 A L » § u  Y  A5@ B B6X A BHd B C C C4 C C B, 6     |  ? Cw C. C3C C D  & + 3 A( G B 5 )i    Q< B CZ C!# C4 CE CG< C:% C) C C B_ x ؤ ¬ g Q KD U o ®  ½, 8 O  B< B0 B6 B$l ? K §   z <    A  B C C0 C= CE\ CG0 CD C< C/+ CO Bl ¦  2 A< J$ L  I A 5 %  B5  C` C%U C- C1 C2 C04 C) C! C C* B BT\ A  v <  As  B$< BQP B B B| B Bc P ¦   ( 1t 6 : =$ : 7^ 2 - &  @ WL B C C( C1 C8 C:L C8 C5 C0) C' C C Bo A(@ Z ¾ t k K  < ¯P ~ i8 j$ a t $  P F       o ` ?D Bel C	 C C* C6/ C?0 CF CMl CQ CR| CP\ CJ C@ C6 C, C  C BpH h<   % -: ) )" ' '6 % "  (  f $ ) .[ 4 :{ ? D( H L N  Lh G ?8 3  %  ¢ B? C C! C.4 C8 C> CC CF CI CK` CL CJ CI CG CE  CB CAx C@@ C<$ C5 C. C'l C- CC B( B!d ¹  ! , 3 :9 >D @ B A > 9% 2 , ) #    ± K A  B` B͈ C9 C C% C+ C C C C_ C C CG B| B B&(  6X _H  x `   p ¸@ ¸, · ¹@ ©h ª$  x( \ WP R Yh FT 5  0  B B1 BJ\ Bm B B BX CF C C} C CJ C C C C C C	 C Cs C C B  B Bz8 BO A%@ D  x L =  O  !I % (c +n + +% )U 'C %V !5  0 Q  s *8 B B9$ B~ B C C% C C C Cp Ci C CU C C Cs C C C C C] C) B` B CJ B B< B B By  Bf B6` B @ 9 q ¦ ( ݐ   M   V J 9   D | ³ ¨  Z Y( L Dp F| (    @ " B B4 BT B\4 B] B_ B_P B^ BlX Bf Bv B B| Bh BY Bj Bg BcH Bn BY  Bc  BE\ B\l B\L BN BA B3 BD BD ?    ( KD cx `( b Z ^ a< ]t S 1  AE A  Ax  A.  A  A *@ π AP@ A  A@ Bh B64 BN B^ BlD BiP BW B=l BC( BJ BJ B1 B. B B B B A  #! rnews 1312
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!strath-cs!jml
From: jml@cs.strath.ac.uk (Joseph McLean)
Newsgroups: sci.math
Subject: the extendability of digit sequences into primes
Message-ID: <753@stracs.cs.strath.ac.uk>
Date: 2 Dec 87 10:36:33 GMT
Reply-To: jml@cs.strath.ac.uk (Joseph McLean)
Organization: Comp. Sci. Dept., Strathclyde Univ., Scotland.
Lines: 19

Is the following conjecture reasonable and/or provable? :

Given a sequence of digits, starting with a non-zero digit, of arbitrary
but finite length, is it always possible to extend this sequence by
appending more digits, in such a way as to form a prime?

e.g. the sequence 1 can be extended into a prime in an infinite number
of ways, as in 13, 17, 19, 101, 1231, 1579, etc (there an infinite
number of primes beginning with a 1 by Bertrand's postulate).
However, it is far more difficult to try and locate a prime which
starts with the sequence 1528296922945708 (although at least one is known).

My personal opinion is that the conjecture is reasonable, simply because
one can keep adding digits at the end and checking for primality ad
infinitum, and the law of averages will do the rest. Of course this is
totally groundless mathematically, so can anyone provide a heuristic
argument with more weight?

        jml, the mad mathematician.
#! rnews 3077
Path: alberta!mnetor!uunet!husc6!psuvax1!burdvax!bigburd!fritzson
From: fritzson@bigburd.PRC.Unisys.COM (Richard Fritzson)
Newsgroups: comp.editors
Subject: Re: lisp environments (Structure vs. text editors)
Message-ID: <3375@bigburd.PRC.Unisys.COM>
Date: 14 Dec 87 02:11:18 GMT
References: <487@PT.CS.CMU.EDU> <460@cresswell.quintus.UUCP> <499@PT.CS.CMU.EDU>
Sender: news@bigburd.PRC.Unisys.COM
Organization: Unisys Corporation, Paoli Research Center; Paoli, PA
Lines: 56

In article <499@PT.CS.CMU.EDU> ralphw@IUS2.CS.CMU.EDU (Ralph Hyre) writes:
>In article <460@cresswell.quintus.UUCP> pds@quintus.UUCP (Peter Schachte) writes:
>>Text editors CANNOT simulate structure editors.  They can do a rather
>>feeble job of it.  Text editors fall down when context information is
>
>I disagree - a PROGRAMMABLE text editor can do anything you want.  This is
>because it's programmable.  Whether you're happy with the performance or a

Sure it can do anything. The best way for a programmable text editor to
simulate a structure editor would be for it to build an internal 
representation (or structure) or what was really being edited and then 
use its text manipulating primitives to show the user the effect of his 
editing commands on the structure that is "really" being edited. Now you've
shown that mocklisp (for example) is a language in which you can implement
a structure editor. I doubt if it is the best way to do it though.

>>...For example:  a structure editor can supply different commands, different
>>facilities, for editing comments and code.
>Seems like there's the potential here for moby modefulness.  I can't see
>why I would want different commands when I edit code compared with comments.

I don't know about "commands", but Common Lisp comments are nothing
like Common Lisp code (much to the shame of Common Lisp). I want the
characters I type in as comments treated differently than those I type in 
as parts of S-expressions.

>My interest is in an pseudo-WYSIWYG editor which gives you the option
>of entering/editing text without formatting attributes, then optionally 
>displaying the text with them. <...>This sort of decoupling between editing a
>document and a representation of a document could even be used to great
>advantage in many environments:

You're right. An editor which is really editing the structure underlying
the visual presentation of it IS a useful thing. 

>	A program code editor might actually be showing you variable names,
>	statements, and S-expressions while it is really writing the P-code
>	(or .lbin file) on the fly.
>	This could result in 'instant' language interpreter facilities and 
>	fast compilers.
>	[I admit that this might be hairy to program in MockLisp.]

But it is one of the reasons Xerox structure editor fans are fans.

>[disclaimer: I've never used a 'structure editor' 

No offense intended, but I could tell. If you write any Lisp you should
look for an opportunity to try SEdit on a D-machine.




-- 
	-Rich Fritzson
	 ARPA: fritzson@prc.unisys.com
	 UUCP: {sdcrdcf,psuvax1,cbmvax}!burdvax!fritzson
#! rnews 3135
Path: alberta!mnetor!uunet!husc6!cmcl2!brl-adm!umd5!ames!sdcsvax!sdcc6!loral!dml
From: dml@loral.UUCP (Dave Lewis)
Newsgroups: rec.arts.movies
Subject: Re: Live Action Amber Films
Summary: Use Zelazny's descriptions!
Message-ID: <1496@loral.UUCP>
Date: 14 Dec 87 06:41:04 GMT
References: <349@morningdew.BBN.COM> <2620001@hpcvlx.HP.COM>
Reply-To: dml@loral.UUCP (Dave Lewis)
Followup-To: rec.arts.movies
Distribution: na
Organization: Loral Instrumentation, San Diego
Lines: 59

In article <2620001@hpcvlx.HP.COM> markc@hpcvlx.HP.COM (Mark Cook) writes:
>>/ hpcvlx:rec.arts.movies / dkovar@lf-server-2.BBN.COM (David Kovar) /  7:07 am  Dec  9, 1987 /
>>
>>  Well, someone else was wondering who would be the actors in a Tolkien
>>film which brought to mind a favorite question of mine from a few years
>>back: Who would play the parts of a Amber film? I used to have the

>>Corwin: Mel Gibson

Jonathan Pryce. From "Something Wicked This Way Comes".

>  even better, how about Timothy Dalton (James Bond isn't the only thing he

>>Brand: (Who's the guy from Kiss who was in Runaway?)

>  You mean Gene Simmons.  Well, he could play the part but he has to look like

  No way. Brand is "a figure both like Bleys and myself. My features, though
smaller, my eyes, Bleys' hair. There was a quality of both strength and weak-
ness, questing and abandonment about him." This is Corwin speaking, of course.

  And Bleys is "a fiery bearded, flame-crowned man, dressed all in red and
orange, mainly of silk stuff, and he held a sword in his right hand and a
glass of wine in his left, and the devil himself danced behind his eyes, as
blue as Flora's, or Eric's. His chin was slight, but the beard covered it."

  I can't think of anyone offhand for either part, but I nominate Gene Simmons
to play Caine: "Then came the swarthy, dark-eyed countenance of Caine, dressed
all in satin that was black and green, wearing a dark three-cornered hat set
at a rakish angle, a green plume of feathers trailing down the back." (Yeah,
I got "Nine Princes in Amber" lying right next to the keyboard here)

  Random: "a wily-looking little man, with a sharp nose and a laughing mouth
and a shock of straw-colored hair." How about Dudley Moore (with his hair
bleached, of course).

  Dierdre: "a black-haired girl with [Flora's] blue eyes, and her hair hung
long and she was dressed all in black, with a girdle of silver about her
waist." Lee Meriwether or Kate Jackson.

  Fiona: "with hair like Bleys or Brand, [Corwin's] eyes, and a complexion
like mother of pearl.  Ann-Margret!

  That's all for now; if people are interested I can type in the whole 2-1/2
pages of descriptions so we'll REALLY have something to argue over.

-------------------------------
          Dave Lewis    Loral Instrumentation   San Diego

  hp-sdd --\     ihnp4 --\
  sdcrdcf --\      bang --\   kontron -\
  csndvax ---\   calmasd -->-->!crash --\
  celerity --->------->!sdcsvax!sdcc3 --->--->!loral!dml  (uucp)
  dcdwest ---/                 gould9 --/

  "I'm alive and he's dead and that's the way I wanted it."
   -- Corwin, about Borel

-------------------------------
#! rnews 2421
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!strath-cs!jim
From: jim@cs.strath.ac.uk (Jim Reid)
Newsgroups: comp.mail.headers
Subject: Re: RFC976 vs. the real world...
Message-ID: <754@stracs.cs.strath.ac.uk>
Date: 2 Dec 87 12:51:51 GMT
References: <18533@amdahl.amdahl.com>
Reply-To: jim@cs.strath.ac.uk
Organization: Comp. Sci. Dept., Strathclyde Univ., Scotland.
Lines: 40

In article <18533@amdahl.amdahl.com> tron@uts.amdahl.com (Ronald S. Karr) writes:
>Some Introduction:
>However, we have conflicting ideas concerning what to do with sender
>addresses in headers.  We do, now, support the idea that a pure !-path
>coming in can be left as a !-path, with the current hostname prepended
>(this is optional and is a function of the destination).  However,
>should I ever produce, in mail originated locally, a From: line in the
>following form?
>
>	From: localhost!username

The answer is perhaps. In an ideal world, everyone will adhere to one
standard for mail headers - RFC822 possibly, but X.400 is more likely.
Until that glorious day arrives (if it ever does), mailers at the mail
'gateways' between networks will have little option but to munge
addresses because of incompatible mail headers and addressing formats.

What you mail system should do is rewrite mail headers into the
appropriate form for transmission to a given host. In short, if your
uucp neighbours only understand bang-style addresses, you mailer should
only present bang-style paths to these sites. If some sites understand
RFC822 (user@host.domain), then you should send them RFC822 style mail.
What would be less easy for the mailer is separating your bang-stlye
uucp neighbours from those who understand RFC822.

The best mailers (MMDF or sendmail - no flames please!) take an input
address, convert it to a canonical form and then rewrite the address in
the appropriate style for the message transfer agent. This is the most
sensible way of dealing with hybrid addresses like A!B@C. [Does that
mean send by uucp to A for relaying to user B on host C or does it mean
send to C for them to relay to user B on uucp host A? Then what if C
(or A) doesn't like addresses with '!' (or '@') signs in them?]

		Jim
-- 
ARPA:	jim%cs.strath.ac.uk@ucl-cs.arpa, jim@cs.strath.ac.uk
UUCP:	jim@strath-cs.uucp, ...!seismo!mcvax!ukc!strath-cs!jim
JANET:	jim@uk.ac.strath.cs

"JANET domain ordering is swapped around so's there'd be some use for rev(1)!"
#! rnews 3873
Path: alberta!mnetor!uunet!husc6!cmcl2!brl-adm!umd5!ames!sdcsvax!sdcc6!loral!dml
From: dml@loral.UUCP (Dave Lewis)
Newsgroups: rec.arts.sf-lovers
Subject: Re: One more long-gone show
Summary: What S. F. movies should be
Keywords: Questor
Message-ID: <1497@loral.UUCP>
Date: 14 Dec 87 06:45:22 GMT
References: <1672@bsu-cs.UUCP>
Reply-To: dml@loral.UUCP (Dave Lewis)
Followup-To: rec.arts.sf-lovers
Distribution: na
Organization: Loral Instrumentation, San Diego
Lines: 64

In article <1672@bsu-cs.UUCP> cfchiesa@bsu-cs.UUCP (Christopher F. Chiesa) writes:
>Anyone remember a movie called _The_Questor_Tapes_ ?  Basic premise: gov't
>project constructs an android according to eccentric scientist's specs; and-

>C.Chiesa

  Yea, verily, I recall The Questor Tapes. I've forgotten the scientist's
name, but he was a very rich and secretive genius known for several major
advances in robotics and cybernetics. About 2 years previous to the start
of the movie, he had disappeared, leaving only a partially completed project
he called Questor. Much of the work was complete, including a small fusion
reactor, most of the brain, and a lot of the support machinery. He also left
a BIG mag tape of programs, which some government idiot had partially erased
while trying to decode it. Questor, when activated, did nothing; the team
that assembled him figured it was because of the bad tape.

  Late that night, Questor got up, used the 'finishing' molds to give himself
human features, and walked out. The scientist had known one member of the
Questor-assembly team and put his name and address on the program tape; by
good fortune it had survived the attempted decoding. Questor knows only that
he must find `a boat' -- other details have been erased.

  The government catches up with them in a playground and some fool shoots
Questor. Apparently the shock knocks some bits loose because when he sees
a jungle gym that looks like Noah's Ark he remembers, "the boat, the boat
of legend. [whatsisname] is waiting for me there." He also remembers that
if he doesn't find the scientist within about two days, his fusion power
supply is programmed to overload and blow up.

  They patch him up and he leads them a merry chase to Mt. Ararat where he
finds his creator in a cave hidden by a force barrier/hologram projection.
There is a long row of metallic slabs suspended about a meter above the
floor; on each lies a defunct robot. Each one wears clothing from a time
far earlier than the next. Questor's creator lies on the second to last
slab, still conscious but unable to move.

  These robots have been watching over the human race for more than ten
thousand years. Each one lasts two hundred years, then builds his successor.
Questor's predecessor was brought to an early end by some combination of
pollution and radiation exposure; he has provided Questor with extra
shielding so he will last the full two centuries.

  Questor is the last. By the end of his term, the human race will have
reached a point where we can make our own decisions without guidance.
The robots were placed here by some advanced aliens to see us through our
racial childhood, to allow us a chance to mature and achieve whatever
potential we have.

  The Questor Tapes was an excellent movie, one makers of more recent films
should take a lesson from. Very few other movies have impressed me as much
as "2001: A Space Odyssey" and "The Questor Tapes". They show up the likes
of"Close Encounters of the Third Kind" and "E.T." for the vapid silliness
they are.

-------------------------------
          Dave Lewis    Loral Instrumentation   San Diego

  hp-sdd --\     ihnp4 --\
  sdcrdcf --\      bang --\   kontron -\
  csndvax ---\   calmasd -->-->!crash --\
  celerity --->------->!sdcsvax!sdcc3 --->--->!loral!dml  (uucp)
  dcdwest ---/                 gould9 --/

-------------------------------
#! rnews 1384
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: rec.arts.sf-lovers
Subject: Re: M. John Harrison
Message-ID: <1560@brahma.cs.hw.ac.uk>
Date: 2 Dec 87 18:20:17 GMT
References: <1950@charon.unm.edu>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 23
Summary:

Expires:

Sender:

Followup-To:




[ignore the above address and use my signature]


By far the best thing I have read by MJH is a long short story called
"Running Down", about a man with unwanted psychic powers that cause things
to malfunction, decay and fall apart around him. It is set in a Britain
in the near future of when the story was written (i.e. about now) in which
the whole society reflects a similar dingy, pointless chaos - remarkably
like Britain after 8 years of Thatcher, in fact.
He's very good at describing that sort of situation - his novel "The Centauri
Device" does it at length, though his suggested political solution is bloody
stupid. His understanding of anarchism is about on a level with Robert Anton
Wilson's.

- jack

-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1188
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: rec.music.classical
Subject: Re: Tippett
Message-ID: <1561@brahma.cs.hw.ac.uk>
Date: 2 Dec 87 18:38:20 GMT
References: <1950@bath63.ux63.bath.ac.uk>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 15
Summary:

Expires:

Sender:

Followup-To:



[ignore the above email address and use my signature]
Tippett moved on a LONG way musically after "A Child Of Our Time".
I believe his masterpiece is the Triple Concerto for violin, viola and cello.
There is a wonderful recording of it by Pauk, Imai and Kirschbaum with the LSO
under Davis.
A problem I find with a lot of his music is the silly words. The man really
shouldn't have tried writing his own libretti that often.
I believe he's got another opera in the pipeline, due for its premiere in the
next few months.
-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 894
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!jg
From: jg@eagle.ukc.ac.uk (J.Grant)
Newsgroups: comp.sys.mac
Subject: The Spinning watch cursor
Message-ID: <4023@eagle.ukc.ac.uk>
Date: 3 Dec 87 14:59:09 GMT
Reply-To: jg@ukc.ac.uk (J.Grant)
Organization: Computing Lab, University of Kent at Canterbury, UK.
Lines: 11

OK - I've changed my spinning watch back into the lovely sand-timer
(remember the good old days?);  I've changed the CURS resource in the
Finder and also in the System so that I have various quantities
of sand in the top & bottom, but there is still a watch lurking!

More precisely, where does the watch that says 9 o'clock live, as
now I get the magic watch followed by the sand1->7, then the watch
again as the cycle repeats.  This only happens in the Finder, so I
suspect that there must be a watch lurking elsewhere, but where?

Ps. system 4.2b(5?) & Finder 6.0 (Mac 512Ke)
#! rnews 3539
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csnjr
From: csnjr@its63b.ed.ac.uk (Nick Rothwell)
Newsgroups: rec.music.synth,rec.music.makers
Subject: Casio MG500, Roland MT-32, MIDI bug? [LONG]
Summary: Where's the MIDI bug in this lot?:
Keywords: MG500 MT-32 MIDI
Message-ID: <805@its63b.ed.ac.uk>
Date: 3 Dec 87 13:10:56 GMT
Reply-To: nick%ed.lfcs@uk.ac.ucl.cs.nss (Nick Rothwell)
Organization: LFCS, University of Edinburgh
Lines: 46
Xref: alberta rec.music.synth:1879 rec.music.makers:1070

Last weekend a friend and I strolled into a music shop and ended up playing
with the new Casio MG500 MIDI guitar linked into a Roland MT-32. I don't
play guitar, and was just along for the curiosity, but I've got a few comments
to make and a question about what I consider to be a MIDI bug in one of the
instruments.
   Firstly - the performance of the MG500. I wasn't actually playing it (I was
just pushing buttons on the MT-32 instead), but I was impressed with its
speed and tracking ability - it was fast and followed pitch accurately,
responding to pitch bend and so on; it generally sounded pretty tight.
There were a couple of things I didn't like - but maybe it's a generic
weakness of all guitar-to-MIDI systems. Firstly, the guitar transmits
velocity information (hit the string harder -> louder/brighter note), but
gives no control (other than pitch-bend) once a note's sounding - there's
nothing equivalent to aftertouch/modulation so once a note sounds you're
at the mercy of the synth until you stop the string.
Point two - You've got six strings, so you can only sound six synth voices.
This is probably obvious, but playing a guitar patch through MIDI doesn't
sound like a real guitar, because each touch of a string retriggers the voice
on that string, sometimes in a rather distracting way. On a real (classical)
guitar you have the resonance of the soundbox to hang on to notes so you
aren't aware of this (I presume - comments?)
Now for what is (in my opinion) a MIDI Bug! Play two different notes on
two strings and you get two voices - ok so far. Play the same note on two
different strings and you get one voice. Humm. Play two different notes on
two strings and slide one note up to the other, and one of the voices is
chopped off. I think this is a bug - something somewhere doesn't want to
the same note more than once. Needless to say, this completely screws up
a number of guitar chords.
   We mentioned this to the guy in the shop. He seemed convinced that it's
a problem with the MIDI spec. itself - if you play a keyboard synth, you
have to release the middle C key to play it again, don't you? I think this
is a load of dingos kidneys - if I send my D-50 two separate middle C
note on messages, then I'll get two voices cycling through the envelopes at
middle C pitch. This is what happens with the sustain pedal on, as well.
   What's the verdict, net people? I think the guy was wrong (quite adamant,
but wrong...) and there's a bug in one of the boxes. I suspect the MG500.
If the MT-32 is anything like the D-50, then it doesn't care about playing
the same note twice. (A quick note in passing that synths with less voices
(Juno106 for instance) often won't double a voice, in an attempt to play
chords properly without running out.)
-- 
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk
		<Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
"Nothing's forgotten. Nothing is ever forgotten."   - Herne
#! rnews 1505
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!bath63!pes
From: pes@ux63.bath.ac.uk (Smee)
Newsgroups: comp.sys.atari.st
Subject: Re: Resource file question
Keywords: resource mwc rcs .rsc dri c
Message-ID: <1963@bath63.ux63.bath.ac.uk>
Date: 3 Dec 87 10:33:26 GMT
References: <1592@wiley.UUCP>
Reply-To: pes@ux63.bath.ac.uk (Smee)
Organization: AUCC c/o University of Bath
Lines: 19


You might try looking to see if K-Resource is still available (by Kuma Software,
who else?).  It's been out a long while.  It's now available bundled with some
of the MetaComCo stuff (in particular the new Lattice C) but I believe that
Kuma still do it separately as well.  Don't have a clue what it costs, but
must be cheaper than a new compiler.

It produces (by switch option) appropriate 'include' type files for C,
FORTRAN, and 2 other languages which I've conveniently forgotten -- in
addition to the expected .RSC file.  Will also produce a 'non-specific
structured description' file (they say, I've never tried this) which is
alleged to be pretty easy to massage into an appropriate 'include' for
any unsupported language you might like.

The documentation is written in a bit of a 'too-folksy' style for my liking,
but the program is pretty intuitive to use which makes up for some of that.
It does, however, assume that you have some sort of a clue as to what the
various resource items/flags mean and do -- it doesn't teach you how to use
RSC files or what they mean, but rather gives a handle for making them.
#! rnews 1258
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!neil
From: neil@cs.hw.ac.uk (Neil Forsyth)
Newsgroups: comp.sys.atari.st
Subject: Bug in bets test Gulam
Keywords: none
Message-ID: <1562@brahma.cs.hw.ac.uk>
Date: 3 Dec 87 09:46:32 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 28


I think I have found a bug in the latest version of Gulam.

         alias test 'echo $<'

produces a couple of spurious charcters on the input line.

         $<%&

The characters are usually above $80. The alpha version didn't do this.
I just delete them by backspacing anyway.

         echo $<

by itself works fine.

-------------------------------------------------------------------------------
"I think all right thinking people in this country are sick and tired of being
told that ordinary decent people are fed up in this country with being sick and
tired. I'm certainly not and I'm sick and tired of being told that I am!"
- Monty Python

 Neil Forsyth                           JANET:  neil@uk.ac.hw.cs
 Dept. of Computer Science              ARPA:   neil@cs.hw.ac.uk
 Heriot-Watt University                 UUCP:   ..!ukc!cs.hw.ac.uk!neil
 Edinburgh
 Scotland
-------------------------------------------------------------------------------
#! rnews 1009
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: comp.sys.mac
Subject: Re: how strong of a magnet?
Message-ID: <1564@brahma.cs.hw.ac.uk>
Date: 3 Dec 87 18:59:42 GMT
References: <9554@shemp.UCLA.EDU>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 12
Summary:

Expires:

Sender:

Followup-To:



[ignore the above email address and use my signature]
This may be an FOAF story (urban folklore) but I have heard that the mag-lev
train at Birmingham Airport lets enough field into the passenger compartment
to wipe floppies.
Then again, I have also heard that story about ordinary underground railways
and it certainly isn't true of them.
-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 988
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csan
From: csan@its63b.ed.ac.uk (Andie)
Newsgroups: comp.sys.atari.st
Subject: Re: Resource file question
Keywords: Kuma
Message-ID: <808@its63b.ed.ac.uk>
Date: 3 Dec 87 23:08:12 GMT
References: <1592@wiley.UUCP> <1298@saturn.ucsc.edu>
Reply-To: csan@its63b.ed.ac.uk (Andie)
Organization: Computer Science Department, Edinburgh University
Lines: 14

In article <1298@saturn.ucsc.edu> koreth@ssyx.ucsc.edu (Steven Grimm) writes:
>
>Kuma Software makes the best resource editor I've seen.  It's called
>"K-Resource" and is a really friendly, well-thought-out piece of software.
>
I am in total agreement here. I use it in preference to any others I have.

Andie Ness . Department of Computer Science ,Edinburgh University.

ARPA:  csan%ed.itspna@nss.cs.ucl.ac.uk   UUCP:  ...!uunet!mcvax!ukc!itspna!csan
                   	JANET: csan@uk.ac.ed.itspna

% These are my own views and any resemblance to any coherent reasoning is
% probably a typo.
#! rnews 852
Path: alberta!mnetor!uunet!mcvax!ukc!stc!idec!howellg
From: howellg@idec.stc.co.uk (Gareth Howell)
Newsgroups: rec.ham-radio.packet,comp.protocols.tcp-ip
Subject: NEEDED: KISS for TNC220
Message-ID: <869@idec.stc.co.uk>
Date: 1 Dec 87 09:05:59 GMT
Organization: ICL Network Systems, Stevenage, Herts. UK
Lines: 12
Xref: alberta rec.ham-radio.packet:767 comp.protocols.tcp-ip:1918

I have a Pacomm TNC220 on which I want to run KISS and thence the KA9Q
tcp/ip package.  Unfortunately I don't have a KISS for the TNC.
Can anybody help.  I would prefer the co-resident bootstrap with a
downloaded KISS module if possible.
ta Gareth
====

-- 
Gareth Howell  <howellg@idec.stc.co.uk>  G6KVK @ IO91VX
ICL NS PNBC, England, SG1 1YB    Tel:+44 (0)438 738294
howellg%idec%ukc@mcvax.uucp, mcvax!ukc!idec!howellg@uunet.uu.net
G6KVK @ G4SPV (uk packet 144.650MHz)
#! rnews 710
Path: alberta!mnetor!uunet!mcvax!ukc!stc!hilda
From: hilda@tcom.stc.co.uk ( Jeff Tracey )
Newsgroups: rec.arts.sf-lovers
Subject: Thunderbirds are GO!!!
Keywords: FAB
Message-ID: <1503@arran.tcom.stc.co.uk>
Date: 2 Dec 87 10:54:39 GMT
Organization: STC Telecoms, London N11 1HB.
Lines: 14

A few quick trivia questions on Thunderbirds :-

1) Does anybody know what the phrase 'FAB' stands for ??? 

2) What's the first mission that International Rescue accomplished ?

3) What's the Butler's name on the Island AND who is his daughter ? 


Regards,

Steve Hillyer.  <hilda@tcom.stc.co.uk> || ...uunet!mcvax!ukc!stc!hilda
STC Telecommunications, Oakleigh Rd South, London N11 1HB. 
Phone : +44 1 368 1234 x3358
#! rnews 1159
Path: alberta!mnetor!uunet!mcvax!ukc!stc!btnix!crouch
From: crouch@btnix.axion.bt.co.uk (Chris Rouch)
Newsgroups: comp.os.vms
Subject: callable TPU?
Keywords: TPU callable editor
Message-ID: <632@btnix.axion.bt.co.uk>
Date: 3 Dec 87 11:33:58 GMT
Organization: British Telecom Research Labs, Martlesham Heath, IPSWICH, UK
Lines: 17

I read somewhere that there is a callable version of EDT, available by using
EDT$EDIT(...). Does anyone know if there is a similar function for the TPU
editor and/or other commands such as MAIL, PRINT etc. If somebody could
also point me in the direction of the VMS manual which contains this
information (assuming there is one), I would be very grateful.

		Chris Rouch

--------------------------------------------------------------------------------
vax to vax (UUCP)       CRouch@axion.bt.co.uk (...!ukc!btnix!crouch)
desk to desk            RT3124, 310 SSTF,
			British Telecom Research Laboratories,
			Martlesham Heath, IPSWICH, IP5 7RE, UK.
voice to voice          +44 473 646093

	"Ours is not to look back, ours to continue the crack."
--------------------------------------------------------------------------------
#! rnews 1090
Path: alberta!mnetor!uunet!mcvax!ukc!stc!pete
From: pete@tcom.stc.co.uk (Peter Kendell)
Newsgroups: rec.music.classical
Subject: Durufle virgin seeks advice
Message-ID: <483@stc-f.tcom.stc.co.uk>
Date: 3 Dec 87 11:50:35 GMT
Organization: STC Telecoms, London N11 1HB.
Lines: 25


	Being curious, as the name was completely new to me, I borrowed 
	the Hyperion CD of Durufle's Requiem from my local public 
	library. I enjoyed it very much and would like to find out more
	about him, so :-

	- What else has he written? (I believe he's not been very prolific)
	
	- What else has been recorded?
	
	- Is his other work similar to the Requiem; it is better, worse or
	  just different?

	- I thought I heard a Holst influence; is this typical?

	- Are there other 20th Century composers in a similar vein that I
	  should try?

	
	
-- 
------------------------------------------------------------------------------
|		  Peter Kendell <pete@tcom.stc.co.uk>	        	     |
|				...{uunet!}mcvax!ukc!stc!pete		     |
------------------------------------------------------------------------------
#! rnews 1235
Path: alberta!mnetor!uunet!mcvax!ukc!stc!praxis!gauss!drb
From: drb@praxis.co.uk (David Brownbridge)
Newsgroups: comp.unix.wizards
Subject: Re: //host vs "mount point"
Message-ID: <1606@newton.praxis.co.uk>
Date: 3 Dec 87 12:42:36 GMT
References: <648@tut.cis.ohio-state.edu> <1668@tut.cis.ohio-state.edu> <38c15248.4580@hi-csc.UUCP> <9559@mimsy.UUCP> <411@PT.CS.CMU.EDU>
Sender: nobody@praxis.co.uk
Reply-To: drb%praxis.uucp@ukc.ac.uk(David Brownbridge)
Organization: Praxis Systems plc, Bath, UK
Lines: 19

In article <411@PT.CS.CMU.EDU> jgm@K.GP.CS.CMU.EDU (John Myers) writes:
>Just to add to the confusion, let me put in a plug in for the Carnegie-Mellon
>University Computer Science Department's syntax:
>
>/../host

We built a system which also allowed super-super-roots and so on ad infinitum.

 /../NearbyHost
 /../../OtherSite/host
 /../../../OtherCountry/AnotherSite/host

"/.." makes sense to me which is why I promoted it as the "University of
Newcastle upon Tyne Computing Laboratory's syntax" :-) Some old-timers must
remember the "Newcastle Connection" distributed UNIX system which Lindsay
Marshall and I wrote in 1981-2.

"Not for the iron fist but for the helping hand" 
[Billy Bragg/Oyster Band "Between The Wars"]
#! rnews 1785
Path: alberta!mnetor!uunet!mcvax!ukc!stc!datlog!slxsys!jpp
From: jpp@slxsys.specialix.co.uk (John Pettitt)
Newsgroups: comp.unix.xenix
Subject: Re: smail2.5
Summary: smail on xenix without writing new programs
Keywords: At last, a 'real' mailer for Xenix (are you listening SCO) :-)
Message-ID: <106@slxsys.specialix.co.uk>
Date: 3 Dec 87 06:44:07 GMT
References: <484@rel.eds.com>
Reply-To: jpp@slxsys.UUCP (John Pettitt)
Organization: Specialix International, London, UK.
Lines: 27

In article <484@rel.eds.com> bob@rel.eds.com (Bob Leffler) writes:
>During the last several weeks there have been numerous solutions posted to
>the net to resolved the interface problem with Xenix and smail 2.5.  I
>have tried all the solutions that I am aware of and my conclusion for the
>best approach is a combination of two.

	lots of stuff about how to install smail deleted.

I have just installed smail 2.5 on Xenix 386.  The solution I used
here was to replace /usr/lib/mail/execmail with a link to (copy of)
/bin/smail.  I also moved the old sco execmail to execmail.sco and used
it as the local delivery agent.  The above will not work as it stands
because the command syntax for execmail is not the same as smail. This
can be corrected by swapping the meaning of the -F and -f switches in
smail (main.c and defs.h).   The local delivery macro in defs.h should
be set to give /usr/lib/mail/execmail.com -f from to.   With this
setup you get the sco mailer (mailx) and smail with both From and From:
lines correct.  Also as execmail is still used for 'local' delivery
micnet (sco's RS232 "LAN") still works.




-- 
John Pettitt G6KCQ, CIX jpettitt, Voice +44 1 398 9422
UUCP:  ...uunet!mcvax!ukc!pyrltd!slxsys!jpp  (jpp@slxsys.co.uk)
Disclaimer: I don't even own a cat to share my views !
#! rnews 1287
Path: alberta!mnetor!uunet!mcvax!lambert
From: lambert@cwi.nl (Lambert Meertens)
Newsgroups: sci.math
Subject: Re: Least-squares fitting
Message-ID: <135@piring.cwi.nl>
Date: 5 Dec 87 14:41:10 GMT
References: <1823@culdev1.UUCP>
Organization: CWI, Amsterdam
Lines: 28

In article <1823@culdev1.UUCP> drw@culdev1.UUCP (Dale Worley) writes:
) Is is known how to perform least-squares fitting where the "error" is
) the perpendicular distance between the point and the line?

This least-squares fit still passes through the "center of gravity" of the
data points, so assume that the data has been reduced such that the
averages of the x- and y-coordinates are both zero.  Let the equation of
the line to be determined be

    x*(sin phi) - y*(cos phi) = 0,

that is, it is the line making an angle phi with the x-axis.  Put

    XX = SUM_i x[i]^2,
    XY = SUM_i x[i]*y[i],
    YY = SUM_i y[i]^2.

Then tan(2*phi) = 2*XY/(XX-YY).

This gives two solutions for phi.  Take the one such that the point
(XX-YY, 2*XY) lies on the ray through the origin with angle 2*phi.
(Remark.  It is possible to solve the coefficients for x and y
algebraically, without going through the arctan routine, but it is harder
then to get the signs correct.)

-- 

Lambert Meertens, CWI, Amsterdam; lambert@cwi.nl
#! rnews 852
Path: alberta!mnetor!uunet!mcvax!inria!imag!bordier
From: bordier@imag.UUCP (Jerome Bordier)
Newsgroups: comp.sys.mac
Subject: Re: Arabic Wordprocessing / Publishing
Message-ID: <2285@imag.UUCP>
Date: 4 Dec 87 10:24:35 GMT
Reply-To: bordier@imag.UUCP (Jerome Bordier)
Organization: IMAG, University of Grenoble, France
Lines: 14

"Winsoft", a small firm developping and selling software for the Macintosh,
has made "Wintext", a word processor fully compatible with the "Arabic
Macintosh+" (you have to obtain the Arabic keyboard distributed by Apple).
Their address is:
	Winsoft
	34 boulevard de l'Esplanade
	38000 GRENOBLE   France
Phone no.:   76.87.56.01

-- 
Jerome BORDIER   Laboratoire Structures Discretes  Institut IMAG
		 B.P.68 - 38402 SAINT MARTIN D'HERES CEDEX   France
E.Mail:
bordier@imag.imag.fr   or   {uunet.uu.net|mcvax}!imag!bordier
#! rnews 1182
Path: alberta!mnetor!uunet!mcvax!inria!rouaix
From: rouaix@inria.UUCP (Francois Rouaix)
Newsgroups: comp.sys.amiga
Subject: POPCLI III Another Bug
Keywords: left-amiga-esc timing
Message-ID: <587@inria.UUCP>
Date: 5 Dec 87 17:45:19 GMT
Organization: INRIA, Rocquencourt. France
Lines: 20


	Well, it seems there is another bug in Popcli III.
	Just try 
		1> run popcli 30
	and then press Left-Amiga-Esc: the drive (where c: is) spins for
	a moment and nothing happens.
	The new 'screen-blanker' works all right but the automatic launch
	is defeated.
	Same for values of 10 and 40 seconds.
	I didn't have time to figure out the limit value for which Popcli will
	work (it works with default value and 240s).
	Anyway, despite I *love* the new feature (let's keep the secret :-),
	I'd rather have the old screen-blanker : at least I can sleep while
	the Amiga is still on and working, and also it won't eat CPU-time I
	need for Ray-tracing !!
-- 

*- Francois Rouaix                    /       When the going gets tough,     *
*- USENET:rouaix@inria.inria.fr     \/            the guru goes meditating...*
*  SYSOP of Sgt. Flam's Lonely Amigas Club. (33) (1) 39-55-84-59 (Videotext) *
#! rnews 539
Path: alberta!mnetor!uunet!husc6!uwvax!rutgers!lll-lcc!ames!sdcsvax!ucsdhub!hp-sdd!ncr-sd!crash!pnet01!hhaller
From: hhaller@pnet01.cts.com (Harry Haller)
Newsgroups: comp.dcom.modems
Subject: Re: Facsimile on PC
Message-ID: <2140@crash.cts.com>
Date: 14 Dec 87 04:36:13 GMT
Sender: news@crash.cts.com
Organization: People-Net [pnet01], El Cajon, CA
Lines: 4

There is a board you can plug into the backplane that purports to give you
full FAX capability with editing. Of course, I forget the name, but if you
look in the literature...
()
#! rnews 1436
Path: alberta!mnetor!uunet!husc6!uwvax!rutgers!lll-lcc!ames!sdcsvax!ucsdhub!hp-sdd!ncr-sd!crash!pnet01!dm
From: dm@pnet01.cts.com (Dan Melson)
Newsgroups: rec.aviation
Subject: Re: ARSA transition phraseology
Message-ID: <2141@crash.cts.com>
Date: 14 Dec 87 06:16:11 GMT
Sender: news@crash.cts.com
Organization: People-Net [pnet01], El Cajon, CA
Lines: 21

The question was asked why an ARSA controller might want to know your
destination.

Actually, what they really want to know is where you're going *now*, like
'direct PMD' or 'following I5 northbound' (I have *no* idea of what type of
airspace that will take you through at any given altitude) or whatever course,
heading, or whatever you intend to take through the ARSA.

Now, if you're going to get flight following, the controller is going to want
to know your complete route of flight for which you want flight following,
so that it can be entered into the machine and the autumated handoffs can be
used between sectors and facilities.

As for why, that's very simple.  For purposes of calling traffic, which I
consider to be sufficient, if no one else does.  The same reason the
controller at the VFR tower asks your direction of departure.  If nothing
else, the controller can always tell the left downwind departures 'traffic a
(whatever) reported 6 SE for a left base entry', or whatever is appropriate.

MY opinions ONLY!
                                              DM
#! rnews 2759
Path: alberta!mnetor!uunet!mcvax!diku!iesd!jacob
From: jacob@iesd.uucp (Jacob stergaard B{kke)
Newsgroups: comp.ai
Subject: job search, Comp. eng.
Summary: I'm looking for a job
Keywords: Job, Computer. eng., Computer. sci., M.S.
Message-ID: <152@iesd.uucp>
Date: 2 Dec 87 13:20:07 GMT
Reply-To: jacob@iesd.UUCP (Jacob \stergaard B{kke)
Organization: Dept. of Comp. Sci., Aalborg University, Denmark (student)
Lines: 69

I'm looking for a job in Computer Engineering to begin around July
1988. I'm getting my Master of Science in Computer Engineering June
1988 and at present holding a degree equal to BS in Electronic
Engineering. My BS studies have included:
	
	Computer hardware (hands-on knowledge with mc68k),
	Analog electronic 
	Control engineering (analog and digital control)

My MS studies have included:

	Software development (man-machine interface, what people want
			      from programs) 
	Compiler construction (an expertsystem shell) 
	Program environment (for CCS programming) 
	Distributed operating systems (in UNIX)
 	Compiler mapping object-orinted language on parallel computers

Furthermore I do have experience in conventional programming (PASCAL,
C, postscript, UNIX (awk, shell-scripts(C-shell) and yacc/lex) (and Basic)),
functional programming (LISP and ML) and logical programming (Prolog)
and knowledge about object-oriented programming. And I
have also attended courses in VLSI design, databases, etc. I have been
working with CDC under NOS/Telex, VAX 11/750 under Ultrix, SUN 3 under
Sun OS 4.3 (UNIX), MacIntosh (LISA) under Finder and IBM S36 under IBM
property operating system.  

My spoken English is excellent and my written English is satisfactory,
good knowledge of the Scandinavian languages (Danish (of course),
Swedish and Norwegian), some speaking and reading knowledge of German
and limited knowledge of French and Spanish (and Latin). 

I have 5 years experience in group project work in engineering and
computer scinence areas, broad social interest, good health.

My interest include computer hardware and software, operating system
design, expertsystems, distributed, concurrency and teaching.

I'm open on location (outside Denmark) but I have relatives or other
reasons to be especially intereted in:

	Canada (British Colombia or Toronto)
	USA (New England or Pacific Coast)
	Pacific (New Zealand or Oceania)
	Thailand
	Scotland (Highlands)

I'll look forward to any reponds.

		Yours sincerely
			
			Jacob Baekke, Denmark

For further information:

Reply to:     	jacob@iesd.uucp, {...}!mcvax!diku!ised!jacob  or
		 
at Univ:	Jacob Baekke 
		S9D (in spring S10)
		Strandvejen 19
		AUC
		DK--9000 Aalborg
		Denmark

private:	Jacob Baekke
		Davids Alle 48
		DK--9000 Aalborg
		Denmark
		Tel. 45-(0)8102673
#! rnews 2425
Path: alberta!mnetor!uunet!husc6!bbn!rochester!cornell!uw-beaver!uw-june!uw-entropy!dataio!suvax1!hirayama
From: hirayama@suvax1.UUCP (Pat Hirayama)
Newsgroups: rec.arts.anime
Subject: Re: Speed Racer and the Mach 5
Message-ID: <810@suvax1.UUCP>
Date: 14 Dec 87 05:28:25 GMT
References: <1103@jumbo.dec.com>
Organization: Seattle University, Seattle, WA.
Lines: 45

in article <1103@jumbo.dec.com>, schubert@jumbo.dec.com (Ann Schubert) says:
> Posted: Thu Dec 10 15:26:21 1987
> 
> 
>       THIS IS A RE-POST FROM REC.ARTS.TV
> 
> 
> In article <4540011@wdl1.UUCP> (James Y. Nakamura) writes:
> 
> I have a question about Speed.  We can't figure out all the neato gadgets his
> car had I think it went like:
> 	1:	Jacks that also made the car able to jump.
> 	2:	???
> 	3:	Saw blades that cut through stuff	
> 	4:	Closes off the top so the Mach 5 becomes a sub..
> 	5:	Homing pidgeon on a rope.
> 

        Don't forget the special treads which would appear on his tires
        to allow for climbing up rough ground or driving near vertical.
        
        Every now and then, I remember that they would add a new option
        (boy, don't you wish your friendly neighborhood dealership would
         offer some of these for your car?).  Unfortunately, it has been
        many years since I last saw Speed Racer, but I do remember one 
        episode which added little winglets which would come out from under-
        neath the doors.  This added a little gliding ability.  Any one
        else remember any?
        

> Also why did Speed have a G on his shirt?  Go doesn't really wash with me and
> I don't know enough Japanese to equate letters. 
> 

        I used to know this but I can't remember anymore, though I
        suspect that it might have to do with the original name of
        the character/title of the show in Nihongo.  Help anyone?

*******************************************************************************
*                                          --Pat Hirayama                     *
*                                          --Seattle University               *
*                                                                             *
* "Yamato Hasshin!" - Kodai Susumu                                            *
*                                                                             *
*******************************************************************************
#! rnews 684
Path: alberta!mnetor!uunet!mcvax!inria!axis!matra!godefroy
From: godefroy@matra.UUCP (Eric Godefroy)
Newsgroups: comp.unix.wizards
Subject: 8 bits on a pseudo-tty
Message-ID: <252@matra.matra.UUCP>
Date: 3 Dec 87 13:33:27 GMT
Reply-To: godefroy@matra.UUCP (Eric Godefroy)
Organization: Matra Datasysteme
Lines: 9

On 4.2 bsd, it seems difficult to set a pseudo-tty (ptyp / ttyp) in
the pass8 mode. Is it impossible really or how can I do that ?

----------------------------------------------------------

 Eric Godefroy				UUCP: mcvax!inria!matra!godefroy
 Matra Datasysteme			Tel:  (33-1) 30 58 98 00
 1, av Niepce				Fax:  (33-1) 30 45 41 59
 78180 Montigny-le-Bretonneux   France
#! rnews 2663
Path: alberta!mnetor!uunet!husc6!bbn!rochester!cornell!uw-beaver!uw-june!uw-entropy!dataio!suvax1!hirayama
From: hirayama@suvax1.UUCP (Pat Hirayama)
Newsgroups: rec.arts.sf-lovers,rec.arts.anime
Subject: Re: Old TV shows
Message-ID: <811@suvax1.UUCP>
Date: 14 Dec 87 05:54:39 GMT
References: <4254@dandelion.CI.COM>
Organization: Seattle University, Seattle, WA.
Lines: 40
Xref: alberta rec.arts.sf-lovers:9224 rec.arts.anime:249

in article <4254@dandelion.CI.COM>, david@dandelion.CI.COM (David M. Watson) says:
> Xref: suvax1 rec.arts.sf-lovers:7102 rec.arts.anime:235
> 
> 
> I have foggy but pleasant memories of three other converted Japanese
> 	- (not anime, but...) Ultraman! (Was it: "Hiyata! The beta capsule!"?)
> 		He was a large silver "good-monster" with a red light
> 		mounted on his chest that would blink whenever his batteries	
> 		were getting low.  And in his valiant, exhausting fights
> 		against the dinosaur types that frequently showed up to
> 		menace the World, he almost always came close to running out!
> 		And I remember a obligatory post-crisis trip to the jewelery
> 		store for Hiyata and friend!
> 
> Would anyone like to refresh my memory about any of these three?
> 
       - Ultraman was one of several incredibly popular shows in Japan during
         the late 60s/early 70s/early 80s.  Actually, there were several shows
         each featuring one or more of the "Ultra" brothers, of whom Ultraman
         was the "leader/head/eldest (you get the idea)".  There was also
         Ultra 5 and a bunch of others which I can't remember and it would 
         take a long time to dig out the books.  There was something of a
         revival when UltraMan 80 (?) was released in Japan.  

         Of these, I believe that only the original Ultraman was released
         and dubbed for the American market.

       - By the way, Hayata would be the way to spell his name (though it
         would be more accurately pronounced by you gaijin as "Hiyata".
         
       - Of course, there is nary a trace of him now in Japan.  Programs
         have this incredible tendency of grabbing hold of everyone, then
         they drop it for something new.  

*****************************************************************************
*                                          -Pat Hirayama                    *
*                                          -Seattle University              *
*                                                                           *
* > No messages or quotes right now <                                       *
*****************************************************************************
#! rnews 1910
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!nispa
From: nispa@hutcs.hut.fi (Tapani Lindgren)
Newsgroups: comp.unix.wizards,comp.unix.questions
Subject: Unattended dumps (BSD4.3)
Message-ID: <9032@santra.UUCP>
Date: 4 Dec 87 15:19:19 GMT
Sender: news@santra.UUCP
Followup-To: comp.unix.wizards
Organization: Helsinki University of Technology, Finland
Lines: 28
Xref: alberta comp.unix.wizards:5739 comp.unix.questions:4767

I have encountered a problem trying to make a shell script that would
make incremental backups at nighttime without operator attendance.
The problem results from dump(8) program requiring occasional
responses from the operator through /dev/tty.  The script is
run from another script, /usr/adm/daily, under cron control and has no
controlling terminal, so it just hangs trying to read /dev/tty.  It would
be ok if dump just aborted when facing a situation that would require
operator intervention. The script should never hang in a loop under
any circumstances, because /usr/adm/daily must do other things too
and finish after a reasonable time.

Currently I have the dump script run a background subshell that sleeps for
an hour and then kills the dump script (if it still runs) and all dump
processes.  This is very complicated, however, and the watchdog process
is almost 50% of the whole script.  It is also very slow - I would
like it to stop immediately if it finds an error, report it to log file,
rewind the tape, and let /usr/adm/daily continue its work.

Has anyone out there in the Netland have any suggestions of what to do?
Can yes(1) somehow be piped to a program that reads /dev/tty?
Could dump(8) be modified to abort at errors without any questions?
What kind of unattended backup systems do you have?

---
Tapani Lindgren, Helsinki Univ. of Technology, CS dept.
INTERNET:	nispa@hutcs.hut.fi
UUCP:		mcvax!santra!hutcs!nispa
BITNET:		nispa%hutcs.UUCP@fingate.BITNET
#! rnews 2315
Path: alberta!mnetor!uunet!husc6!bbn!oberon!pollux.usc.edu!kurtzman
From: kurtzman@pollux.usc.edu (Stephen Kurtzman)
Newsgroups: rec.food.cooking
Subject: Re: Cooking Wines
Message-ID: <5698@oberon.USC.EDU>
Date: 14 Dec 87 11:38:44 GMT
References: <4628@pyr.gatech.EDU> <10722@sri-unix.ARPA> <2028@ttrdc.UUCP>
Sender: nobody@oberon.USC.EDU
Reply-To: kurtzman@pollux.usc.edu (Stephen Kurtzman)
Organization: University of Southern California, Los Angeles, CA
Lines: 37

In article <2028@ttrdc.UUCP> levy@ttrdc.UUCP (Daniel R. Levy) writes:
>
>2) (more seriously) I've seen bottles of "wine for cooking" that have had
>   salt (and vinegar?) added.  These might be OK for sauces (yeah, the
>   snootier gourmets wouldn't want anything to do with them) but they
>   would obviously be horrible to drink.

I think that these wines would be particularly bad for sauces that require
wine as a major component and require reducing the wine. There are two
reasons that come to mind:

1) What is normally labeled as cooking wine is usually wine that is not good
enough to sell as table wine. If the taste is not the best, reducing it will
only concentrate its flaws.

2) Cooking wines contain salt. Reducing a cooking wine will concentrate the
salt. This could really ruin the sauce. 

There best reason I have seen for using a good wine to cook with was given
by Alexis Bespaloff in the "New Signet Book of Wine", which states

 "Furthermore, it is actually uneconomical to buy cheap wine for cooking.
  Say that an elaborate lobster dish calls for a spoonful or two of sherry
  to heighten its flavor. A cook who runs out to buy a bottle of cheap
  sherry will diminish the taste of an expensive and time-consuming dish with
  a quarter's worth of wine. What's more, because the wine is a poor example
  of its type, it may not be enjoyable to drink, so the spoonful of wine has,
  in fact, cost the full price of the bottle."

That is fairly sound reasoning. Of course, the last sentence does not
necessarily follow. You could keep the cheap wine around to diminish several
meals.

BTW, I recommend the "New Signet Book of Wine" to anyone who wants to learn
more about wine. It is available for $4.50 as a paperback. Quite a value
when you compare it to the $20-or-more, glossy coffee-table wine books out
on the market.
#! rnews 1809
Path: alberta!mnetor!uunet!mcvax!enea!luth!d2c-usg
From: d2c-usg@sm.luth.se (Ulrik"Rick"Sandberg)
Newsgroups: rec.music.misc
Subject: Re: Yes and ELP questions......
Keywords: Tales from Topographic Oceans
Message-ID: <435@psi.luth.se>
Date: 4 Dec 87 18:28:34 GMT
References: <748@augusta.UUCP> <434@psi.luth.se>
Reply-To: Ulrik"Rick"Sandberg <d2c-usg@psi.luth.se>
Organization: University of Lulea, Sweden
Lines: 28
UUCP-Path: {uunet,mcvax}!enea!psi.luth.se!d2c-usg


In article <434@psi.luth.se> I wrote:
>In article <748@augusta.UUCP> bs@augusta.UUCP (Burch Seymour) writes:
>>been looking for Tales on CD without success. To get to the point, is
>>it (Tales) on CD?  
>
>One of my friends ordered it from a Recordshop in Gothenburg, but got
>the answer that it was sold out. However, they didn't say that the
>record isn't existing on CD. He was supposed to recieve it later.
>Any wiser of that?
>

Correction:

Received is spelled received, not recieved. :-)

My friend told me that they said "Tales.. is not on CD." That's why he didn't
get it. Sorry for the confusing information.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~                                                                             ~
~  Ulrik 'Rick' Sandberg  d2c-usg@luth.UUCP (or)                              ~
~  Computer Technology	  d2c-usg@psi.luth.se (or)                            ~
~  University of Lulea    {uunet,mcvax}!enea!psi.luth.se!d2c-usg              ~
~  Sweden                                                                     ~
~  phone: (0920)-977 90 (home)       "I feel lost in the city..."             ~
~                                       --  Jon Anderson  --                  ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#! rnews 1128
Path: alberta!mnetor!uunet!husc6!rutgers!lll-lcc!pyramid!decwrl!cssaus.dec.com!bell
From: bell@cssaus.dec.com (Peter Bell, SNA-2, Sydney)
Newsgroups: rec.music.classical
Subject: Hogwood
Message-ID: <8712141101.AA04882@decwrl.dec.com>
Date: 15 Dec 87 05:23:00 GMT
Organization: Digital Equipment Corporation
Lines: 15

I have just finished singing (in choir) under Hogwood, it was an experience. We
sang Schuberts Mass in G, (as Schubert wrote it, missing a few phrases of the
Credo). Hogwood knew exactly what he wanted, and worked till we did it right.
Then as we tidied up the last few problems, he would let us sing through whole
sections, then go back and point out all the problems.

We also sang the Messiah (not with Hogwood unfortunately) the delight of
those performances was Elizabeth Cambells singing "He was despised..."

In this performance the two trumpeters waited off stage until just before their
appearances in each half, the first trumpet parts were played by a large
trumpeter (in nice to see that Sydney musicains are not starving) on what
looked like a very small valved trumpet (trumpet in F??).

Peter.
#! rnews 1252
Path: alberta!mnetor!uunet!mcvax!dutrun!winffhp
From: winffhp@dutrun.UUCP (Frits Post and/or Andrew Glassner)
Newsgroups: comp.graphics
Subject: abstracts wanted
Keywords: ray tracing, abstracts
Message-ID: <190@dutrun.UUCP>
Date: 2 Dec 87 09:14:55 GMT
Organization: Delft University of Technology,The Netherlands
Lines: 21

I am preparing a list of technical memos, technical notes,
internal reports, and other such low-circulation documents
that deal with ray tracing.  I'm interested in documents
both large and small.  The documents need not be expressly
about ray tracing; the criterion is that the information in
the document be useful to ray tracing researchers in some way.

If you have prepared such a document, please send me enough
information to digest it.  That would at least include your
name and organization, the document's title, perhaps a reference
number, and (very important!) an abstract.  

All contributors will receive a complete copy of the final list.

-Andrew Glassner
  email until 15 December: uunet!mcvax!dutrun!frits
  email after 15 December: glassner@unc.cs.edu  ,  unc!glassner
-- 
             ...mcvax!dutrun!frits    
             Faculty of Mathematics and Informatics
             Delft University of Technology
#! rnews 593
Path: alberta!mnetor!uunet!mcvax!lambert
From: lambert@cwi.nl (Lambert Meertens)
Newsgroups: sci.lang
Subject: Re: Acquiring native accents
Message-ID: <136@piring.cwi.nl>
Date: 5 Dec 87 22:56:44 GMT
Organization: CWI, Amsterdam
Lines: 8

When I speak English I hear no Dutch accent in my voice.  But if my voice
is recorded and played back to me I find the Dutch accent unmistakable.  If
this phenomenon is a general one, it goes a good deal towards explaining
why adult learners of a new language do not fully master the native accent.

-- 

Lambert Meertens, CWI, Amsterdam; lambert@cwi.nl
#! rnews 6735
Path: alberta!mnetor!uunet!mcvax!philmds!leffe!janpo
From: janpo@leffe.UUCP (janpo)
Newsgroups: rec.music.misc
Subject: Re: Ideas for improving the debate (was: Digital vs. Analog music)
Summary: Digital versus Analog
Keywords: CDs expensive audiophile equip. fourier analysis
Message-ID: <43@leffe.UUCP>
Date: 4 Dec 87 13:55:04 GMT
References: <574@ucdavis.ucdavis.edu> <522@altura.srcsip.UUCP> <3051@batcomputer.tn.cornell.edu>
Organization: Philips I&E DTS Eindhoven
Lines: 123



1) Mr. Konar, press the 'n' key immediately! There's another arrogant
   audiophile going to pollute the net with his view on the Digital vs.
   Analog issue.

2) I'm not very much acquainted with the news stuff on the net, but it
   seems we don't receive the rec.audio newsgroup here in Europe. Can
   something be done about that?

3) Now let me come to the point.
   In article <3051@batcomputer.tn.cornell.edu> eacj@batcomputer.tn.cornell
   (Julian Vrieslander) he writes:
>Konar than goes on to comment about the "arrogance" of audiophiles who still
>prefer analog recordings to digital.  He says the issue should be laid to rest
>, the implicit assumption being that the case has been proven that analog 
>recording is obsolete.

>I for one think that the issue is still an open (and interesting) one, but I
>am a bit surprised at how polarized and closed the recent comments to this
>thread have been.  

I agree with him, so let me do my bit now. A technology not being perfect
, or getting close to that, is still worth a discussion. Remember that it
took about a 100 years of thorough research from Edison's first grammophone
to the modern high quality turntables. Don't expect digital audio to be
perfect now only a few years after its introduction, no matter what the
commercial guys say. They are only interested in your hard-earned $$$$.

Until now I have only been in the opportunity to make a good comparison
between a high-end turntable and some first genaration. I'll summarize
the pros and cons of which I think are important and which I can think of
now. Many of them are well known, others may not.

PROS OF ANALOG:
- Cheap records.
- As John Vrieslander mentioned: More real, more spatious, more delicate,
  more emotionally involving. I won't try to find other words for this
  description 'cause I can't think of a better one. Unfortunately, this
  can only be heard on good, say > $2k-$3k systems without an infinite
  number of knobs, lights and other gadgets normally found in aeroplane
  cockpits.

CONS OF ANALOG:
- More hissy, rumble,scratches,sound degrading after many times of
  playing the record. This counts less when you have good records
  (Japanese ones are most often excellent but hard to get now.) and take
  good care of them.
- No flat frequency response, especially at the low and high end.
- Phase distortion.
- Harmonic distortion increases with amplitude.

PROS OF DIGITAL:
- Longer durability than records (?). Less hissy, no rumble or ticks of
  scratches.
- Almost no phase distortion, flat frequency response within the audio
  range.
- Easy to use.
- Slightly (!) more dynamic. Why only slightly? Well, the 96 dB dynamic
  range theoretically possible with a CD is not very practical. In reality
  it is compressed, as far as I know, to some 40-60 dB depending on the
  music (Pop, Jazz, Classic) because:
  a) No one wants to run continuously to his volume knob to adjust the
     volume.If not compressed the music will either be banging through your 
     living room and of your neighbours or it will drown in the inevitable 
     background noise.
  b) Studio equipment has a dynamic range of less than, say, 70 to 80 dB
     when you assume the Signal to Noise ratio being equal to the dynamic
     range.
  c) Sound gets to distorted at low levels. (See also cons)
  d) A dynamic headroom of 10 dB is desired.
  With all this limitations the dynamic range of CD's is not much different
  with that of a good record.
- Excellent bass response. Deep and well defined.
- Very stable stereo image.

CONS OF DIGITAL:
- Expensive records.
- When listening to a CD, it seems as if there is no "space" around around
  the instruments and voices. It sounds cold and not very lively.
- First generation players and the cheaper CD players nowadays suffer from
  very distorted high tones. They sound harsh. Cymbals for instance sound
  like someone is sawing them into pieces instead giving it a gentle hit
  with a drum-stick. They do not sound crisp and clear.
- Distortion increases dramatically with lower amplitudes (!). It can be
  more than 1.5 % at low levels. And it's a very nasty kind of distortion.
- CD players produce (digital) noise above the audio range. This noise itself
  can not be heard but other audio equipment may suffer from intermodulation
  distortion which brings this noise back in the audio range. 
- Many CD players, especially the first ones, do not seem to be very reliable
  mechanically.
- I've heard that digital audio recording is quite different from analog.
  I mean in terms of how it has to be done properly. I don't mean the
  equipment needed, that's quite obvious. Not all studio crew seem to know
  how to make a good digital recording. Does anyone know more about that?

Well, this must be enough stuff to think and talk about.

The above mentioned cons of digital audio may be overcome in the latest
players but I have not had the opportunity until now to carefully listen
to them and to compare them. According to some serious audio magazines
available here in Holland they seem to be improved. Many top-of-the-line
models now have separated power supplys for the digital and analog
circuitry, opto-couplers between those circuits, an additional analog filter
to filter out > 20 kHz noise, 16 bit with with n times oversampling, stable
and rigid chassis and improved error correction. All this may have solved
(some) of the cons I mentioned but I'm not sure. Players which have one or
more of these improvements and thus may be of interest (At least for Julian
Vrieslander and me) are: Philips (Magnavox in the USA I believe) CD 650 and
CD 960, Nakamichi, Mission, Meridian and if memory serves me well, Acoustical
Research (Or Audio Research. Don't know anymore). The latter two may be
difficult to get in the USA, they are made in the UK. No doubt that there
are more good CD players but can't think of others now. These are the
players I consider buying when normal LP's are no longer available.

Pooh! That was more than I intended to write but still far less than I can
tell about this stuff.

                                        Kind regards from
                                        Jan Postma


And on the seventh day, God went surfing!
#! rnews 1424
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!heiser
From: heiser@ethz.UUCP (Gernot Heiser)
Newsgroups: comp.emacs
Subject: Setting terminal-emulator's environment
Keywords: GNU Emacs function `terminal-emulator'
Message-ID: <261@bernina.UUCP>
Date: 5 Dec 87 13:42:37 GMT
Reply-To: heiser@ethz.UUCP (Gernot Heiser)
Organization: ETH Zuerich, Switzerland
Lines: 18


Using the  GNU emacs terminal-emulator   to run interactive  programs  would be
quite limited if the parent emacs  can't be used  for editing (when the program
run under the emulator starts up an editor).  While some  programs  (like `rn')
allow to explicitely specify the  editor, a general  solution would require  to
specify `emacsclient'  in the `EDITOR'   environment  variable of  the  process
running under the terminal emulator.

Naturally this could be done by running  the  shell under the emulator, setting
the   environment of  the shell, and  then running   the program  we are really
interested  in.  A  better way  would be    to set  the   environment from  the
`terminal-mode-hook'. Is there any means to achieve this???? (I'm running GNU
Emacs version 18.49.)
-- 
Gernot Heiser                   Phone:       +41 1/256 23 48
Integrated Systems Laboratory   CSNET/ARPA:  heiser%ifi.ethz.ch@relay.cs.net
ETH Zuerich                     EARN/BITNET: GRIDFILE@CZHETH5A
CH-8092 Zuerich, Switzerland    EUNET/UUCP:  {uunet,...}!mcvax!ethz!heiser
#! rnews 1617
Path: alberta!mnetor!uunet!mcvax!enea!sommar
From: sommar@enea.UUCP (Erland Sommarskog)
Newsgroups: rec.music.misc
Subject: Re: another net.question
Message-ID: <2496@enea.UUCP>
Date: 5 Dec 87 16:46:48 GMT
References: <251@ho7cad.ATT.COM>
Reply-To: sommar@enea.UUCP(Erland Sommarskog)
Followup-To: rec.music.misc
Organization: ENEA DATA Svenska AB, Sweden
Lines: 27

P.CLARK (prc@ho7cad.ATT.COM) writes:
>	Should a band play the entire new album when they do a concert?


No, why should they? There may be songs on the album that are 
very good listening to at home, but just doesn't make it live,
just as there are songs with the opposite character; good live, 
but just a bore on disc.

Deep Purple and Marillion and good example of extremes in both
ends. When I saw D.P. in February this year, they played three 
of the ten songs from "The House of Blue Light", their latest 
album. That is a quite decent product, but I didn't miss those
songs anyway. (I, and everyone else, would have been much more 
disappointed if they had left out "Smoke on the Water".) 
  Marillion on the other hand; on the two tours they made after
"Misplaced Childhood", they insisted on playing entire album
as one long song. There are many parts on that album that just
becomes dead passages where nothing happens when they are played
live. ("Bitter Suite" and "Blind Curve" for instance.) Marillion
is no good live band, and playing obsolete material does not
make things better.
-- 
Erland Sommarskog       
ENEA Data, Stockholm    
sommar@enea.UUCP        
                   C, it's a 3rd class language, you can tell by the name.
#! rnews 4410
Path: alberta!mnetor!uunet!mcvax!enea!sommar
From: sommar@enea.UUCP (Erland Sommarskog)
Newsgroups: rec.music.misc
Subject: Re: More than Yes
Message-ID: <2502@enea.UUCP>
Date: 5 Dec 87 19:18:59 GMT
References: <22034@ucbvax.BERKELEY.EDU>
Reply-To: sommar@enea.UUCP(Erland Sommarskog)
Followup-To: rec.music.misc
Organization: ENEA DATA Svenska AB, Sweden
Lines: 72

Grady Toss (ebm@ernie.Berkeley.EDU) writes:
>Whenever this newsgroup gets around to discussing 70's/80's fusion (the
>current go-round sparked by the proof that Yes is Best), the content
>seems to be limited to the same 5 or 6 groups (Yes, Rush, ELP, King
>Crimson, Pink Floyd, Genesis, etc.).  

Grady seems to be confusing the issue a bit here. He talks about fusion and 
the mentions groups that belong(ed) to the symphonic-rock genre. (I prefer
that term instead of "progressive") For me "fusion" is a synonym with 
jazz-rock. Anyway, that is more of question of semantics, the two genres 
have a lot in common. (The main difference maybe being that symphony-rock 
is European and fusion American.)

The reason why these groups are being discussed the most is probably that
they have gained the greatest commercial succes. This may or may not 
be correlated to the fact they are the best. 

>Doesn't (didn't) anyone listen to
>some of the (apparently) lesser-known fusion greats?  Bands and artists
>like Arti + Mestieri, Brand X, Arthur Brown & Kingdom Come, Egg, Gilgamesh,
>Hatfield & The North, Henry Cow, Alain Markusfeld, National Health, PFM,
>Quiet Sun, Return to Forever, Seventh Wave, The Soft Machine, UK and
>Weather Report.  

Being quite fond of this kind of music, I feel obliged to comment. It's
a real mixture Grady presents and I must admit there are names I have 
never heard. Anyway, I think he is a bit unfair, some of them have 
certainly been discussed on the net. For instance, I posted a discograhpy 
on Brand X some month ago. Some comments to the other names:
  PFM (Premiata Forneria Marconi) have been mentioned from time to time,
the Italian answer on Genesis, which developed in a different way. Now
disbanded, I believe. One day or another may be I'll post a discography.
  Quiet Sun. The band in which Phil Manzanera played before he joined
Roxy Music. Their "Mainstream" is rather like jazz, but not mainstream.
  Seventh Wave. This is the name I never expected to see on the net! I
bought their "Things to Come" when I was 15 and I was really fond of it
then. These days I don't find that amount of synthesizers so exciting as
I did then.
  Wheather Report. Quite well-known. But really, you do only need "Heavy
Wheather", the one with "Birdland". May be some more, "Mysterious Traveller"
perhaps, but then you'll find that they all sound the same.

>As I said before, I find much of Yes and ELP to be very dull, and un-
>affecting.  I like Rush, though more live than on record.  

As you can guess, I don't share Grady's view here. Yes has made good
music, yet never really touched my soul, probably due to their utterly
stupid and semi-religious lyrics. "Brain Salad Surgery" is a very good
record, the rest of what ELP have done is so-so. Rush don't turn me on 
at all, on the other hand. The net discussion inspired me to try 
"A Farewell to Kings" (A random choice). May be I would have liked them 
10 years ago, but not today with those lyrics and that voice.

>So, were Yes, ELP, Pink Floyd, King Crimson, Genesis and Rush really "it"
>as far as most progrock fans go, or did some of these "lesser known" artists
>(and all the others I forgot or never knew) filter out to larger audiences?

Depends on how you define your terms here, but I can easily think 
of more groups, some of them succesful, some of them not, some of them
good, some them not so good:
Kansas, Saga, Asia, Jethro Tull, Roxy Music, Gentle Giant, Van Der Graaf
Generator, George Duke, Billy Cobham, Al DiMeola, Herbie Hancock, Dixie
Dregs, Ange, (Mahavishnu) John McLaughlin, Santana, Bill Bruford etc
  I think that most of these people have had their share of the discussion
on the net. So to conclude, I do not really share Grady's initial obser-
vation. However some particular groups are certainly being over-discussed,
namely Rush, Yes and recently also Pink Floyd.
-- 
Erland Sommarskog       
ENEA Data, Stockholm    
sommar@enea.UUCP        
                   C, it's a 3rd class language, you can tell by the name.
#! rnews 916
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!clinet!waldo
From: waldo@clinet.FI (Tuomas Siltala)
Newsgroups: rec.music.synth
Subject: Siel DK80 sequenceer
Keywords: How to use?
Message-ID: <553@clinet.FI>
Date: 5 Dec 87 21:36:23 GMT
Reply-To: waldo@clinet.UUCP (Tuomas Siltala)
Organization: City Lines Oy, Helsinki, Finland
Lines: 17

My friend bought a Siel DK80 synthesizer and now he is wondering how
the sequencer in that machine works.
 
 
Unfortunately we don't have any manuals for it.
 
Could somebody kindly send me information concerning this problem?
 
Thank you!
 
------------------------------------------------------------------------------
 
  Tuomas Siltala                                 Internet: waldo@clinet.FI
  Kalevankatu 51 B 37
  SF-00180 Helsinki, Finland                     Telephone: +358-0-6947735
 
------------------------------------------------------------------------------
#! rnews 1655
Path: alberta!mnetor!uunet!mcvax!enea!luth!d2c-czl
From: d2c-czl@sm.luth.se (Caj Zell)
Newsgroups: rec.music.misc
Subject: Re: Black Sabbath songs
Message-ID: <437@psi.luth.se>
Date: 6 Dec 87 01:38:40 GMT
References: <1208@gumby.wisc.edu> <3590@h.cc.purdue.edu>
Reply-To: Caj Zell <d2c-czl@psi.luth.se>
Organization: University of Lulea, Sweden
Lines: 25
UUCP-Path: {uunet,mcvax}!enea!psi.luth.se!d2c-czl


In article <3590@h.cc.purdue.edu> acu@h.cc.purdue.edu.UUCP (Floyd McWilliams)
writes:

>	While we're talking about Sabbath, does anyone know who does the
>vocals on "Solitute" (from the Master of Reality album) and "It's All Right"
>(from Technical Ecstasy)?  It sure doesn't sound like the Oz...

I would like to add another song:"Swinging The Chain" on _Never Say Die!_.
Who the hell does the vocals here?

By the way,has anybody heard the new album?


      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      X                                                            X
      X                                                            X
      X   Caj Zell                 	 ________________________  X
      X   University of Lulea            :                      :  X
      X   Sweden                         : Jazz is not dead,    :  X
      X  				 : it just smells funny :  X
      X   mail: d2c-czl@psi.luth.se	 : -Frank Zappa         :  X
      X                                  :                      :  X
      X                                  -----------------------:  X
      X                                                            X
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#! rnews 760
Path: alberta!mnetor!uunet!mcvax!unido!gmdka!florin
From: florin@gmdka.UUCP
Newsgroups: comp.windows.x
Subject: C++ re-hacks of X11 include files - (nf)
Message-ID: <2800001@gmdka.UUCP>
Date: 3 Dec 87 13:16:00 GMT
Lines: 14
Nf-ID: #N:gmdka:2800001:000:458
Nf-From: gmdka!florin    Dec  3 14:16:00 1987

Hi there,

I'm actually working on C++ re-hacks of the X11 include files.
There are some problems with Xlib.h. In structures
Visual, XWindowAttributes and XColormapEvent there are variables named
``class'' and ``new'' which cause serious problems (C++ keywords) !

For the moment I've changed the names, but this is an awful hack. Does anybody
know a better solution ?

     -- Florin

UUCP:  ...!uunet!unido!gmdka!florin
X.400: florin@karlsruhe.gmd.dbp.de
#! rnews 4069
Path: alberta!mnetor!uunet!mcvax!ukc!reading!onion!riddle!domo
From: domo@riddle.UUCP (Dominic Dunlop)
Newsgroups: comp.unix.xenix,comp.sys.att,comp.sys.intel
Subject: How to load AT&T 6300 Plus packages to generic UNIX V.3
Summary: Here's a shell script to do it for you
Keywords: Intel, 386/ix, Microport, Prime
Message-ID: <522@riddle.UUCP>
Date: 4 Dec 87 17:47:52 GMT
Reply-To: domo@riddle.UUCP (Dominic Dunlop)
Followup-To: comp.unix.xenix
Organization: Sphinx Ltd., Maidenhead, England
Lines: 106
Xref: alberta comp.unix.xenix:1170 comp.sys.att:1825 comp.sys.intel:379

[If there's a Microport newsgroup, it doesn't come here]

				Background

AT&T's generic UNIX V.3 for the 80386 (as sold in binary form by AT&T,
Bell Technologies, Intel, Interactive Systems, Microport, Prime etc.)
will run binaries created for UNIX V.2 on the 80286.  A large number of
packages exists for AT&T's 6300 Plus, an 80286-based system running V.2.
These can be run on 80386-based systems while you're waiting for
software authors to come up with native 80386 ports of their products.

				Problem

You are supposed to load packages onto your 6300 Plus using the system's
administration procedures.  These handle weird multi-volume cpio diskette
sets, which are a pig to load unless you have the installation software.
Which you don't if you're trying to load the software onto an 80386-based
system running 386/ix, Microport, or whatever.

				Solution

Here's a shell script which does the job.  If you want to know the details,
it reads 350k, starting at offset 9k, from each 360k diskette in the
installation set, piping the result into cpio -c.  It the fires off the
Install program which should be part of the application package.  As the
comments remark, there's not a lot of error checking, as it's essentially
a quick hack.  Also, testing is about at the ``worked twice in a row''
level.  Despite all that, I hope it's useful to somebody out there.

Dominic Dunlop
domo@sphinx.co.uk  domo@riddle.uucp

++++cut here++++++++cut here++++++++cut here++++++++cut here++++
:
# load_script
#
#   Shell script to load software packages delivered in AT&T PC
#   6300+ UNIX V.2 format on systems where the PC 6300+
#   installation procedure is not available (eg 386/ix).
#   The script can be executed by any user who can read the raw
#   diskette device.  However, the root password is requested
#   before files are moved to their final destinations if this
#   script is not run by the super-user.
#
#   Note that this script does NOT check that sufficient space is
#   available to load the package.  In general, your /usr file
#   system should have at least (700 * diskettes_in_package)
#   blocks free before installation.  Note also that there is no
#   check that the diskettes are in the correct format, or that
#   they are inserted in the correct order.
#
# 871204 DFD	Created

# Change the following device assignment if the 360kB raw
# diskette device on your system has a different name.
DEV=${DEV-/dev/rdsk/f0d9dt}

if [ ! -r $DEV -o ! -c $DEV ]
then
	 cat << E_O_F
Can't read $DEV.  Check raw diskette device name and/or your
access permissions.
E_O_F
exit 1
fi

cd /usr/tmp
mkdir install 2>/dev/null
cd install
IT="the first diskette of the package"

trap "echo Installation aborted.; rm -r /usr/tmp/install; exit 1" 2 15
(
	while echo "Insert $IT and hit return >\c" 1>&2  \
		&& read ANS
	do
		IT="next diskette"
		echo "The following files are being loaded:" 1>&2
		dd if=$DEV ibs=1k obs=5k skip=9 count=350 2>/dev/null
	done
) | cpio -icvmudB 1>&2

chmod +x Install

trap 2 15

cat << E_O_F
Files read from diskettes.  You may remove the last diskette from
the drive.  If you are not already logged in as the super-user,
Please enter the root password to continue with installation.
E_O_F
if su root -c ./Install
then
	cat << E_O_F
Installation complete.  You should execute
	rm -r /usr/tmp/install
to remove installation scratch files at a convenient time.
E_O_F
else
	cat << E_O_F
Installation failed.  To retry,
	su
	cd /usr/tmp/install
	./Install
E_O_F
fi
#! rnews 1801
Path: alberta!mnetor!uunet!mcvax!ukc!reading!onion!bru-me!ralph
From: ralph@me.brunel.ac.uk (Ralph Mitchell)
Newsgroups: comp.graphics,sci.space,sci.space.shuttle
Subject: Re: 3d digitized shuttle data
Message-ID: <338@Pluto.me.brunel.ac.uk>
Date: 4 Dec 87 09:49:43 GMT
References: <509@otto.cvedc.UUCP>
Reply-To: ralph@me.brunel.ac.uk (Ralph Mitchell)
Organization: Brunel University, Uxbridge, UK
Lines: 26
Xref: alberta comp.graphics:1381 sci.space:3674 sci.space.shuttle:445

In article <509@otto.cvedc.UUCP> billa@otto.UUCP (Bill Anderson) writes:
>In article <> apollo@ecf.toronto.edu (Vince Pugliese) writes:
>>
>>As well I will be include a very simple C program, hacked together by fellow group member
>> [...]
>
>If anyone out there in netland converts this C program so that it can be
>run on suns, please post the results of your work to the net.

It has already been done.  The program should be in /usr/demo/SRC/shaded.c,
the shuttle data is in /usr/demo/DATA/space.dat.  There are notes on running
it in /usr/demo/README.  The program displays 2 windows with cursor lines, to
enable you to select the 3d viewpoint, and there's a pop-up menu for setting
fill style and colour, &c.  For monochrome you need to select the "edges" (I
think) fill style or it'll look pretty wierd.  Also, if your display surface
doesn't support hidden surface removal, you'll get a wireframe effect that
can be confusing to the eye.

/usr/demo/DATA also contains data files for an icosahedron, a pyramid, a
ball and a Klein bottle.

--
 From:  Ralph Mitchell at Brunel University, Uxbridge, UB8, 3PH, UK
 JANET: ralph@uk.ac.brunel.cc	  ARPA:  ralph%cc.brunel.ac.uk@cwi.nl
 UUCP:  ...ukc!cc.brunel!ralph   PHONE: +44 895 74000 x2561
 "There's so many different worlds, so many different Suns" -- Dire Straits
#! rnews 1156
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: rec.arts.sf-lovers
Subject: Re: SPACE WAR BLUES (was Re: Gibson)
Message-ID: <809@its63b.ed.ac.uk>
Date: 4 Dec 87 12:49:58 GMT
References: <8711211710.AA02986@decwrl.dec.com>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 17

In article <8711211710.AA02986@decwrl.dec.com> boyajian@akov68.dec.com (JERRY BOYAJIAN) writes:
>(Oh, before anyone asks the obvious question, the author was Richard
>Lupoff, who is one of the best unknown science fiction writers around.)

I find this statement hard to believe, based on the quality
of his book "Circumpolar". It is full of characters which
barely qualify as two dimensional, offensive racial stereotypes
and various other assorted characters whose collective IQ doesn't get
into double figures. I rated this book as -****.

I cannot believe that someone who turned out such complete
drivel could improve enough in other books to even qualify
as average.

I am however, willing to be surprised. What other books of
his would people recommend?
	Bob.
#! rnews 1599
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: sci.misc
Subject: Re: Grey Goo that's too smart for its own good
Keywords: nanotechnology foresight drexler
Message-ID: <810@its63b.ed.ac.uk>
Date: 4 Dec 87 13:10:07 GMT
References: <799@sbcs.sunysb.edu> <2698@drivax.UUCP> <1063@sugar.UUCP> <2411@watcgl.waterloo.edu> <1445@m-net.UUCP> <1526@mmm.UUCP> <2783@drivax.UUCP>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 23

In article <2783@drivax.UUCP> macleod@drivax.UUCP (MacLeod) writes:
>In article <1526@mmm.UUCP> cipher@mmm.UUCP (Andre Guirard) writes:
>>In article <1445@m-net.UUCP> russ@m-net.UUCP (Russ Cage) writes:
>>>In <2411@watcgl.waterloo.edu> kdmoen@watcgl.waterloo.edu (Doug Moen) writes:
>>>>[...]  If it *does* turn out to be possible to build Grey Goo,
>>>>then by the time fabrication technology catches up, perhaps we can have
>>>>a wide spectrum of Goo killing techniques already available.
>
>Goo seems almost inevitable. It should not be a big problem, of itself;
>the definition of Goo (for those not familiar with the problem) is that
>of a nanomachine that will use any available energy and raw material to
>reproduce itself periodically.  If it reproduces at 2x per year you have
>one problem, relatively minor; if it reproduces at 512x per minute, you have 
>quite another.

I can hear the squeals from the anti-nuclear type lobby already

	Can you PROVE it is safe?
	Campaign against the Grey Goo!
	prevent Nano-technology!

and not a :-> in sight.
	Bob.
#! rnews 3115
Path: alberta!mnetor!uunet!mcvax!ukc!cheviot!robert
From: robert@cheviot.newcastle.ac.uk (Robert Stroud)
Newsgroups: comp.unix.wizards
Subject: Re: //host vs "mount point"
Message-ID: <2584@cheviot.newcastle.ac.uk>
Date: 4 Dec 87 16:22:51 GMT
References: <648@tut.cis.ohio-state.edu> <1668@tut.cis.ohio-state.edu> <38c15248.4580@hi-csc.UUCP> <9559@mimsy.UUCP> <411@PT.CS.CMU.EDU> <6769@brl-smoke.ARPA>
Reply-To: robert@cheviot (Robert Stroud)
Organization: Computing Laboratory, U of Newcastle upon Tyne, UK NE17RU
Lines: 62

In article <6769@brl-smoke.ARPA> gwyn@brl.arpa (Doug Gwyn (VLD/VMB) <gwyn>) writes:
>In article <411@PT.CS.CMU.EDU> jgm@K.GP.CS.CMU.EDU (John Myers) writes:
>>Just to add to the confusion, let me put in a plug in for the Carnegie-Mellon
>>University Computer Science Department's syntax:
>>/../host
>
>Stolen from the Newcastle Connection.
>
>>"/.." is known as the "super-root".  It seems logically consistent to me...
>
>So, what is the result of
>	$ cd /..
>	$ pwd

/.. of course!!

If you add directories above root (and remember that with the Newcastle
Connection, /.. was just a directory rather than some mysterious 
"super-root") so that it is possible for your current directory to
be in an uncle or cousin relationship with root (rather than a direct
descendent), then you have to modify the pwd algorithm accordingly.

pwd assumes that if you go up the tree with ".." enough times you will
get to root. If your current directory is in a sideways relationship
to root, this assumption will no longer be valid.

The modified pwd algorithm should work like this:

(1) Go up the tree with .. from your current directory until you
find / or reach the base of the tree (a directory which is its own
parent).

(2) If you didn't reach / in (1), then starting from / go up to
the base of the tree with .. and prefix the appropriate number of
/..'s to the string from (1).

For example, after cd /../../C/D, step (1) will give /C/D and step (2)
will give /../.. so the answer is /../../C/D.

This is relatively straightforward to implement. I've made the necessary
modifications to the System V /bin/pwd and sh (which has a built-in pwd)
for use with a kernel implementation of the Newcastle Connection.

The tricky bit is getting the shortest possible pathname. For example,
if / corresponds to /../../A/B in the global naming tree, then after
cd /../C, the modified pwd algorithm would give /../../A/C which is
correct but redundant. (/../../A is the same as /.. if / is /../../A/B).

This can be fixed if you keep a record of everywhere you visit in (1) and
stop in (2) when you reach somewhere you've visited before, but since in
an infinite naming tree this would require an infinite amount of storage
and isn't very efficient in any case, it is easier to simply implement
the algorithm given (which also requires an infinite amount of storage
in the general case of course!) and ignore this problem.

Robert J Stroud,
Computing Laboratory,
University of Newcastle upon Tyne.

ARPA robert%cheviot.newcastle@nss.cs.ucl.ac.uk
UUCP ...!ukc!cheviot!robert
JANET robert@newcastle.cheviot
#! rnews 835
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!pyr1.cs.ucl.ac.uk!awylie
From: awylie@pyr1.cs.ucl.ac.uk
Newsgroups: comp.sys.ibm.pc
Subject: Re: Standard date bug
Message-ID: <39500002@pyr1.cs.ucl.ac.uk>
Date: 4 Dec 87 13:58:00 GMT
References: <7457@eddie.MIT.EDU>
Lines: 12
Nf-ID: #R:eddie.MIT.EDU:7457:pyr1.cs.ucl.ac.uk:39500002:000:432
Nf-From: pyr1.cs.ucl.ac.uk!awylie    Dec  4 13:58:00 1987


I have a Taiwanese XT clone with some strange BIOS and MSDOS 3.2 and the
bug has annoyed me some time. This is NOT the 'subtle' bug mentioned in
another reply, but a simple non-increment of the date at midnight. This
wreaks havoc with MAKE!
   I shall try CLOCKFIX.SYS tonight. Thanks very much to the poster, his
was the only really useful solution proposed.

Andrew Wylie
University of London Computer Centre

awylie@uk.ac.ucl.cs
#! rnews 847
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!bath63!sc_dra
From: sc_dra@ux63.bath.ac.uk (Dave Allum)
Newsgroups: comp.sys.atari.st
Subject: Hard Disk Optimisers
Summary: Recommendations wanted
Message-ID: <1972@bath63.ux63.bath.ac.uk>
Date: 4 Dec 87 15:53:49 GMT
Reply-To: sc_dra@ux63.bath.ac.uk (Dave Allum)
Organization: SWURCC, University of Bath, U.K.
Lines: 13


Does anyone have any recommendations for and/or experience of hard disk
optimisers for the ST?

The only ones I have come across are Simon Poole's DLII and Michtron's
Tune Up! (their exclamation mark, not mine).

I have tried neither (DLII did some strange things with a ram disk I 
tested it on, and I'd rather not pay for Tune Up! until I have some
favorable reports on it) and would be very interested in  anyone's
experiences with the above or any other such beasts.

Thanks.
#! rnews 1573
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: sci.physics
Subject: Re: GR question
Message-ID: <811@its63b.ed.ac.uk>
Date: 4 Dec 87 17:31:49 GMT
References: <4688@cit-vax.Caltech.Edu> <895@ubc-vision.UUCP>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 28

In article <895@ubc-vision.UUCP> majka@ubc-vision.UUCP (Marc Majka) writes:
>would see the "poor fellow's" delta-t getting longer.  The poor fellow
>crosses the Absolute Event Horizon in a finite amount of (his) time.
>The observer sees the poor fellow falling more and more slowly (while
>also seeing him getting exponentially red-shifted) toward r=2M, but
>never getting there.  I liked the presentation of this in my GR textbook:

The observer, if he waited around long enough, would also
see the black hole evaporate by Hawkins' radiation.

But, from the point of view of the observer, the "poor fellow"
can never cross the event horizon before the hole evaporates
away from under him.

Therefore, the "poor fellow" must observe one of two things.
Either he crosses the event horizon in a finite amount of
time, or he will observe the black hole to vanish as he
approaches.

1. sets up a paradox, but 2. implies that anything falling
into a black hole can't get into the black hole before it
evaporates. i.e. the black hole can't form in the first
place. It just get very close to it.


Would someone please comment on the above. I am sure I must
be missing something. (I'm no physicist)
	Bob.
#! rnews 2122
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!zen!frank
From: frank@zen.UUCP (Frank Wales)
Newsgroups: news.config
Subject: Updated map entry for zen
Keywords: new host computer
Message-ID: <787@zen.UUCP>
Date: 3 Dec 87 22:20:52 GMT
Organization: Zengrange Limited, Leeds, England
Lines: 47


It's a bit late  again,  we've been  running  the new system for about 3
months now, but here is our updated map entry:

#N	zen
#S	HP 9000 Model 840; HP-UX 1.1 (V.2)
#O	Zengrange Limited
#C	Julian Perry, Frank Wales
#E	jules@zen.co.uk ...!mcvax!ukc!zen.co.uk!jules
#T	+44 532 489048
#P	Greenfield Road, Leeds, West Yorkshire, England, LS9 8DB
#L	01 31 22 W / 53 47 42 N
#R
#
zen	hwcs(DAILY)


Who we are and what we do:

As a company, we produce  custom  solutions  on  hand-held  and portable
equipment,  primarily   customising   Hewlett-Packard   hand-helds.  For
example, we recently installed almost 6 000 HP-71 hand-held computers as
networked  terminals in 430 DHSS offices as part of a Document  Tracking
System developed by us to a DHSS specification.

We're not just a software  house, but also develop custom  packaging and
electronics where necessary too.  Our customers are primarily government
departments  (here and abroad), but we have also  produced  products for
individual sale through dealers (such as the Zenwand-71 barcode wand for
the HP-71, which span off of the DHSS contract).

Although our products are almost exclusively  related to hand-helds, our
expertise  stretches through to custom chip design and  mainframe-hosted
software  packages  (mainly  under Unix).  As a  consequence,  we regard
ourselves as a solutions  house, rather than being specific to software,
hardware, design or whatever.

We have one  office [in  Leeds],  have been  around for seven  years and
employ over 40 people at present.  Is that a reasonable summary?

Jules & Frank

Julian Perry               [ jules@zen.co.uk  ...!mcvax!ukc!zen.co.uk!jules ]
Frank Wales                [ frank@zen.co.uk  ...!mcvax!ukc!zen.co.uk!frank ]
System Managers
Zengrange Limited          Phone: +44 532 489048 ext 217
Leeds, England.
#! rnews 1158
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: rec.music.classical
Subject: Re: re repeat repeating pieces
Message-ID: <1567@brahma.cs.hw.ac.uk>
Date: 4 Dec 87 18:18:28 GMT
References: <8712011820.AA18589@decwrl.dec.com>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 13
Summary:

Expires:

Sender:

Followup-To:



[ignore the above email address and use my signature]
I may have missed some of this thread, but I haven't heard anyone mention
Satie yet. His Vexations for piano is meant to be repeated 840 times
(it takes about 18 hours to perform). He also wrote some pieces of music
to be played in particular spaces - "Music for a Boardroom" is one
that comes to mind - which go round and round in circles. (I think that one
would produce some #@$% aggressive board meetings).
-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1124
Path: alberta!mnetor!uunet!mcvax!ukc!stl!dww
From: dww@stl.stc.co.uk (David Wright)
Newsgroups: comp.os.vms
Subject: Problem with VMS 4.6 if your uVAX has EMULEX CS02's
Message-ID: <596@acer.stl.stc.co.uk>
Date: 4 Dec 87 21:54:38 GMT
Reply-To: dww@stl.UUCP (David Wright)
Organization: STL,Harlow,UK.
Lines: 16

Our System Manager has reported that there is a problem with using EMULEX CS02
QBUS comms cards which are not at the latest revision level, under VMS 4.6.   
These cards appeared to work fine under VMS 4.5 and earlier.

The EMULEX CS02 card, configured as two DHV-11 8-line muxs, gives phantom
devices when running SHOW DEVICE.   For example, TXC0 to TXC7 become TXC0 to
TXC15.  There are problems in using the lines - for example Control-Y acts
on the group of lines not just one!  There are other problems known to EMULEX. 

The solution is to upgrade the firmware PROM on the card to at least
revision P.  Emulex may make a charge for this.

-- 
Regards,
        David Wright           STL, London Road, Harlow, Essex  CM17 9NA, UK
dww@stl.stc.co.uk <or> ...uunet!mcvax!ukc!stl!dww <or> PSI%234237100122::DWW
#! rnews 384
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!jgh
From: jgh@root.co.uk (Jeremy G Harris)
Newsgroups: comp.sys.amiga
Subject: New Kickstart
Keywords: Kickstart workbench janus
Message-ID: <489@root44.co.uk>
Date: 4 Dec 87 19:05:27 GMT
Organization: Root Computers Ltd., London, England
Lines: 3

Will the Workbench-less Kickstart initialise Janus?
-- 
Jeremy Harris			jgh@root.co.uk
#! rnews 1018
Path: alberta!mnetor!uunet!mcvax!unido!stollco!til
From: til@stollco.UUCP (tilgner)
Newsgroups: sci.astro
Subject: The current state of Hubble Constant?
Keywords: Cosmology
Message-ID: <142@stollco.UUCP>
Date: 5 Dec 87 18:32:42 GMT
Organization: Stollmann Gmbh, D 2000 Hamburg 50
Lines: 17

I am just preparing a 'semi-popular' lecture on how the
value of the Hubble Constant is determined.

As is generally
known, the values of different authors fluctuates between
ca. 50 to 100 km/(sec Mpc). The latest discussion of this
problem which I know of is M. Rowan-Robinson's book
"The Cosmological Distance Ladder" (Freeman 1985). He
advocates 67 km/(sec Mpc) after a detailed discussion of
the different distance indicators.

Now I would like to know: What is the current state of
affairs? The responses of the advocates of the various
values, for example by Sandage & Tammann or de Vaucouleurs
(= the grand old men of this topic)? Somehow I missed
their reactions. Can anybody give me a hint via e-mail?
I'll summarize.
#! rnews 2734
Path: alberta!mnetor!uunet!mcvax!enea!ttds!draken!zap
From: zap@draken.nada.kth.se (Svante Lindahl)
Newsgroups: comp.unix.wizards,comp.emacs
Subject: Re: Emacs csh alias
Message-ID: <235@draken.nada.kth.se>
Date: 6 Dec 87 07:00:31 GMT
References: <10672@brl-adm.ARPA>
Reply-To: zap@nada.kth.se (Svante Lindahl)
Followup-To: comp.emacs
Organization: The Royal Inst. of Techn., Stockholm
Lines: 49
Xref: alberta comp.unix.wizards:5741 comp.emacs:2402

[Warning: Extensive inclusion, but I have included a new newsgroup in
 the newsgroups-line, and directed followups to it (comp.emacs)]

In article <10672@brl-adm.ARPA> dsill@NSWC-OAS.arpa (Dave Sill) writes:
>I've been trying to set up a C-Shell (4.2 BSD) alias for Emacs (GNU
>17.64, not that it matters) which, when run the first time will
>actually run Emacs, but after suspending Emacs with C-z, will bring
>the background Emacs job to the foreground.  The catch is that I'd
>also like the alias to re-load emacs if I exit with C-x C-c.  Simply
>stated, I want an alias named "emacs" which will load Emacs if it
>isn't already loaded, but will foreground a background Emacs if one
>exists.
>
>I know I could do this with a script (if I assume the Emacs job is
>always job %1), but I'd prefer an alias since they're faster.  It
>would be especially nice to determine which background job was the
>Emacs job and foreground *it*, instead of just assuming job %1.
>
>Any ideas or alternate approaches?  Should I just put up with the
>occasional "fg: No such job." message?

Here is something which should do part of what you want. It doesn't
accomplish to start a new emacs process if you exited the last one
with C-x C-c - unless the first one had never been suspended!
Whenever you get "fg: No such job" just type ``i!!'', reinvoking the
commandline prefixed with an "i", "iemacs" standing for "init emacs".

alias emacs iemacs
alias iemacs 'alias emacs remacs; "emacs" \!* ; alias emacs iemacs'
alias remacs fg %emacs

Here we use a special version of suspend-emacs, that will look for a
file ".emacs_pause" in the user's home directory when emacs is
resumed. In this file suspend-emacs expects to find the current
working directory and an optional "command line" that is parsed like
the initial command line.  Very useful!
This could be done using "suspend-resume-hook", but the hook wasn't
available in 17.?? when this was first implemented here.

These are the aliases I use together with the special version of
suspend-emacs.

alias emacs iemacs
alias remacs 'echo `pwd` \!* >\! ~/.emacs_pause ; %emacs'
alias iemacs 'alias emacs remacs; "emacs" \!* ; alias emacs iemacs'
alias kemacs 'alias emacs iemacs; remacs -kill'


Svante Lindahl		zap@nada.kth.se		uunet!nada.kth.se!zap
#! rnews 2721
Path: alberta!mnetor!uunet!mcvax!diku!iesd!jpc
From: jpc@iesd.uucp (Jens P. Christensen)
Newsgroups: comp.unix.questions,comp.unix.wizards,sci.math.stat
Subject: Problems with S statistical package
Summary: Cannot make S work properly on Sun-3
Keywords: S AT&T Sun-3 SunOS 3.4
Message-ID: <162@iesd.uucp>
Date: 5 Dec 87 19:41:09 GMT
Reply-To: jpc@iesd.UUCP (Jens P. Christensen)
Followup-To: comp.unix.questions
Organization: Dept. of Comp. Sci., Aalborg University, Denmark
Lines: 58
Xref: alberta comp.unix.questions:4768 comp.unix.wizards:5742 sci.math.stat:213

Could anyone please shed light on a problem I have in compiling the S
statistical package from AT&T on our Sun-3 system:

System specifics: Sun 3/260 under SunOS 3.4 using the m4 macro
processor supplied with the S system. S version date: Fri Feb 28 1986

Using the hints on compiling with BSD4.2 systems I only get apparently
harmless warnings under the compilation. This could for example be:

Warning on line 84 of hcp.f: local variable i never used
Warning on line 96 of stems.f: statement cannot be reached
f77: Warning: File with unknown suffix (/usr/local/src/s/S/newfun/lib/grz)
     passed to ld
or
"dprint.c", line 20: warning: illegal combination of pointer and integer, op =

Furthermore there are problems with the utility routine scandata.C, which
fails with error: too many local variables. This is fixed by making the
declaration of "table" global. Not pretty, but it works.

These are all the kinds of problems that appear during the
compilation, and it *will* result in an executable, except....
The f...ing system doesn't even know how to add two numbers, as seen in
the following:

One-time initialization for new S user in /usr.MC68020/iesd/tap/jpc ...
Directories swork and sdata created
> 1 + 2
Bad operator: +
Error in +
> 

Running the tests supplied with the system ($A/DOTEST ALL) will not
give better results. This is an excerpt from $TEST/current/apply:

> prefix("apply.")    # test of apply and multivariate stuff, some time-series
> $Random.seed_c(57,0,3,0,0,0,49,16,0,0,0,0)	# to initialize at same spot
> matr_matrix(rnorm(100),20,5)
Invalid distribution: rnorm
Error in rnorm
Dumped
> print(cm_apply(matr,2,"mean")); apply(matr,2,"var")
apply.matr not found
Dumped
 .
 .
and more depressing errors...
Why does the prefix command work, while the matr_matrix(rnorm... stuff don't?

So, have *anybody* made this run on a Sun system, and how did you do it?
All suggestions or pointers to which direction I should go, are welcome.

regards,
-- 
Jens Peter Christensen                               jpc@iesd.uucp
Department of Math. and Computer Science             {...}!mcvax!diku!iesd!jpc
Aalborg University Centre
Denmark
#! rnews 1496
Path: alberta!mnetor!uunet!mcvax!lambert
From: lambert@cwi.nl (Lambert Meertens)
Newsgroups: sci.math.symbolic
Subject: Bug in Macsyma SOLVE
Message-ID: <137@piring.cwi.nl>
Date: 6 Dec 87 21:50:53 GMT
Organization: CWI, Amsterdam
Lines: 39

This is UNIX MACSYMA Release 309.2.

(c1) x^12-12*x^11+48*x^10-40*x^9-193*x^8+392*x^7+44*x^6+8*x^5-977*x^4
     -604*x^3+2108*x^2+4913;

      12       11       10       9        8        7       6      5        4
(d1) x   - 12 x   + 48 x   - 40 x  - 193 x  + 392 x  + 44 x  + 8 x  - 977 x
                                                             3         2
                                                      - 604 x  + 2108 x  + 4913

(c2) solve(%);
                      6       5       4        3        2
(d2)          [0 = - x  + 12 x  - 47 x  + 188 x  - 527 x  - 4913]

That looks wrong, but let's check if it factors (d1):

(c3) part(%,1,2);
                    6       5       4        3        2
(d3)             - x  + 12 x  - 47 x  + 188 x  - 527 x  - 4913

(c4) gcd(%,d1);

(d4)                                   1

No, it does not.  Let's have a look at the real roots of (d1) and (d3):

(c5) realroots(d1)$ %,numer;

(d6) [x = - 1.960768669843674, x = - 1.544090360403061, x = 3.544090360403061,
                                                         x = 3.960768669843674]
(c7) realroots(d3)$ %,numer;

(d8)           [x = 5.472395747900009, x = 7.766151040792465]

Way off.

-- 

Lambert Meertens, CWI, Amsterdam; lambert@cwi.nl
#! rnews 989
Path: alberta!mnetor!uunet!mcvax!unido!tub!actisb!bernd
From: bernd@actisb.UUCP (Gunter Nitzler)
Newsgroups: comp.sources.bugs
Subject: Re: Starchart printing problem
Message-ID: <116@actisb.UUCP>
Date: 6 Dec 87 15:55:23 GMT
References: <3554@ames.arpa>
Reply-To: bernd@actisb.UUCP (Bernd-Gunter Nitzler)
Organization: Actis in Berlin GmbH, W. Germany
Lines: 19

In article <3554@ames.arpa> yee@ames.UUCP (Peter E. Yee) writes:
>I compiled and ran the starchart program.  The starpost version prints out
>the outline of the chart and the legend.  Nothing more.  No stars, no planets,
>no nebulas.  Nothing.  Is it just me, or has anyone else had this problem?

I had the same problem and have found two bugs:

In starchart.c, line 243 old:
	char ras[2], ....
new:
	char ras[20], ...

In starchart.c, line 757 old:
	    sscanf(cbuf, "%*5s%f%f%f %[^\n]", &ra, &de, &sc, legend);
new:
	    sscanf(cbuf, "%*5s%lf%lf%lf %[^\n]", &ra, &de, &sc, legend);

This two changes fixes the bugs.
Bernd.
#! rnews 2244
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!jmunkki
From: jmunkki@santra.UUCP (Juri Munkki)
Newsgroups: comp.sys.mac
Subject: Color CopyBits Is Too Slow!
Keywords: Mac II Color QuickDraw Animation Speed Optimization
Message-ID: <9130@santra.UUCP>
Date: 6 Dec 87 21:13:10 GMT
Organization: Helsinki University of Technology, Finland
Lines: 76


I experimented with offscreen pixmaps today. It seems that Color
Quickdraw is very flexible, but too slow for good animation. Most of the
overhead comes from color matching and conversion. I guess I could write
my own color matching routine, but I think there should be a fast way to
do a simple copy operation.

In most painting programs the actual painting could be done on an
offscreen bitmap with the same color table as the best gDevice.

It takes about twice as much time to do a copybits in srcCopy mode than
it takes in the srcXor mode. Below is a short program that draws to an
offscreen pixmap and then copies it back to the screen. Try different
transfer modes and note the speed difference. The code is written in LS
C 2.13. Even srcXor, which is the fastest usable mode, is too slow for
really high quality animation.

How can it be done faster?

#include <MacTypes.h>
#include <QuickDraw.h>
#include <Color.h>
#include <WindowMgr.h>

WindowPtr	onScreen;
CGrafPtr	offS;
RGBColor	temp;
PixMapPtr	offP;

void	main()
{
	int	i;
	
	InitGraf(&thePort);	InitCursor();
	InitFonts();		InitWindows();
		
	onScreen=GetNewWindow(1000,0L,-1);

	offS=(CGrafPtr)NewPtr(sizeof(*offS));

	OpenCPort(offS);
	HLock(offS->portPixMap);
	offP=*(offS->portPixMap);

	SetRect(&offP->bounds,0,0,256,256);
	PortSize(256,256);
	offP->rowBytes=32768L+256;

	offP->baseAddr=NewPtr(65536L);

	EraseRect(&offS->portRect);
	temp.blue=65535;
	temp.red=0;
	temp.green=0;
	RGBForeColor(&temp);
	for(i=0;i<256;i+=4)
	{	MoveTo(i,0);
		LineTo(255-i,255);
	}

	SysBeep(10);
	HideCursor();
	for(i=100;i;i--)
		CopyBits(&((GrafPtr)offS)->portBits,&onScreen->portBits,
				 &offS->portRect,&offS->portRect,srcXor,0);
	SysBeep(10);
	while(!Button());
}

Juri Munkki
jmunkki@santra.hut.fi
jmunkki@fingate.bitnet
lk-jmu@finhut.bitnet

P.S. The window is longword aligned and a color table was copied from the
     system file.
#! rnews 617
Path: alberta!mnetor!uunet!mcvax!enea!chalmers!benke
From: benke@chalmers.UUCP (Bengt-Eric Ericson)
Newsgroups: comp.sys.ibm.pc
Subject: Re: WARNING! FASTBACK may corrupt your hard disk!
Message-ID: <2239@chalmers.UUCP>
Date: 6 Dec 87 21:16:48 GMT
References: <703@vaxine.UUCP> <3225@bnrmtv.UUCP> <7024@sunybcs.UUCP>
Reply-To: benke@chalmers.UUCP (Bengt-Eric Ericson)
Organization: Dept. of CS, Chalmers, Sweden
Lines: 3
Keywords:Computer Shopper


In some article in this group there is said something about
"Computer Shopper". Is this a magazine or what? Please
enlight us guys here in the land of Polar bears. :-)
#! rnews 2432
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!kjws
From: kjws@eagle.ukc.ac.uk (K.J.W.Smithers)
Newsgroups: comp.sys.amiga
Subject: Re: A2090A HD controller
Message-ID: <4038@eagle.ukc.ac.uk>
Date: 6 Dec 87 14:46:00 GMT
References: <5474@oberon.USC.EDU> <6575@ccicpg.UUCP> <2903@cbmvax.UUCP>
Reply-To: kjws@ukc.ac.uk (K.J.W.Smithers)
Organization: Computing Lab, University of Kent at Canterbury, UK.
Lines: 56
Summary:

Expires:

Sender:

Followup-To:


In article <2903@cbmvax.UUCP> you write:
>
>This is one of the things that the updated hddisk device I announced
>awhile ago (and will mail to people over usenet) fixes.  If you don't
>have have a 2090 card, the software that comes with your 2090 is
>the new driver, so it will work fine in overscan.
>-- 
>andy finkel		{ihnp4|seismo|allegra}!cbmvax!andy 
>Commodore-Amiga, Inc.
>

I have an A2090 card and a CSA68020/68881 board with no 32 bit ram.
 
 They will Not work together. (but both work seperately)

I think the driver (hddisk) is dated  1986 , is this the latest driver?
(If not could you please e-mail me the latest version)

The problem is when I run binddrivers that task stops, (binddrivers
never exits). It seems to fallover on a particular call to execbase.
The last instruction (displayed by MetaScope) is  mov a2,(a0)

If i move the hddisk from expansion draw , to hddisk.device in the
devs draw, i can mount the harddisk (dh0:) , but when i do a
cd dh0: , the cd command displays 'Cant find dh0:'

I am running morerows, 672*266 on a B2000 rev 4.0 board (pal) with
2Mbytes expansion ram , 2*3.5inch drives, and (hopefully) A2090 +
20 Mbyte hard disk, and a CSA 68020/68881 board.

I have also done the wire-link modification to the main B2000 board,
as required by CSA for the 68020 board on Rev4.0 and later boards.

Slots are as follows :-

     I  I  E  E  E  M  H     6
     B  B  M  M  M  E  A     8
     M  M  P  P  P  M  R     0
           T  T  T  O  D     2
	   Y  Y  Y  R  D     0
                    Y  I     C
                       S     P
                       K     U

   Thanks in advance for any help
		
	Kit Smithers

____________________________________________________________________________
   Kit Smithers			kjws@ukc.ac.uk
				kjws@ukc.UUCP
				!mcvax!ukc!kjws

The man who can not stay fast and hard at the same time !
Live for ever, or die in the attempt.
______________________________________________________________________________
#! rnews 1572
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!ajcd
From: ajcd@its63b.ed.ac.uk (Angus Duggan, Department of Computer Science, University of Edinburgh,)
Newsgroups: rec.games.hack
Subject: pickup option - suggestion
Keywords: pickup HACKOPTIONS
Message-ID: <813@its63b.ed.ac.uk>
Date: 6 Dec 87 11:47:56 GMT
Reply-To: ajcd@its63b.ed.ac.uk (Angus Duggan)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 23

Here's a suggestion for an improvement (at least I think it is :-) to the
"pickup" option in nethack, which someone who is familiar with the source
code might like to implement -

Make the "pickup" option a composite option like "packorder", and re-write
the picking up code so that the types of objects specified will be
automatically picked up. All other objects could still be picked up by ','.

e.g. "pickup:?+/=!)"  would pick up scrolls, spellbooks, wands, rings,
                                   potions, and weapons.

This would be useful for those of us who don't like carrying hoards of
gold around, and also to prevent picking up dead cockatrices while still
picking up other objects.

BTW, does anyone know what the options "null" and "news" do?
-- 
Angus Duggan, Department of Computer Science, University of Edinburgh,
James Clerk Maxwell Building, The King's Buildings, Mayfield Road,
Edinburgh, EH9 3JZ, Scotland, U.K.
JANET:  ajcd@uk.ac.ed.ecsvax  ARPA: ajcd%ecsvax.ed.ac.uk@cs.ucl.ac.uk
USENET: ajcd@ecsvax.ed.ac.uk  UUCP: ...!seismo!mcvax!ukc!ecsvax.ed.ac.uk!ajcd
BITNET: psuvax1!ecsvax.ed.ac.uk!ajcd or ajcd%ecsvax.ed.ac.uk@earn.rl.ac.uk
#! rnews 4243
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!simon
From: simon@its63b.ed.ac.uk (ECSC68 S Brown CS)
Newsgroups: comp.lang.c
Subject: Re: stdio error detection
Message-ID: <814@its63b.ed.ac.uk>
Date: 6 Dec 87 17:35:07 GMT
References: <10649@brl-adm.ARPA>
Reply-To: simon%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk (Simon Brown)
Organization: LFCS, University of Edinburgh
Lines: 87

In article <10649@brl-adm.ARPA> dsill@NSWC-OAS.arpa (Dave Sill) writes:
>>I used to be rather fond of C, but this error stuff is quite
>>incredibly bad.  The problem isn't really the language; it's
>>the libraries.
>
>Rather than messing with errno, I think a new variable, say, liberr,
>should be used.  An include file, say liberr.h, could contain macro
>definitions for the various types of errors.  A macro named LIBERR
>could also be defined in liberr.h so code could be written that would
>take advantage of liberr if it was available or handle errors in the
>usual way if it's not.  Even better would be to have LIBERR be a
>predefined macro like ANSI, unix, vax, et cetera.
>

This still has the same problem as with "errno"- namely that you're trying
to describe a general ``error condition'' using a single number! I'm told
that VMS (but it's a good idea for all that...) provides a stack of error 
values which allows a program to search backward to find out what the "real" 
error was, depending on what kind of detail is required. If you have several
levels of library calls between you and the system call that failed, this
can be extremely useful- it's not really much use having an error-value
if you can't even tell what system call it came from (let alone what parameters
were *passed* to that system call to cause it to fail!).

A *decent* error-returning mechanism would describe:

	1. What call (syscall or library call) failed.
	   This could be a number- you could use something like internet
	   addressing to put some kind of structure into it:
		libc.stdio.fopen
	2. Why it failed.
	   Simple E-numbers will do for this (although I suppose they'd
	   have to be grouped for different libraries):
		E_STDIO.E_CANNOT_OPEN_FILE
	3. What value it returned.
		(FILE *)NULL
	3. What parameters were passed to it.
	   This is the most difficult one, because it would have to have
	   some kind of idea as to the types involved. It could (I suppose)
	   deal only with string types (and convert any other type into
	   "printable" form by doing the equivalent of sprintf()'ing it).
	   It also has to be a "list", which means it would probably have
	   to be done using something like "argc,argv":
		argc: 2
		argv: "mumble.splat", "r"

If the error is not "dealt with", then this information should propogate
down (together with the info from the callee's failure), and so on...

So, If you do a
	fopen("mumble.splat","r")
and it fails, then the following would be left on the stack (in some format
or other) to be dealt with by some error-diagnosing function:

	kernel.open:
		param 1: "mumble.splat" [string]
		param 2: 0 [int]
		returns: -1 [int]
		error: E_KERNEL.ENOENT
	libc.stdio.fopen:
		param 1: "mumble.splat" [string]
		param 2: "r" [string]
		returns: 0 [FILE *]
		error: E_LIBC.E_STDIO.E_CANNOT_OPEN_FILE

The error-diagnosing stuff could then print something *useful* such as
	stdio fopen: couldn't open file "mumble.splat" for reading, because:
	    kernel open: no file or directory "mumble.splat"

(and of course the format of these messages could be user-configurable, so
that noddies would just get the information they need, whereas people who
understand what they're doing could get reams and reams of info- just by setting
some environment parameter to the appropriate value).

Of course, all this stuff would have to be known by the compiler, and I'm sure
it'd be dead slow to execute!

-- 
--------------------------------------------------
| Simon Brown                                    |
| Laboratory for Foundations of Computer Science |
| Department of Computer Science                 |
| University of Edinburgh, Scotland, UK.         |
--------------------------------------------------
 UUCP:  uunet!mcvax!ukc!lfcs!simon
 ARPA:  simon%lfcs.ed@nss.cs.ucl.ac.uk      "Life's like that, you know"
 JANET: simon@uk.ac.ed.lfcs
#! rnews 665
Path: alberta!mnetor!uunet!mcvax!henk
From: henk@cwi.nl (Henk Schouten)
Newsgroups: rec.games.board
Subject: diplomacy
Keywords: pbm
Message-ID: <138@piring.cwi.nl>
Date: 7 Dec 87 08:36:16 GMT
Organization: CWI, Amsterdam
Lines: 9

A local group is going to start a diplomacy game by mail. We have
only few players so I would like to take part in the game myself.
To do so, I would like to have the moves evaluated by a
program. Before writing such a program myself, I would like to
ask if anyone has or knows of such a program in the public
domain, preferrably written in C. Code or pointers to it will be
greatly appreciated.
				Henk Schouten
				..!nl!cwi!henk
#! rnews 1298
Path: alberta!mnetor!uunet!mcvax!varol
From: varol@cwi.nl (Varol Akman)
Newsgroups: sci.crypt
Subject: Re: NSA advertisment
Summary: Somewhat naive, huh?
Message-ID: <139@piring.cwi.nl>
Date: 7 Dec 87 08:59:02 GMT
References: <4781@cit-vax.Caltech.Edu>
Organization: CWI, Amsterdam
Lines: 22

palmer@tybalt.caltech.edu.UUCP (David Palmer) writes:
>I just read a magazine add seeking people to work at the NSA (pg. 80R of
>Dec. 1987 IEEE Spectrum)
>The graphic is 10,000,0... (100 zeros) written on three lines.  The first
>paragraph of the text reads:
>	You're looking at a "googol." Ten raised to the 100th power.
>	One followed by 100 zeros.  Counting 24 hours a day, you would
>	need 120 years to reach a googol.  Two lifetimes.  It's a
>	number that's impossible to grasp.  A number beyond our imagination.
>... material deleted ...

This strikes me as quite odd.  I mean, if something can be done in two lifetimes
then, darn it, it is well within my imagination.
If it can be done within 20 lifetimes
I can still grasp how difficult it should be.  A real difficult thing would
be something that takes say 10^100 lifetimes.

In short, I find the above ad quite naive.  NSA guys should probably
have something better than this for the inspring encryption student.
What do you say?

-Varol Akman
#! rnews 1520
Path: alberta!mnetor!uunet!mcvax!prlb2!ronse
From: ronse@prlb2.UUCP (Christian Ronse)
Newsgroups: sci.math
Subject: Re: Least-squares fitting
Summary: see Duda & Hart, Chapter 9, for a solution
Keywords: ``eigenvector line fitting''
Message-ID: <387@prlb2.UUCP>
Date: 7 Dec 87 09:22:11 GMT
References: <1823@culdev1.UUCP> <528@amethyst.ma.arizona.edu>
Organization: Philips Research Laboratory, Brussels
Lines: 21

From article <528@amethyst.ma.arizona.edu> by hdunne@amethyst.ma.arizona.edu:
< In article <1823@culdev1.UUCP> drw@culdev1.UUCP (Dale Worley) writes:
	[deleted ...]
< }Is is known how to perform least-squares fitting where the "error" is
< }the perpendicular distance between the point and the line?
< }
< If the point is (x_i,y_i) and the line is y = a*x + b, then the square of the
< perpendicular distance is [(y_i - a*x_i - b)^2]/(1 + a^2) (assuming the line
< isn't vertical). Taking the sum of the squared distances and setting the
< partial derivatives wrt. a and b equal to zero, you get the same equations 
< for a and b as you get from the usual least-squares procedure.

See the book ``Pattern Classification and Scene Analysis'' by R.O. Duda & P.E.
Hart, Chapter 9. Section 9.2.1 introduces the usual least square fitting
(``minimum-squared-error line fitting''), and 9.2.2 the one asked by Dale
(``eigenvector line fitting''). There the problem is solved.

Christian Ronse		maldoror@prlb2.UUCP
{uunet|philabs|mcvax|...}!prlb2!{maldoror|ronse}

	STAT ROSA PRISTINA NOMINE, NOMINA NUDA TENEMUS
#! rnews 977
Path: alberta!mnetor!uunet!mcvax!ukc!stl!stc!idec!camcon!mb
From: mb@camcon.uucp (Mike Bell)
Newsgroups: comp.sys.ibm.pc
Subject: Re: Neat voice|gag program
Summary: How does HELPME work?
Message-ID: <1107@titan.camcon.uucp>
Date: 2 Dec 87 14:25:07 GMT
References: <3692@uwmcsd1.UUCP>
Distribution: all
Organization: Cambridge Consultants Ltd., Cambridge, UK
Lines: 15

in article <3692@uwmcsd1.UUCP>, cmaag@csd4.milw.wisc.edu 
(posting to comp.binaries.ibm.pc)  says:

> Here is a neat little program I found on a local bbs.  It uses the speaker
> to generate a very-realistic (the best I've heard on a PC!) voice that
> says something to the effect of "Help!  I'm locked in this computer!
> Let me out! Help!".  

I just played it, and was much impressed. Given the rudimentary
nature of IBM PC's, can anybody explain how it achieves its
effect?
-- 
---------------		UUCP:  ...mcvax!ukc!camcon!mb
-- Mike Bell --		or:    mb%camcon.uucp
---------------		Phone: +44 223 358855
#! rnews 710
Path: alberta!mnetor!uunet!mcvax!ukc!stl!stc!idec!camcon!mb
From: mb@camcon.uucp (Mike Bell)
Newsgroups: comp.sources.bugs
Subject: Re: v12i071:  StarChart program (Minor correction)
Message-ID: <1114@titan.camcon.uucp>
Date: 4 Dec 87 15:48:15 GMT
References: <1110@artemis3.camcon.uucp>
Organization: Cambridge Consultants Ltd., Cambridge, UK
Lines: 10

in article <1110@artemis3.camcon.uucp>, mb@camcon.uucp (Mike Bell) says:
> 	(Problem found on Sun 4.3 BSD Unix)

Sorry, that should have been Sun Release 3.4 of 4.2 BSD... (well it
was correct within an order of magnitude:-)

-- 
---------------		UUCP:  ...mcvax!ukc!camcon!mb
-- Mike Bell --		or:    mb%camcon.uucp
---------------		Phone: +44 223 358855
#! rnews 2447
Path: alberta!mnetor!uunet!mcvax!tuvie!rcvie
From: rcvie@tuvie (ELIN Forsch.z.)
Newsgroups: comp.lang.c
Subject: Re: Autoincrement question
Message-ID: <548@tuvie>
Date: 7 Dec 87 10:00:58 GMT
References: <1507@ogcvax.UUCP>
Organization: TU Vienna EDP-Center, Vienna, AUSTRIA
Lines: 58

In article <1507@ogcvax.UUCP>, schaefer@ogcvax.UUCP (Barton E. Schaefer) writes:
> (I realize this might be similar to another question asked recently, but ...)
> 
> Another student here at OGC recently came to me with a question about the
> C autoincrement operator.  The following program is representative of the
> code he wrote, which did not do what he expected:
> 
>     struct foo { struct foo *tmp; char junk[32]; } foolist[4];
> 
>     main ()
>     {
> 	struct foo *bar;
> 
> 	bar = foolist;
> 	/* Do something with bar */
> 	bar->tmp = bar++;		/* This is the problem line */
> 	/* Do something else */
>     }
> 

This is really dangerous programming. The points where the left and where the
right "bar" are evaluated are implementation defined. The problem is similar to
another one, which a friend of mine had some time ago. He tried to pack as much
as possible into the control part of a while loop using the following statement:

while (a[i]=b[i++])
  ;

Things were even worse here, as the program behaved even differently depending
on whether it was compiled with the optimization option or not. Non optimized
everything worked as expected but in the optimized version only for the first
assignment "i" was incremented after the assignment, for all the following
assignments it was incremented after the evaluation of "b[i]" but before the 
assignment. Nevertheless this behaviour was in the sense of both K&R and ANSI.
The only thing you can trust on, is that the *operand* of the increment
operator is evaluated before its incrementation. One way to achieve the desired
behaviour is, as you suggested yourself, to write:

> What he really wanted was the equivalent of
> 	bar->tmp = bar;
> 	bar++;

and not (for the same reasons stated above):

> 	(bar++)->tmp = bar;

If there is any necessity to have the whole semantic in one *expression*, use
the comma operator, as

bar->tmp = bar, bar++;

This operator *guarantees* the sequential evaluation of its operands from
left to right.

In real life: Dipl.Ing. Dietmar Weickert
              ALCATEL Austria - ELIN Research Center
              Floridusg. 50
          A - 1210 Vienna / Austria
#! rnews 1822
Path: alberta!mnetor!uunet!mcvax!steven
From: steven@cwi.nl (Steven Pemberton)
Newsgroups: comp.sys.atari.st
Subject: Re: Alcyon C Bug N++
Message-ID: <140@piring.cwi.nl>
Date: 7 Dec 87 14:59:48 GMT
References: <8712051307.AA12109@ucbvax.Berkeley.EDU>
Reply-To: steven@cwi.nl (or try mcvax!steven.uucp)
Organization: CWI, Amsterdam
Lines: 38

For people interested, here are a couple of bugs in the Alcyon
compiler that we've been hitting our heads against for the last few
weeks:

	1) The compiler doesn't seem able to cope with nested
	   initialisations. For instance, a struct with an array in
	   the middle:
		static struct foo table[] = {
			{ ...... {.....} ......},
			...
		}
	   The compiler complains about mismatched braces.
	   Cure: 'unwrap' the struct declaration, so it's all at the
		 same level.

	2) In a construct like
		bar *p = (expression1, expression2);
	   the result of expression2 gets coerced to int, and then
	   back to bar *, meaning basically that you get bombs on the
	   screen when you try to use p, due to a wrong address.
	   Cure: use
		bar *p = (expression1, (bar *) expression2);

	3) We believe that 'complicated' initialisations to auto
	   variables in functions (for instance where the
	   initialisation involves a call to another function) often
	   come out wrong. However, by this point, we despaired, and
	   stopped using the compiler, so we never followed up on it.

I might point out that we're trying to compile a BIG program: 30,000
lines of C, so just trying to trace bug 2 took us a LOT of time.

By the way, just for interest: to compile the lot from scratch, using
a ram disk for temporaries would take 4 hours. When we reinitialised
the disk partition, and copied the files back, a recompile only took
1.5 hours!

Steven Pemberton, CWI, Amsterdam; steven@cwi.nl
#! rnews 1265
Path: alberta!mnetor!uunet!mcvax!mhres!jv
From: jv@mhres.mh.nl (Johan Vromans)
Newsgroups: comp.sys.hp
Subject: Re: syslogd on HP-UX
Summary: I have one
Message-ID: <1495@mhres.mh.nl>
Date: 7 Dec 87 12:19:02 GMT
References: <641@ucdavis.ucdavis.edu>
Sender: jv@mhres.mh.nl
Reply-To: jv@mhres.mh.nl (Johan Vromans)
Organization: Multihouse N.V., The Netherlands
Lines: 20

In article <641@ucdavis.ucdavis.edu> arons@iris.ucdavis.edu (Tom Arons) writes:
>Has anyone successfully ported syslog(3) and syslogd from 4.2 or
>4.3 BSD to HP-UX 5.3 running on a 9000 series 300?
>
>It doesn't look like it would be too hard to do, but I don't want to
>reinvent the wheel.

I once implemented a syslogd for HP-UX using message queues. I have posted
it to comp.sources.unix some time ago, but I can mail it if you cannot find
it.

Features: (almost) BSD compatible, no network support, runs as a daemon,
communicates with message queues.
If no daemon is running, calling 'syslog' is effectivily a no-op.
I have used it when I tried to get sendmail running.



-- 
Johan Vromans                              | jv@mh.nl via European backbone
Multihouse N.V., Gouda, the Netherlands    | uucp: ..{uunet!}mcvax!mh.nl!jv
"It is better to light a candle than to curse the darkness"
#! rnews 1036
Path: alberta!mnetor!uunet!mcvax!botter!wundt!michael
From: michael@wundt.psy.vu.nl (M.A.M. Michael)
Newsgroups: comp.sys.mac
Subject: Address for update of VersaTerm requested
Message-ID: <164@wundt.psy.vu.nl>
Date: 7 Dec 87 16:30:39 GMT
Reply-To: michael@psy.vu.nl.UUCP (M.A.M. Felt)
Organization: VU Psychologie, Amsterdam
Lines: 24

!!!!!!!!!!!!!!!!!!!!!!!!!
Please reply via e-mail.
!!!!!!!!!!!!!!!!!!!!!!!!!

When I purchased VersaTerm 2+ years ago I didn't bother to register.
Now I wish I had. It's about time for an update.

The manual lists the address:
Peripherals Computers & Supplies Inc
2232 Perkiomen Avenue
Mt. Penn, PA 19606

Is this still current (other VersaTerm Users)?

In either case, an e-mail reply will be appreciated.
The dealer (I bought it from) here is still selling
the same version of two years ago. (1.42)

Thanks, michael felt
-- 
Michael Felt	Psychology Dept, Vrije Universiteit, Amsterdam, Netherlands
InterNet:	michael@psy.vu.nl
UUCP:		...!mcvax!vupsy!michael , michael@vupsy.UUCP
AppleLink:	HOL0038
#! rnews 600
Path: alberta!mnetor!uunet!mcvax!inria!axis!alastair
From: alastair@axis.fr (Alastair Adamson)
Newsgroups: comp.text
Subject: To break or not to break
Summary: br command in [nt]roff
Message-ID: <348@axis.fr>
Date: 7 Dec 87 08:33:25 GMT
Organization: Axis Digital, Paris
Lines: 9

I have long wondered at the ubiquitous [nt]roff request
	'br
found in the mm macros and elsewhere. Could someone
please elucidate the use of the break request with
the no-break command character ' used?

Thanks in advance, Alastair Adamson,
	alastair@axis.fr
	Axis Digital, 135 rue d'Aguesseau, 92100, Boulogne, France
#! rnews 8193
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: New program: treecmp.c
Message-ID: <1774@botter.cs.vu.nl>
Date: 7 Dec 87 20:53:16 GMT
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 321


I have written a program to recursively compare the contents of two given
directories, file for file.  The program descends the tree and reports about
files that are missing or different.  Some day, if I ever get around to
producing V1.3 of MINIX, I will make a tree of the current version next to
the V1.2 tree, and then run this program to get a list of all files that
are different.  Then I can make diff listings etc.  In reality, the reason
I wrote it however, is that I had just copied my MINIX tree from one part
of the disk to another, and I wanted to make sure nothing was forgotten.
I am sure there are other uses as well.    One could no doubt write a shell
script to do this same thing, or perhaps use find, but this program is
much faster, being able to compare two 8 megabyte trees in about 12
minutes on a Z-248.

Please post any bugs you find.

Andy Tanenbaum (ast@cs.vu.nl)

----------------------------- treecmp.c ---------------------------------
/* treecmp - compare two trees		Author: Andy Tanenbaum */

/* This program recursively compares two trees and reports on differences.
 * It can be used, for example, when a project consists of a large number
 * of files and directories.  When a new release (i.e., a new tree) has been
 * prepared, the old and new tree can be compared to give a list of what has
 * changed.  The algorithm used is that the first tree is recursively
 * descended and for each file or directory found, the corresponding one in
 * the other tree checked.  The two arguments are not completely symmetric
 * because the first tree is descended, not the second one, but reversing
 * the arguments will still detect all the differences, only they will be
 * printed in a different order.  The program needs lots of stack space
 * because routines with local arrays are called recursively. The call is
 *    treecmp [-v] dir1 dir2
 * The -v flag (verbose) prints the directory names as they are processed.
 */

#include <stat.h>

#define BUFSIZE 4096		/* size of file buffers */
#define MAXPATH 128		/* longest acceptable path */
#define DIRENTLEN 14		/* number of characters in a file name */

struct dirstruct {		/* layout of a directory entry */
  unsigned inum;
  char fname[DIRENTLEN];
};

struct stat stat1, stat2;	/* stat buffers */

char buf1[BUFSIZE];		/* used for comparing bufs */
char buf2[BUFSIZE];		/* used for comparing bufs */

int verbose;			/* set if mode is verbose */

main(argc, argv)
int argc;
char *argv[];
{
  char *p;

  if (argc < 3 || argc > 4) usage();
  p = argv[1];
  if (argc == 4) {
	if (*p == '-' && *(p+1) == 'v') 
		verbose++;
	else
		usage();
  }

  if (argc == 3)
	compare(argv[1], argv[2]);
  else
	compare(argv[2], argv[3]);

  exit(0);
}

compare(f1, f2)
char *f1, *f2;
{
/* This is the main comparision routine.  It gets two path names as arguments
 * and stats them both.  Depending on the results, it calls other routines
 * to compare directories or files.
 */

  int type1, type2;

  if (stat(f1, &stat1)  < 0) {
	printf("Cannot stat %s\n", f1);
	return;
  }

  if (stat(f2, &stat2)  < 0) {
	printf("Missing file: %s\n", f2);
	return;
  }

  /* Examine the types of the files. */
  type1 = stat1.st_mode & S_IFMT;
  type2 = stat2.st_mode & S_IFMT;
  if (type1 != type2) {
	printf("Type diff: %s and %s\n", f1, f2);
	return;
  }

  /* The types are the same. */
  switch(type1) {
	case S_IFREG:	regular(f1, f2);
			break;

	case S_IFDIR:	directory(f1, f2);
			break;

	case S_IFCHR:
	case S_IFBLK:	break;

	default:	printf("Unknown file type %o\n", type1);
  }
  return;
}

regular(f1, f2)
char *f1, *f2;
{
/* Compare to regular files.  If they are different, complain. */

  int fd1, fd2, n1, n2, i;
  unsigned bytes;
  long count;
  char *p1, *p2;

  if (stat1.st_size != stat2.st_size) {
	printf("Size diff: %s and %s\n", f1, f2);
	return;
  }

  /* The sizes are the same.  We actually have to read the files now. */
  fd1 = open(f1, 0);
  if (fd1 < 0) {
	printf("Cannot open %s for reading\n", f1);
	return;
  }

  fd2 = open(f2, 0);
  if (fd2 < 0) {
	printf("Cannot open %s for reading\n", f2);
	return;
  }

  count = stat1.st_size;
  while (count > 0L) {
	bytes = (unsigned) (count > BUFSIZE ? BUFSIZE : count);	/* rd count */
	n1 = read(fd1, buf1, bytes);
	n2 = read(fd2, buf2, bytes);
	if (n1 != n2) {
		printf("Length diff: %s and %s\n", f1, f2);
		close(fd1);
		close(fd2);
		return;
	}

	/* Compare the buffers. */
	i = n1;
	p1 = buf1;
	p2 = buf2;
	while (i--) {
		if (*p1++ != *p2++) {
			printf("File diff: %s and %s\n", f1, f2);
			close(fd1);
			close(fd2);
			return;
		}
	}
	count -= n1;
  }
  close(fd1);
  close(fd2);
}

directory(f1, f2)
char *f1, *f2;
{
/* Recursively compare two directories by reading them and comparing their
 * contents.  The order of the entries need not be the same.
 */

  int fd1, fd2, n1, n2, ent1, ent2, i, used1 = 0, used2 = 0;
  char *dir1buf, *dir2buf;
  char name1buf[MAXPATH], name2buf[MAXPATH];
  struct dirstruct *dp1, *dp2;
  unsigned dir1bytes, dir2bytes;
  extern char *malloc();

  /* Allocate space to read in the directories */
  dir1bytes = (unsigned) stat1.st_size;
  dir1buf = malloc(dir1bytes);
  if (dir1buf == 0) {
	printf("Cannot process directory %s: out of memory\n", f1);
	return;
  }

  dir2bytes = (unsigned) stat2.st_size;
  dir2buf = malloc(dir2bytes);
  if (dir2buf == 0) {
	printf("Cannot process directory %s: out of memory\n", f2);
	free(dir1buf);
	return;
  }

  /* Read in the directories. */
  fd1 = open(f1, 0);
  if (fd1 > 0) n1 = read(fd1, dir1buf, dir1bytes);
  if (fd1 < 0 || n1 != dir1bytes) {
	printf("Cannot read directory %s\n", f1);
	free(dir1buf);
	free(dir2buf);
	if (fd1 > 0) close(fd1);
	return;
  }
  close(fd1);

  fd2 = open(f2, 0);
  if (fd2 > 0) n2 = read(fd2, dir2buf, dir2bytes);
  if (fd2 < 0 || n2 != dir2bytes) {
	printf("Cannot read directory %s\n", f2);
	free(dir1buf);
	free(dir2buf);
	close(fd1);
	if (fd2 > 0) close(fd2);
	return;
  }
  close(fd2);

  /* Linearly search directories */
  ent1 = dir1bytes/sizeof(struct dirstruct);
  dp1 = (struct dirstruct *) dir1buf;
  for (i = 0; i < ent1; i++) {
	if (dp1->inum != 0) used1++;
	dp1++;
  }

  ent2 = dir2bytes/sizeof(struct dirstruct);
  dp2 = (struct dirstruct *) dir2buf;
  for (i = 0; i < ent2; i++) {
	if (dp2->inum != 0) used2++;
	dp2++;
  }

  if (verbose) printf("Directory %s: %d entries\n", f1, used1);

  /* Check to see if any entries in dir2 are missing from dir1. */
  dp1 = (struct dirstruct *) dir1buf;
  dp2 = (struct dirstruct *) dir2buf;
  for (i = 0; i < ent2; i++) {
	if (dp2->inum == 0 || strcmp(dp2->fname, ".") == 0 || 
		strcmp(dp2->fname, "..") == 0) {
			dp2++;
			continue;
	}
	check(dp2->fname, dp1, ent1, f1);
	dp2++;
  }

  /* Recursively process all the entries in dir1. */
  dp1 = (struct dirstruct *) dir1buf;
  for (i = 0; i < ent1; i++) {
	if (dp1->inum == 0 || strcmp(dp1->fname, ".") == 0 || 
		strcmp(dp1->fname, "..") == 0) {
			dp1++;
			continue;
	}
	if (strlen(f1) + DIRENTLEN >= MAXPATH) {
		printf("Path too long: %s\n", f1);
		free(dir1buf);
		free(dir2buf);
		return;
	}
	if (strlen(f2) + DIRENTLEN >= MAXPATH) {
		printf("Path too long: %s\n", f2);
		free(dir1buf);
		free(dir2buf);
		return;
	}
	
	strcpy(name1buf, f1);
	strcat(name1buf, "/");
	strncat(name1buf, dp1->fname, DIRENTLEN);
	strcpy(name2buf, f2);
	strcat(name2buf, "/");
	strncat(name2buf, dp1->fname, DIRENTLEN);
 
	/* Here is the recursive call to process an entry. */
	compare(name1buf, name2buf);	/* recursive call */
	dp1++;
  }

  free(dir1buf);
  free(dir2buf);
}

check(s, dp1, ent1, f1)
char *s;
struct dirstruct *dp1;
int ent1;
char *f1;
{
/* See if the file name 's' is present in the directory 'dirbuf'. */
  int i;

  for (i = 0; i < ent1; i++) {
	if (strncmp(dp1->fname, s, DIRENTLEN) == 0) return;
	dp1++;
  }
  printf("Missing file: %s/%s\n", f1, s);
}

usage()
{
  printf("Usage: treecmp [-v] dir1 dir2\n");
  exit(0);
}
#! rnews 1196
Path: alberta!mnetor!uunet!mcvax!prlb2!kulcs!kdv
From: kdv@kulcs.UUCP (Karel De Vlaminck)
Newsgroups: comp.text
Subject: Laserprinters for troff on NCR Tower
Message-ID: <1066@kulcs.UUCP>
Date: 7 Dec 87 19:18:01 GMT
Reply-To: kdv@kulcs.UUCP ()
Organization: Katholieke Universiteit Leuven, Dept. Computer Science
Lines: 22


1) We want to connect a laserprinter for use with troff
on a NCR Tower System. Has anyone experience with this?

2) We will have access to a KYOCERA F-1000 or F-1200 laser printer.
Does anyone know about the existence of a filter for the
troff output to the laserprinter (which uses 'Prescribe').

3) This laserprinter also has an HP Laserjet Plus emulation.
Another solution would then be to use a troff output filter
for the HP Laserjet.  So I will ask the same question
about the existence for this filter.

Please mail responses directly to me. If there are usefull
responses, I will post a summary to the net.

Karel De Vlaminck

                                | K. U. Leuven
  kdv@kulcs.uucp                | Department of Computer Science
  or ...!mcvax!prlb2!kulcs!kdv  | Celestijnenlaan 200 A
  Phone:  +(32) 16-200656 x3565 | B-3030 Leuven (Heverlee), Belgium
#! rnews 685
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!solaris!wyle
From: wyle@solaris.ifi.ethz.ch@relay.cs.net (Mitchell Wyle)
Newsgroups: comp.unix.questions,comp.text
Subject: Scribe, GML
Keywords: Generalized Mark-up Languages, Scribe
Message-ID: <194@A14A.solaris.ifi.ethz.ch@relay.cs.net>
Date: 7 Dec 87 17:14:05 GMT
Organization: SOT sun cluster, ETH Zuerich
Lines: 7
Xref: alberta comp.unix.questions:4769 comp.text:1344

Where can I buy Scribe?  Are there other implementations of
a standard Markup Language on BSD Unix?  What is Scribe?

Please respond via e-mail; if there are enough "me too's,"
I'll post.

-Mitch Wyle  (wyle@solaris.uucp |  wyle@ethz.uucp  | ...!cernvax!ethz!wyle
#! rnews 1896
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!simon
From: simon@its63b.ed.ac.uk (ECSC68 S Brown CS)
Newsgroups: comp.unix.wizards
Subject: Re: Setting process groups
Message-ID: <815@its63b.ed.ac.uk>
Date: 7 Dec 87 10:30:32 GMT
References: <1765@unc.cs.unc.edu> <910@mcgill-vision.UUCP> <1261@saturn.ucsc.edu> <3134@psuvax1.psu.edu> <2990@hcr.UUCP>
Reply-To: simon@lfcs.ed.ac.uk (Simon Brown)
Organization: LFCS, University of Edinburgh
Lines: 29

In article <2990@hcr.UUCP>  writes:
>Actually SVID setpgrp() has an "extra feature" that Berkeley setpgrp(getpid())
>does not have - it detaches the process from its controlling terminal.  This
>does tend to make it "difficult" to create a pipeline attached to your terminal
>but with its own process group.

Well, you can do that by making each such pipeline belong to it's own SXT
device, and have all these SXT's multiplexed onto your *real* terminal.
Instant job-control!

BTW, SVR2 (and 3?) setpgrp() doesn't fully detach a process from its 
controlling tty if this process has already done a setpgrp() previously
(as is the case for a login-shell -- this comes from init and getty).
What it does in this case is to "partially" detach -- so that if you try 
to set up a new controlling terminal, it's not actually a controlling terminal 
at all -- things like terminal-generated signals don't get sent to the process.
Presumably this is just a cretinous bug, and not something more sophisticated.


-- 
--------------------------------------------------
| Simon Brown                                    |
| Laboratory for Foundations of Computer Science |
| Department of Computer Science                 |
| University of Edinburgh, Scotland, UK.         |
--------------------------------------------------
 UUCP:  uunet!mcvax!ukc!lfcs!simon
 ARPA:  simon%lfcs.ed@nss.cs.ucl.ac.uk      "Life's like that, you know"
 JANET: simon@uk.ac.ed.lfcs
#! rnews 1126
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!adrian
From: adrian@cs.hw.ac.uk (Adrian Hurt)
Newsgroups: rec.arts.sf-lovers
Subject: Re: NCC, USS, Klingons, etc...
Summary: She was a Klingon
Message-ID: <1568@brahma.cs.hw.ac.uk>
Date: 7 Dec 87 10:33:54 GMT
References: <8712011928.AA04370@topaz.rutgers.edu> <1632@bsu-cs.UUCP> <19321@teknowledge-vaxc.ARPA>
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 15

In article <19321@teknowledge-vaxc.ARPA>, hshiffma@teknowledge-vaxc.ARPA (Hank Shiffman) writes:
> 
> Why do you think she was a Klingon?  As I recall, she looked human.
> You weren't assuming that she was a Klingon just because she had
> something going with the Christoper Lloyd character, were you?  For
> shame!

In the book of the film, Valkris was definitely a Klingon, out to do something
valiant to redeem her family's honour. She became very friendly with another
alien on board that ship because of that alien's warrior traditions.
-- 
 "Keyboard? Tis quaint!" - M. Scott

 Adrian Hurt			     |	JANET:  adrian@uk.ac.hw.cs
 UUCP: ..!ukc!cs.hw.ac.uk!adrian     |  ARPA:   adrian@cs.hw.ac.uk
#! rnews 1332
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!adrian
From: adrian@cs.hw.ac.uk (Adrian Hurt)
Newsgroups: rec.games.frp
Subject: Re: Star Wars:  the RPG
Summary: Pictures
Message-ID: <1569@brahma.cs.hw.ac.uk>
Date: 7 Dec 87 10:42:12 GMT
References: <1570@cup.portal.com> <13450021@acf4.UUCP> <1676@cup.portal.com> <1799@cup.portal.com>
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 21

In article <1799@cup.portal.com>, Nightstalker@cup.portal.com writes:
> 
> Hi!  Does anyone know if the force skills can be learned by any PC like
> a smuggler or outlaw for example, or can they only be taught to the
> jedi classes and NPCs?  Thank you.
>    Jason Wallace
> 

Any character may learn the Force skills from a master, and the rulebook even
encourages players using the Jedi characters to do some teaching, provided that
the pupil hasn't got any Dark Side points. Remember, Luke Skywalker was a
"Brash Pilot" type until Obi-Wan (OB1? :-) got to him.

Now for my question. There are some really nice pictures in the rulebook. Can I
get separate copies of these? They would be great posters, especially the
Imperial Navy recruiting poster and the R2 advert.
-- 
 "Keyboard? Tis quaint!" - M. Scott

 Adrian Hurt			     |	JANET:  adrian@uk.ac.hw.cs
 UUCP: ..!ukc!cs.hw.ac.uk!adrian     |  ARPA:   adrian@cs.hw.ac.uk
#! rnews 1047
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Klingon females
Message-ID: <816@its63b.ed.ac.uk>
Date: 7 Dec 87 12:36:36 GMT
References: <8712042225.AA03829@topaz.rutgers.edu> <3490@hoptoad.uucp>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 13

In article <3490@hoptoad.uucp> tim@hoptoad.UUCP (Tim Maroney) writes:
>I like the fact that the Klingons are portrayed as sexist scumbags, but it
>disturbs me that all major sentient races except humans and Romulans put
>women in a subservient role (Klingons, Vulcans, Ferrengi).  It almost seems
>as if we are being told that female subservience is part of the natural
>order of sentience.  There are no major female-dominated sentient races, two
>semi-egalitarian races, and three male-dominated races, a clear imbalance in
>favor of male dominance.

Then who was T'pau supposed to be?

She was vulcan, and very obviously in charge of things.
	Bob.
#! rnews 1313
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Max Headroom
Message-ID: <817@its63b.ed.ac.uk>
Date: 7 Dec 87 13:10:09 GMT
References: <82*quale@si.uninett> <3333@ihlpl.ATT.COM>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Distribution: rec.arts.sf-lovers
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 18

In article <3333@ihlpl.ATT.COM> barth@ihlpl.UUCP (BARTH RICHARDS) writes:
>The problem is that the first few episodes were *re*made by an American
>production company for broadcast on ABC (not the Australian ABC).  As I
>understand it, the first ABC run of six shows (winter/spring of 1987) were
>all reworkings of episodes already done by the British.  The second run
>(fall 1987) were stories newly developed by the American producers.

Sorry, there was only ever one original Max Headroom
programme. That was a one-off TV film made by the BBC.
Any episodes beyond the original story did not originate
with the BBC, although Maxs' creators may have been involved.

Max then re-appeared on Channel 4 as host of a chat show for two
short seasons. (interviewing guest stars about their views
on Golf, music, life and, most importantly, Golf :->)

He then crossed the atlantic to be re-made by ABC.
	Bob.
#! rnews 1152
Path: alberta!mnetor!uunet!mcvax!ukc!warwick!jeff
From: jeff@warwick.UUCP (Jeff Smith)
Newsgroups: comp.lang.c++
Subject: cfront runs too fast (and fix)
Keywords: cfront fix
Message-ID: <586@ubu.warwick.UUCP>
Date: 7 Dec 87 14:49:10 GMT
Organization: Computer Science, Warwick University, UK
Lines: 27

If you can persuade cfront to finish in less than a second with the
+S option on, then the calculation of the number of lines processed
per second generates a divide-by-zero! On a SUN-3 with 1.2.1,
typing
        cfront +S </dev/null
will demonstrate the problem.

Fix main.c thus:

		fprintf(stderr,"real time delay %ld: %d lines per second\n",
#ifdef	CFRONTTOOFASTFIX
			stop_time-start_time,
			stop_time-start_time > 0 ?
				Nline/(stop_time-start_time) : Nline);
#else	!CFRONTTOOFASTFIX
			stop_time-start_time, Nline/(stop_time-start_time) );
#endif	CFRONTTOOFASTFIX
		fflush(stderr);


Jeff
warwick!jeff

PS. Does anyone have a fix to simpl.c for the null dereference
on Pfct f = Pfct(Pptr(q->tp)->typ) caused by the pointer to member function
problem? The problem's been noted a couple of times in comp.lang.c++, by
Paul Calder and others..
#! rnews 1114
Path: alberta!mnetor!uunet!mcvax!ukc!warwick!strgh
From: strgh@daisy.warwick.ac.uk (J E H Shaw)
Newsgroups: rec.music.misc
Subject: Re: More than Yes (really Egg)
Message-ID: <357@daisy.warwick.ac.uk>
Date: 7 Dec 87 17:57:56 GMT
References: <22034@ucbvax.BERKELEY.EDU> <19826@yale-celray.yale.UUCP>
Reply-To: strgh@daisy.warwick.ac.uk (J E H Shaw)
Organization: Computing Services, Warwick University, UK
Lines: 14

----------
Egg released at least one other album before `Civil Surface', I think it
was called `the Polite Force'.  They were very good.

Their drummer (Clive Brooks?) joined the Groundhogs.
Their bassist (Mont Campbell?) played sometimes with some of the other
  Canterbury scene people: National Health, U.K. or similar (mid 70's).
Their organist, Dave Stewart, became a pop star (`It's My Party'), and
  also played with National Health, Hatfield & the North, etc.

Apologies for any wrong names - the above is all based on memory.
-- 
J.E.H.Shaw  Department of Statistics, University of Warwick, Coventry CV4 7AL
$$\times\times\qquad\top\gamma\alpha\omega\exists\qquad{\odot\odot\atop\smile}$$
#! rnews 1231
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!qmc-cs!nickd
From: nickd@cs.qmc.ac.uk (Nick Dunlavey)
Newsgroups: comp.cog-eng
Subject: Touch-screen research
Message-ID: <348@sequent.cs.qmc.ac.uk>
Date: 4 Dec 87 10:52:55 GMT
References: <19@gollum.Columbia.NCR.COM> <290@rd1632.Dayton.NCR.COM>
Reply-To: nickd@qmc.ac.uk (Nick Dunlavey)
Organization: Sch Of C+IT, Thames Polytechnic, Woolwich, London, UK
Lines: 19
Summary:

Expires:

Sender:

Followup-To:

Distribution:

Keywords:


I know that the CEGB (for those outside the UK, this is the
UK's Central Electricity Generating Board) has done some work
on this in the Scientific Services Department in its
North-eastern Region.  A report was produced called:

"A Touch-Sensitive Screen As An Interface For On-Line Control",
by Sutherland, Pringle and Carlin.

It documents the use of an upgraded VT103 in a power station
for operator control.
-- 
-------------
Nick Dunlavey                 ARPA: nickd@cs.qmc.ac.uk    (gw: cs.ucl.edu)
School Of Computing & IT      UUCP: nickd@qmc-cs.UUCP
Thames Polytechnic            Tel:  01-854 2030 Ext 339
Wellington Street
Woolwich                      Thanks to Queen Mary College for
LONDON                        net access
SE18 6PF
#! rnews 1563
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!adrian
From: adrian@cs.hw.ac.uk (Adrian Hurt)
Newsgroups: rec.arts.sf-lovers
Subject: Re: ST:TNG posters
Summary: Tolerance, please
Message-ID: <1570@brahma.cs.hw.ac.uk>
Date: 7 Dec 87 13:24:11 GMT
References: <5226@zen.berkeley.edu>
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 27

In article <5226@zen.berkeley.edu>, iverson@cory.Berkeley.EDU (Tim Iverson) writes:
> 
> ...			Not only that, but these article made no mention of
> ST:TNG in the subject line or header, so I couldn't kill them easily.
> 
> ...					The simple fact is that there is
> newsgroup for all of you to communicate in, and if the rest of us wanted to
> listen, then we would.
> 
 
Oh no, not again. Remember last time, when the number of articles complaining
about ST articles outnumbered the articles concerned (and every other single
type of article as well)?

There is a ST group, but not for "all of us". Some of us can't get at it. But
your point about headers is valid. In the interests of preventing Flame War III
I suggest that those of us who wish to put ST (and Dr. Who, etc) articles here
make sure that "ST" (or Dr. Who, etc) or some similar warning appears in the
header. And those who wish to complain about such postings should also always
put some clear warning in the header, so those of us who aren't interested can
kill their articles easily.

-- 
 "Keyboard? Tis quaint!" - M. Scott

 Adrian Hurt			     |	JANET:  adrian@uk.ac.hw.cs
 UUCP: ..!ukc!cs.hw.ac.uk!adrian     |  ARPA:   adrian@cs.hw.ac.uk
#! rnews 782
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: comp.os.misc
Subject: incorporating processes into file systems
Message-ID: <1572@brahma.cs.hw.ac.uk>
Date: 7 Dec 87 20:36:40 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 9

I believe there has been at least one OS that manages the naming of
processes and files in the same way - so 'ps' would become yet another
option to 'ls'. I forget which. Can anyone enlighten me? References?

-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1538
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: sci.physics,rec.games.programmer,comp.sys.mac
Subject: simulating relativistic motion
Keywords: relativity, graphics, flight simulators
Message-ID: <1573@brahma.cs.hw.ac.uk>
Date: 7 Dec 87 21:00:08 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 18
Xref: alberta sci.physics:2410 rec.games.programmer:44 comp.sys.mac:10006

A long time ago I read about a program developed at MIT that produced
images of the way ordinary scenes (a street) would look at speeds nearing
c. I don't know if it used a plotter or calligraphic display, but it was
so long ago that whatever it did should surely be possible now in real time
on a Mac or equivalent. Does anything like that exist? - a sort of flight
simulator for cosmic ray particles, that would let you define a scene
with a 3D graphics editor and then look at it at various fractions of c.
(Colour would be a nice optional extra). The MIT program produced weirdly
drooping lampposts.
More ambitiously: what about general relativity? Here I am thinking about
some of the descriptions in Kaufmann's "The Cosmic Frontiers of General
Relativity" about how the world would look from near a black hole.

-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 737
Path: alberta!mnetor!uunet!mcvax!enea!kuling!nicke
From: nicke@kuling.UUCP (Niclas Holm)
Newsgroups: comp.lang.c++
Subject: Anyone ported c++ to UNISYS 50xx ?
Message-ID: <569@kuling.UUCP>
Date: 6 Dec 87 16:33:36 GMT
Reply-To: nicke@kuling.UUCP (Niclas Holm)
Organization: Dept. of Computer Systems, Uppsala University, Sweden
Lines: 7

I am interested in running c++ on a UNISYS 50xx (read NCR Tower ..).
Has someone successfully ported it, or need I do it myself ?

-- 
 Niclas F. Holm    |  UUCP:  nicke@kuling ({seismo!mcvax}!enea!kuling!nicke)
 Idrottsg. 21 II   |   or    nicke@umecs  ({seismo!mcvax}!enea!umecs!nicke) 
 S-753 35 Uppsala  |  Phone: +46 - 18 13 36
 SWEDEN            |            Famous Last Words: Look, no hands!
#! rnews 1584
Path: alberta!mnetor!uunet!mcvax!ukc!stc!datlog!slxsys!jpp
From: jpp@slxsys.specialix.co.uk (John Pettitt)
Newsgroups: comp.sys.ibm.pc
Subject: Re: anyone have info on "multilink"?
Summary: Get it from: TSL, Atlanta Ga.
Keywords: remote modem multilink
Message-ID: <108@slxsys.specialix.co.uk>
Date: 7 Dec 87 20:01:09 GMT
References: <167@iisat.UUCP>
Reply-To: jpp@slxsys.UUCP (John Pettitt)
Organization: Specialix International, London, UK.
Lines: 31

In article <167@iisat.UUCP> iis@iisat.UUCP (Paul Gauthier) writes:
>i am trying to locate information on a program called mutlilink. i have
>heard that it permits one to run software on an ibm from a remote (dumb)
>terminal. is this correct? does anyone know of other software that will
>accomplish the same? any and all help would be appreciated. thank you.

Multilink will allow several serial screens to run dos programs.

More info from:
	The Software Link
	3577 Parkway Lane
	Atlanta  GA 30092
	(404) 448 5465

They also have a product call PC-MOS that does the same thing on
386 boxes.  

Other software that lets you run multi user dos includes QNX,
Concurrent DOS (from Digital Research - remember CP/M :-),
Xenix (vp/ix comming soon), Unix V (ISC and Microport, with
vp/ix and locus merge respectivly).

Disclaimer: I don't sell any of the above - just write serial
driver's for them - not easy in some cases :-(
	


-- 
John Pettitt - 144.5 MHz: G6KCQ, CIX: jpettitt,  Voice: +44 1 398 9422
UUCP:  ...uunet!mcvax!ukc!pyrltd!slxsys!jpp  (jpp@slxsys.specialix.co.uk)
Disclaimer: I don't even own a cat to share my views !
#! rnews 1792
Path: alberta!mnetor!uunet!mcvax!targon!wim
From: wim@targon.UUCP (Wim C. J. van Eerdt)
Newsgroups: comp.lang.c++
Subject: Bug bug? solved (?)
Keywords: inline local variables
Message-ID: <367@targon.UUCP>
Date: 8 Dec 87 09:22:14 GMT
Reply-To: wim@targon.UUCP (Wim C. J. van Eerdt)
Organization: Nixdorf Computer BV., OSP, P.O. Box 29,Vianen, The Netherlands
Lines: 34

As long as the department does not have an uucp-feed,
you can e-mail me, the poster.
Success!

	Wim van Eerdt                   E-mail: mcvax!targon!wim
	OSP, Nixdorf Computer Bv, Postbus 29, 4130 EA Vianen
	Nederland. Tel.: +31 3473 62211.

----------------News article got:-------------------------------------
Author: Gerard van Dorth
Subject:  Bug bug? solved (?)
Keywords: inline local variables

> ... Redeclaration of "_au2__Xt_val_global"

The conditional statement on the lines 161/162 "if ( base == BLOCK  &&
	n->lex_level < ( (Pfct(expand_fn->tp)->memof) ? 3 : 2 ) )"
in file expand.c has to be changed in:
"if (  base == BLOCK && n->lex_level < 'function-defined-in-class' ? 3 : 2  )".

For a function defined in a class the lex_level is raised by the curly brace
of the class itself. Not only member functions (memof = member of) can be
defined inline, friends can also.
(Note that funny declarations of local variables did appear in case a member
function which needs locals is declared inline but not defined in the class
itself).

The most simple way to tell whether a function is defined in a class is the
use of a global variable (the more globals the more fun), set and reset 
(embracing the first loop) in the routine classdef::simpl() in file simpl.c
-- 
	Wim van Eerdt                   E-mail: mcvax!targon!wim
	OSP, Nixdorf Computer Bv, Postbus 29, 4130 EA Vianen
	Nederland. Tel.: +31 3473 62211.
#! rnews 1196
Path: alberta!mnetor!uunet!mcvax!unido!infbs!hild
From: hild@infbs
Newsgroups: rec.music.classical
Subject: Re: K. u. K. - (nf)
Message-ID: <24200003@infbs.UUCP>
Date: 7 Dec 87 10:26:00 GMT
References: <19123@amdahl.UUCP>
Lines: 17
Nf-ID: #R:amdahl:19123:infbs:24200003:000:873
Nf-From: infbs!hild    Dec  7 11:26:00 1987

This is only partly true.

"K.u.K." is short for "Kaiserlich und Koeniglich", that's right.
But it has nothing to do with the king of prussia.

At the time "K.u.K." was used, the king of Austria was also the
king of Hungary and the emperor of "Oestreich-Ungarn" (Austria and
Hungary. When thinking of K.u.K., I have the picture of
Kaiser Franz Josef, a fatherly man who kept his nation in a long
period of prosperous (sp?) peace, especially good for the arts.

BTW, Otto von Bismarck is remembered as a man who united Germany
(with an iron hand, that's true), which at that time was divided
into many small parts, all of them having a duke, different legislation
and borders between them. This meant having to pay customs very often,
thus disallowing free trade, which in turn was necessary for the
upcoming industrial revolution. So you might regard OvB a good statesman.
#! rnews 1564
Path: alberta!mnetor!uunet!mcvax!nikhefh!t68
From: t68@nikhefh.UUCP (Jos Vermaseren)
Newsgroups: comp.sys.atari.st
Subject: Re: FOLDERXXXXX
Summary: FOLDRXXX may not do the job either.
Message-ID: <410@nikhefh.UUCP>
Date: 8 Dec 87 10:44:50 GMT
References: <637@aucs.UUCP>
Organization: Nikhef-H, Amsterdam (the Netherlands).
Lines: 22

In article <637@aucs.UUCP>, 870646c@aucs.UUCP (barry comer) writes:
> After I posted my message about the GEMBOOT prg. not working properly, I
> received a message stating that GEMBOOT will not work properly with the new ROMS,well he also stated that there is a prg. call something like "FOLDRXXX.TOS",
> will this prg. work with the new ROMS? If it will do the trick could someone
> that has it please sent it to me in a reply msg. PLEASE do not send it via
> the binaries section I will never get it. 
> Thanx in advance
> Barry

FOLDRXXX starts up with a little table of ROM versions and corresponding
to each version an address. At that address it inserts a list of memory
pieces to be used. If you use new ROM's these addresses have been changed
so you cannot use FOLDRXXX unless you figure out the new address you need
and substitute the necessary information into the binary of FOLDRXXX ( or
a disassembly ). On the other hand: the new version of the ROMs for the
Mega has a much larger OSpool from which these memory blocks are taken.
It used to be 6000 bytes, but the new size is 16000 bytes. I don't know
whether this makes FOLDRXXX superfluous. Maybe Allan Pratt can comment
on that.

Jos Vermaseren
T68@nikhefh.uucp
#! rnews 793
Path: alberta!mnetor!uunet!mcvax!nikhefk!marcel
From: marcel@nikhefk.UUCP (Marcel Corbeek)
Newsgroups: rec.music.classical
Subject: Question
Message-ID: <291@nikhefk.UUCP>
Date: 8 Dec 87 11:19:26 GMT
Reply-To: marcel@nikhefk.UUCP (Marcel Corbeek)
Organization: Nikhef-K, Amsterdam (the Netherlands).
Lines: 15

In the film "Once upon a time in America" an ouverture of Rossini is played.
Is there anyone who can tell me which one this is ?

Marcel Corbeek,			Arpanet : marcel@nikhefk.uucp
NIKHEF-K, Amsterdam.		Bitnet  : v59u0002@hasara11.bitnet
Home address :
Aletta Jacobsstraat 48,
1628 NP Hoorn,
The Netherlands.
Marcel Corbeek,			Arpanet : marcel@nikhefk.uucp
NIKHEF-K, Amsterdam.		Bitnet  : v59u0002@hasara11.bitnet
Home address :
Aletta Jacobsstraat 48,
1628 NP Hoorn,
The Netherlands.
#! rnews 2545
Path: alberta!mnetor!uunet!mcvax!prlb2!ronse
From: ronse@prlb2.UUCP (Christian Ronse)
Newsgroups: sci.math
Subject: Re: Putnam Exam (SPOILER)
Summary: another proof for the x<25 solution
Keywords: Putnam
Message-ID: <388@prlb2.UUCP>
Date: 8 Dec 87 10:03:24 GMT
References: <16863@topaz.rutgers.edu> <16864@topaz.rutgers.edu> <3482@husc6.harvard.edu>
Organization: Philips Research Laboratory, Brussels
Lines: 69

In article <3482@husc6.harvard.edu>, elkies@huma1.HARVARD.EDU (Noam Elkies) writes:
< [Problem A-6 of the 48th Annual W.L.Putnam Contest, Dec. 5, 1987: ]
< >> For each positive integer n, let a(n) be the number of zeros in the
< >> base 3 representation of n.  For which positive real numbers x does
< >> the series
< >> 
< >> 			 inf
< >> 			-----	x^a(n)
< >> 			\	------
< >> 			/	 n^3
< >> 			-----
< >> 			n = 1
< >> 
< >> converge?

> Actually the correct interval of convergence is x<25.  Indeed, in the 
> partial sum corresponding to 3^k<=n<3^(k+1), the coefficients n^(-3) are
> within a factor of 27 of 27^(-k), and the sum of x^a(n) is easily seen to
> be 2(x+2)^k, so by comparison with the geometric series sum(r^k,k,0,inf)
> with r=(x+2)/27 we find that the series converges if and only if r<1,
> i.e. x<25.

This is correct, but the way the proof is written is not easy to understand. I
give below another proof.

For n>0 let

T(n) = x^a(n)/n^3	and 	U(n) = T(3n) + T(3n+1) + T(3n+2)

and for k>=0 let

Z(k) = sum {n=3^k to 3^(k+1)-1} T(n)

We have

Z(k+1)	= sum {n=3^(k+1) to 3^(k+2)-1} T(n)
	= sum {n=3^k to 3^(k+1)-1} [T(3n) + T(3n+1) + T(3n+2)]
	= sum {n=3^k to 3^(k+1)-1} U(n)

Let us compare U(n) to T(n). We have a(3n)=a(n)+1 and a(3n+1)=a(3n+2)=a(n).
Thus

U(n) = x^[a(n)+1]/(3n)^3 + x^a(n)/(3n+1)^3 + x^a(n)/(3n+2)^3

and so U(n) has as upper bound

x^a(n) * (x+2)/(3n)^3 = T(n) * (x+2)/27

and as lower bound

x^a(n) * (x+2)/(3n+2)^3 = T(n) * (x+2)/(3+2/n)^3

in other words U(n) = T(n) * (x+2)/(27+e(n)), where e(n)<(3+2/n)^3-27 tends to
0 when n tends to infinity. It follows then that

Z(k+1)= Z(k)*(x+2)/(27+f(k))

where f(k)<(3+2/3^k)^3-27 tends to 0 for n tending to infinity.

Now the series is the sum of all Z(k). Thus for x>25 we have Z(k+1)>Z(k) for k
large enough, and the series diverges; for x<25 we have Z(k+1)< r * Z(k) (with
r=(x+2)/27<1) for every k, and the series converges. For x=25 the series
diverges too (I think so), because Z(k+1)/Z(k) tends to 1 for k tending to
infinity.

Christian Ronse		maldoror@prlb2.UUCP
{uunet|philabs|mcvax|...}!prlb2!{maldoror|ronse}

		Time is Mona Lisa
#! rnews 1248
Path: alberta!mnetor!uunet!mcvax!botter!star!sater
From: sater@cs.vu.nl (Hans van Staveren)
Newsgroups: comp.dcom.lans,comp.sys.ibm.pc
Subject: Need info on hardware Western Digital EtherCard PLUS
Keywords: moron suppliers, Ethernet, IBM PC's
Message-ID: <608@sater.cs.vu.nl>
Date: 8 Dec 87 14:11:10 GMT
Organization: V.U. Informatica, Amsterdam, the Netherlands
Lines: 18
Xref: alberta comp.dcom.lans:906 comp.sys.ibm.pc:9572

We recently acquired some Western Digital EtherCard PLUS cards for IBM PC's.
We were planning to write MINIX drivers for them and we wanted the hardware
documentation from the supplier. We were indeed promised that.
However, as one might expect, we only got the documentation that stated
where to plug in the cable, and we are more interested in which IO-ports there
are, and what they do. Our supplier is not very helpful at the moment.

We will continue to nag our supplier, but in the meantime, does anyone have
the hardware info on this board?
We know there is a NatSemi DP8390 on there, and we have the datasheet on that
one, but there should also be an Ethernet Address Rom, plus some other things
on the board.

As they say, thanks in advance.

				Hans van Staveren
				Vrije Universiteit
				Amsterdam, Holland
#! rnews 742
Path: alberta!mnetor!uunet!mcvax!nikhefk!marcel
From: marcel@nikhefk.UUCP (Marcel Corbeek)
Newsgroups: rec.music.synth
Subject: Question
Message-ID: <292@nikhefk.UUCP>
Date: 8 Dec 87 15:59:15 GMT
Reply-To: marcel@nikhefk.UUCP (Marcel Corbeek)
Organization: Nikhef-K, Amsterdam (the Netherlands).
Lines: 15

Is there anybody who can give me some information about the WERSI
stageperformer?

Marcel Corbeek,			Arpanet : marcel@nikhefk.uucp
NIKHEF-K, Amsterdam.		Bitnet  : v59u0002@hasara11.bitnet
Home address :
Aletta Jacobsstraat 48,
1628 NP Hoorn,
The Netherlands.
Marcel Corbeek,			Arpanet : marcel@nikhefk.uucp
NIKHEF-K, Amsterdam.		Bitnet  : v59u0002@hasara11.bitnet
Home address :
Aletta Jacobsstraat 48,
1628 NP Hoorn,
The Netherlands.
#! rnews 1193
Path: alberta!mnetor!uunet!mcvax!targon!wim
From: wim@targon.UUCP (Wim C. J. van Eerdt)
Newsgroups: comp.lang.c++
Subject: Another C++ problem, solved (?)
Message-ID: <368@targon.UUCP>
Date: 8 Dec 87 15:33:45 GMT
Reply-To: wim@targon.UUCP (Wim C. J. van Eerdt)
Organization: Nixdorf Computer BV., OSP, P.O. Box 29,Vianen, The Netherlands
Lines: 27

I did get yet another file from my colleague Gerard.
As in other articles stated send he is not reachable by e-mail.
I shall forward your mail!
Success and have fun!

		Wim
--------Fix---------------------------------------------------------
Author: Gerard van Dorth
Subject:  Another C++ problem, solved (?)

> Yet another crazy C++ problem
> ...
> The below code is a generalization of a problem we are seeing with C++
> ...

Substitute the line
		Pfct f = Pfct(Pptr(q->tp)->typ);
in routine call::simpl of the file simpl.c by
		Ptype pt = q->tp;
		while (pt->base == TYPE) pt = Pbase(pt)->b_name->tp;
		Pfct f = Pfct(Pptr(pt)->typ);	// for basic type only.

(Simpl(e) turns out to be hard).
-- 
	Wim van Eerdt                   E-mail: mcvax!targon!wim
	OSP, Nixdorf Computer Bv, Postbus 29, 4130 EA Vianen
	Nederland. Tel.: +31 3473 62211.
#! rnews 1046
Path: alberta!mnetor!uunet!mcvax!cogpsi!tom
From: tom@cogpsi.UUCP (Tom Vijlbrief)
Newsgroups: comp.unix.wizards
Subject: Re: Unattended dumps (BSD4.3)
Message-ID: <327@cogpsi.UUCP>
Date: 8 Dec 87 15:51:57 GMT
References: <9032@santra.UUCP>
Reply-To: tom@cogpsi.UUCP (Tom Vijlbrief)
Organization: TNO Institute for Perception, Soesterberg, The Netherlands
Lines: 21

In article <9032@santra.UUCP> nispa@hutcs.hut.fi (Tapani Lindgren) writes:
>Can yes(1) somehow be piped to a program that reads /dev/tty?
>Could dump(8) be modified to abort at errors without any questions?

If you want dump to read the output from e.g. yes(1)
then you'll have to use a pty(4).

You should arrange that this pty is the control terminal of the
dump program and then write (redirect) the output of yes(1) to the pty.

Setting the control terminal of dump is done by writing a program which:

A) Removes the association with its control terminal by:

   ioctl(f, TIOCNOTTY, 0);

B) Opens the pty.

C) Exec's the dump program.

The above applies to Berkeley Unix 4.X
#! rnews 1034
Path: alberta!mnetor!uunet!mcvax!botter!ark!maart
From: maart@cs.vu.nl (Maarten Litmaath)
Newsgroups: comp.unix.wizards
Subject: Re: Emacs csh alias -- better solution than the first posted (2)
Summary: this time really faster
Keywords: this time really faster
Message-ID: <1160@ark.cs.vu.nl>
Date: 8 Dec 87 16:55:49 GMT
References: <brl-adm.10672> <1508@ogcvax.UUCP> <1159@ark.cs.vu.nl>
Reply-To: maart@cs.vu.nl (Maarten Litmaath)
Organization: VU Informatica, Amsterdam
Lines: 17

Of course the alias had to be:

alias emacs \
'jobs > /tmp/jobs; grep emacs /tmp/jobs > /dev/null && fg %?emacs || /bin/emacs'
                                                           ^         ^^^^^
                                                           !         !!!!!
or

      !!
      vv
alias em \
'jobs > /tmp/jobs; grep emacs /tmp/jobs > /dev/null && fg %emacs || emacs'

Sorry.
-- 
Time flies like an arrow, fruit flies |Maarten Litmaath @ Free U Amsterdam:
like an orange.      (seen elsewhere) |maart@cs.vu.nl, mcvax!botter!ark!maart
#! rnews 691
Path: alberta!mnetor!uunet!mcvax!botter!ark!maart
From: maart@cs.vu.nl (Maarten Litmaath)
Newsgroups: comp.unix.wizards
Subject: Re: Emacs csh alias -- better solution than the first posted
Summary: faster
Keywords: faster
Message-ID: <1159@ark.cs.vu.nl>
Date: 8 Dec 87 15:41:32 GMT
References: <brl-adm.10672> <1508@ogcvax.UUCP>
Reply-To: maart@cs.vu.nl (Maarten Litmaath)
Organization: VU Informatica, Amsterdam
Lines: 7

alias emacs \
'jobs > /tmp/jobs; grep emacs /tmp/jobs > /dev/null && fg %emacs || emacs'

BTW, long live vi!
-- 
Time flies like an arrow, fruit flies |Maarten Litmaath @ Free U Amsterdam:
like an orange.      (seen elsewhere) |maart@cs.vu.nl, mcvax!botter!ark!maart
#! rnews 987
Path: alberta!mnetor!uunet!mcvax!mhres!jv
From: jv@mhres.mh.nl (Johan Vromans)
Newsgroups: comp.unix.questions
Subject: Re: UCB 2.9 LISP goes illegal
Summary: sysmac.sml? RT-11
Message-ID: <1498@mhres.mh.nl>
Date: 8 Dec 87 21:16:13 GMT
References: <10712@brl-adm.ARPA>
Organization: Multihouse N.V., The Netherlands
Lines: 12

In article <10712@brl-adm.ARPA> PAAAAAR%CALSTATE.BITNET@CUNYVM.CUNY.EDU writes:
>We are trying to make LISP run on an 11/24 (yes they still exist)
>What is sysmac.sml, for instance?

That reminds me to the goold old days, when PDP-11's ran only RSX,
RT-11 or RSTS. Sysmac.sml is a macro library, which contains the definitions
for the RT-11 "Programmed Requests" (nowadays known as system calls).
Don't think it's equivalent exists on Unix ...
-- 
Johan Vromans                              | jv@mh.nl via European backbone
Multihouse N.V., Gouda, the Netherlands    | uucp: ..{uunet!}mcvax!mh.nl!jv
"It is better to light a candle than to curse the darkness"
#! rnews 6100
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!srp
From: srp@ethz.UUCP (Scott Presnell)
Newsgroups: rec.games.hack,comp.sources.d
Subject: Re: Compilation of Nethack 2.2
Keywords: AAARGH.
Message-ID: <262@bernina.UUCP>
Date: 8 Dec 87 06:13:59 GMT
References: <9714@shemp.UCLA.EDU>
Reply-To: srp@bernina.UUCP (Scott Presnell)
Organization: Chem. Dept., Swiss Federal Inst. of Tech. (ETH-Zurich)
Lines: 211
Xref: alberta rec.games.hack:1746 comp.sources.d:1578

In article <9714@shemp.UCLA.EDU> claus@CS.UCLA.EDU (Claus Giloi) writes:

>I just downloaded Nethack 2.2 from the net and compiled it on my AT
>at home.
>There were only a few small problems, then it came to linking the 
>monster. An executable was produced, but I get a "Stack Overflow" 
>error when I try to run the 350K executable, and changing the
>value of (STACK:) to outlandish figures (8000, 3fff) didn't change
>that. Someone out there must have gotten it to run, please tell me
>what value you used to link it. (I am using MSC 4.0)

Here's the makefile that I used to get Nethack up under MSC 4.0... NB: the
CFLAGS macro and the link command.  I was able to play a couple of levels
without stack errors or hangups, however there are some problems,
(everything seems to be identified, inventory not displayed correctly,
color not quite right (but overall it works)) so i did not "install" it.

"good luck, jim"

Scott Presnell 						Organic Chemistry
Swiss Federal Institute of Technology  (ETH-Zentrum)
CH-8092 Zurich, Switzerland.
uucp:seismo!mcvax!cernvax!ethz!srp (srp@ethz.uucp); bitnet:Benner@CZHETH5A



#	SCCS Id: @(#)Makefile.pc	2.2	87/11/11
# 	Makefile for NetHack (PC) version 1.0 written using
#	Microsoft(tm) "C" v3.0 or better.
# 
# Large memory model, register bug, remove stack probes:
WIZARD=
V = 22
#CFLAGS = -A$(MODEL) -DREGBUG -DLINT_ARGS -DVER=$V $(WIZARD) -Ot -Gs -Gt100
CFLAGS = -nologo -A$(MODEL) -DLINT_ARGS -DVER=$V -Ox -Gt10
CC = cl
LIBS =
LFLAGS =
MODEL = L
SETARGV = #$(LIB)\$(MODEL)SETARGV
.SUFFIXES: .exe .obj .c
.c.obj:; cl $(CFLAGS) -c $*.c
.c.exe:;
    cl $(CFLAGS) -c $*.c
    link $*.obj $(SETARGV), $@,, $(LIBS) $(LFLAGS);

# The game name
GAME = hack.exe

# The game directory
GAMEDIR = \h

# All object modules
OBJS = decl.obj apply.obj bones.obj cmd.obj do.obj dothrow.obj\
	do_name.obj do_wear.obj dog.obj dogmove.obj eat.obj end.obj \
	engrave.obj fight.obj fountain.obj hack.obj invent.obj \
	lev.obj main.obj makemon.obj mhitu.obj mklev.obj \
	mkmaze.obj mkobj.obj mkshop.obj mon.obj monmove.obj\
	monst.obj o_init.obj objnam.obj options.obj \
	pager.obj polyself.obj potion.obj pray.obj pri.obj prisym.obj\
	read.obj rip.obj rumors.obj save.obj \
	search.obj shk.obj shknam.obj sit.obj spell.obj steal.obj \
	termcap.obj timeout.obj topl.obj topten.obj track.obj trap.obj \
	tty.obj unix.obj u_init.obj vault.obj wield.obj \
	wizard.obj worm.obj worn.obj write.obj zap.obj \
	version.obj rnd.obj alloc.obj msdos.obj

# The main target - you may want to try both of these alternatives.
#
$(GAME) : $(OBJS)
#	link $(OBJS), $(GAME) /NOIG /STACK:4000 /CP:1;
	link $(OBJS), $(GAME) /NOIG /STACK:10000 /SEG:512;
	

#	variable auxilary files.
#
VARAUX = data rumors

install : $(GAME) $(VARAUX)
	- exepack $(GAME) $(GAMEDIR)\$(GAME)
	- exemod $(GAMEDIR)\$(GAME) /max 1

clean :
	erase $(GAME)

spotless: clean
	erase *.obj
	erase main.c
	erase tty.c
	erase unix.c

srcs :
	copy makefile \tmp
	copy *.c \tmp
	copy *.h \tmp
	copy \local\make\make.doc \tmp
	copy \local\make\make.ini \tmp
	copy \bin\make.exe \tmp
	cd \tmp
	time
	touch *.*
	arc m hack$Vs * *.*
	cd $(CWD)


#	Other dependencies
#
RUMORFILES= rumors.bas rumors.kaa rumors.mrx

makedefs.exe:	makedefs.c alloc.obj config.h
	cl -AL makedefs.c alloc.obj


rumors :  config.h $(RUMORFILES) makedefs.exe
	makedefs.exe -r

data :  config.h data.bas makedefs.exe
	makedefs.exe -d

onames.h :  config.h objects.h makedefs.exe
	makedefs.exe -o

#	Below is a kluge.  date.h should actually depend on any source
#	module being changed. (but hack.h is close enough for most).
#
date.h :  hack.h makedefs.exe
	makedefs.exe -D

trap.h :  config.h makedefs.exe
	makedefs.exe -t

main.obj :  pcmain.c hack.h
	$(CC) $(CFLAGS) -Fo$@ -c pcmain.c

tty.obj :  pctty.c hack.h msdos.h
	$(CC) $(CFLAGS) -Fo$@ -c pctty.c

unix.obj :  pcunix.c hack.h mkroom.h
	$(CC) $(CFLAGS) -Fo$@ -c pcunix.c

decl.obj :  hack.h mkroom.h
apply.obj :  hack.h edog.h mkroom.h
bones.obj :  hack.h
hack.obj :  hack.h
cmd.obj :  hack.h func_tab.h
do.obj :  hack.h
do_name.obj :  hack.h
do_wear.obj :  hack.h
dog.obj :  hack.h edog.h mkroom.h
dogmove.obj :  hack.h mfndpos.h edog.h mkroom.h
dothrow.obj :  hack.h
eat.obj :  hack.h
end.obj :  hack.h
engrave.obj :  hack.h
fight.obj :  hack.h
fountain.obj :  hack.h mkroom.h
invent.obj :  hack.h wseg.h
ioctl.obj :  config.h
lev.obj :  hack.h mkroom.h wseg.h
makemon.obj :  hack.h
mhitu.obj :  hack.h
mklev.obj :  hack.h mkroom.h
mkmaze.obj :  hack.h mkroom.h
mkobj.obj :  hack.h
mkshop.obj :  hack.h mkroom.h eshk.h
mon.obj :  hack.h mfndpos.h
monmove.obj :  hack.h mfndpos.h
monst.obj :  hack.h eshk.h
msdos.obj : msdos.h
o_init.obj :  config.h objects.h onames.h
objnam.obj :  hack.h
options.obj :  hack.h
pager.obj :  hack.h
polyself.obj : hack.h
potion.obj :  hack.h
pray.obj :  hack.h
pri.obj :  hack.h
prisym.obj :  hack.h wseg.h
read.obj :  hack.h
rip.obj :  hack.h
rumors.obj :  hack.h
save.obj :  hack.h
search.obj :  hack.h
shk.obj :  hack.h mfndpos.h mkroom.h eshk.h
shknam.obj :  hack.h
sit.obj : hack.h
spell.obj :  hack.h
steal.obj :  hack.h
termcap.obj :  hack.h
timeout.obj :  hack.h
topl.obj :  hack.h
topten.obj :  hack.h
track.obj :  hack.h
trap.obj :  hack.h edog.h mkroom.h
u_init.obj :  hack.h
vault.obj :  hack.h mkroom.h
wield.obj :  hack.h
wizard.obj :  hack.h
worm.obj :  hack.h wseg.h
worn.obj :  hack.h
write.obj :  hack.h
zap.obj :  hack.h
version.obj :  hack.h date.h
extern.h: config.h spell.h obj.h
	touch extern.h
hack.h: extern.h flag.h gold.h monst.h objclass.h rm.h trap.h you.h 
	touch hack.h
objects.h:  config.h objclass.h
	touch objects.h
you.h: config.h onames.h permonst.h 
	touch you.h
#! rnews 3561
Path: alberta!mnetor!uunet!mcvax!cernvax!jmg
From: jmg@cernvax.UUCP (jmg)
Newsgroups: comp.protocols.appletalk
Subject: Kinetics/NCSA problems
Message-ID: <581@cernvax.UUCP>
Date: 8 Dec 87 10:01:07 GMT
Reply-To: jmg@cernvax.UUCP ()
Organization: CERN European Laboratory for Particle Physics, CH-1211 Geneva, Switzerland
Lines: 58

This is a bit of a flame, which I hope does not upset some people
too much. I have tried sending the comments privately, but have had
no reply.
I got a Kinetics internal Ethernet interface for a Mac SE, plus the
ethernet driver, test software and NCSA telnet version 1.12.
In order to try out this software in a safe manner I created a mini-
-Ethernet with the Mac and an Ethernet monitor. Am I glad that I did
this!
The test software, when run, tends to throw out a large number of
broadcast packets in a very short space of time. Sometimes one can
control the frequency, other times not. At least one test threw out
about 200 broadcast packets in much less than one second. If I had
been on the real CERN Ethernet then a few hundred users would have
had to deal with these!
FLAME ON
When will people writing test software avoid the intensive use of
broadcast packets? Multicast would be slightly better, but even then
the software should establish the address of those other computers
with which it can run a test, and then address them directly.
FLAME OFF (for a while)
I then tried to run NCSA telnet. This also started out with about
70 immediate broadcasts. These started out with a set of three
types of broadcast:
  1. arp with source ip address 0.0.0.255, looking for 0.0.0.127
  2. something with type field 80f3 (what the hell is this?)
  3. some other arp-type (type field 809b) with sender as 0.0.0.127
These three are repeated about 20 times at intervals of about
10 milliseconds (yes, milliseconds!). There are then a few more type
809b broadcasts at reasonable (a few hundred milliseconds!) intervals
before telnet starts to arp for the real host that I asked for.
FLAME ON
Why does software often insist on repeating packets at very short
intervals on vey reliable LANs (and have you seen the Sun lately!)?
FLAME OFF
Despite all the above, I waited for a quiet moment before connecting
onto the real Ethernet. I then tried telnet to our Ultrix Vax.
Immediate remark: keyboard in application mode does not work for us.
I then thought to run the vt100 test program (which some of you might
also have picked up off usenet). What a disaster: the emulation fails
all over the place!
Never mind, let us see if I can connect to our IBM VM system. Of course,
I have to go via a Spartacus KNET, because there is no NCSA tn3270
(is anyone working on this?). Complete failure: Spartacus has a bit of
a peculiar telnet setup (though Ultrix, bsd4.2 and FTP Inc. telnet on
a PC work fine) which seems to screw NCSA telnet.
Final try: go through an IBM 7171 front-end, which has 3270 to VT100
built in. Sort of works (using ESC n for PF key n), but since the
application keypad mode fails there is no way that I could get PA2
for clear screen. Merde (which the French will understand.
FLAME ON
I know that NCSA is now at version 2.0. Why did I get version 1.12
from Kinetics? (and why must only a Kinetics agent modify their Mac SCSI
box for a European power supply?). How do I get an updated version
quickly (no, I cannot do anonymous FTP!). Why have these simple tests
never been reported before? etc. etc.
FLAME OFF
I would be delighted if someone could tell me that all the above problems
are fixed in the current release!
#! rnews 1102
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!wanner
From: wanner@ethz.UUCP (Juerg Wanner)
Newsgroups: rec.games.misc
Subject: Re: The Pawn help
Message-ID: <263@bernina.UUCP>
Date: 8 Dec 87 14:48:50 GMT
References: <2884@cbmvax.UUCP> <2299@killer.UUCP> <2910@cbmvax.UUCP>
Reply-To: wanner@owf.UUCP (Juerg Wanner)
Organization: OWF AG, Switzerland
Lines: 17
Keywords:


In article <2910@cbmvax.UUCP> daveb@cbmvax.UUCP (Dave Berezowski) writes:
>How does one assure that they get the chest?  Wait around for Kronos at the
>beginning of the game after you've delivered the note?

After delivering the note? Hmmm... that might be too late.

>I've been told that there is a bug in the game such that you must get to
>the pedestal asap else the blue key won't be there (this is what has happended
>to me).  If I do go to the pedestal first, will I miss the Adventuer and
>Kronos?  ie. should I wait around for Kronos, give the adventuer (with the
>chest I guess), and then go for the blue key?

I've neither encountered that bug, nor did I first get the key. There's a lot
one can do before.


Juerg Wanner
#! rnews 2241
Path: alberta!mnetor!uunet!mcvax!nikhefk!paulm
From: paulm@nikhefk.UUCP (Paul Molenaar)
Newsgroups: comp.sys.mac
Subject: Re: HyperCard Find
Summary: Here's the solution (well...)
Message-ID: <293@nikhefk.UUCP>
Date: 8 Dec 87 23:45:24 GMT
References: <1262@runx.ips.oz>
Organization: Nikhef-K, Amsterdam (the Netherlands).
Lines: 50

In article <1262@runx.ips.oz>, clubmac@runx.ips.oz (Macintosh Users Group) writes:
> 
> I was asked this question by a guy on the weekend, and was unable to help
> him.  Any of you Hypercard gurus able to answer??
> 
> "I want to have a BACKGROUND button which has a script that tries to FIND
> an arbitrary text.  However, when I try it, it only finds the text in
> BACKGROUND fields, not FOREGROUND.  The FIND works properly when you use
> the MESSAGE box.. how come?"
> 
> Jeff Laing (where for art thou comp.sys.mac.hypercard?)
> 
Same problem here. I noticed that strange Find bug too. My
solution is a real kludge, but it works.

Instead of issuing the FIND command in script, TYPE the FIND command
with all the arguments into the message box and then (again
from script) add a return. Like:

on mouseUp
   type "FIND" && quote & key & quote && "in background field id" && number &
   return
end mouseUp

This also makes the repeated FIND easier.

I made a stack that needed a search option on partial keys. So I wanted
HC to keep on looking when the user stated that the item found wasn't
the right one.

I made a script to do this (if interested I can mail/post it) that
expects a second field for every field to be looked in. The item found
is put in the second field (named something like showName). When
the user says he wants to keep on searching, the next item found is
compared to the contents of showName. If it's the same, my script
says that 'it's all there is'. And cancels the search. Otherwise
a repeated search would be impossible.

If you like I can upload the lot. To comp.sys.mac.hypercard maybe?

To Apple:
Why do you reply to all the easy answers in comp.sys.mac.hypercard
bu happily skip all the possibly difficult ones? Seems like
the HyperCard group chooses the easy way out. Too many bugs in HC
perhaps?
-- 
        Paul Molenaar

	"Just checking the walls"
		- Basil Fawlty -
#! rnews 704
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!kolvi!jku
From: jku@kolvi.UUCP (Juha Kuusama)
Newsgroups: comp.sys.ibm.pc
Subject: Screen dump from Hercules to Laserjet wanted
Message-ID: <31@kolvi.UUCP>
Date: 8 Dec 87 12:19:56 GMT
Reply-To: jku@kolvi.UUCP (Juha Kuusama)
Organization: Helsinki University of Technology, Finland
Lines: 10

Could some kind soul over there send me a program/a reference to a program,
that would allow me to print a graphics dump from a Hercules screen to a
HP Laserjet printer It should

	a) not distort the image (circles as circles, not ovals)

	b) send its output to a file (so I can import it to my text).

--
Juha Kuusama, jku@kolvi.UUCP ( ...!mcvax!tut!kolvi!jku )
#! rnews 1093
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!jmunkki
From: jmunkki@santra.UUCP (Juri Munkki)
Newsgroups: comp.sys.mac
Subject: Re: Development Environment Advice Wanted
Keywords: Development, MacII Debuggers
Message-ID: <9206@santra.UUCP>
Date: 8 Dec 87 16:51:43 GMT
References: <687@howtek.UUCP> <3456@husc6.harvard.edu>
Reply-To: jmunkki@santra.UUCP (Juri Munkki)
Organization: Helsinki University of Technology, Finland
Lines: 16

In article <3456@husc6.harvard.edu> singer@endor.UUCP (THINK Technologies) writes:
>The current version of MacsBug, version 5.5, works fine on a Mac II -
>even disassembles 68020 and 68881 opwords, and works with or without
And it slows down the 68881 by about 50%. Can anyone else verify this?
I moved to TMON mainly because it does not affect the speed of my Mac.

I hope none of the Byte or MacTutor benchmarks were run under MacsBug.

Still, ES works better in MacsBug than it does in TMON.

Juri Munkki
jmunkki@santra.hut.fi
jmunkki@fingate.bitnet
lk-jmu@finhut.bitnet

Disclaimer: I'm just a freelance programmer, you shouldn't listen to me anyway.
#! rnews 1288
Path: alberta!mnetor!uunet!mcvax!diku!rancke
From: rancke@diku.UUCP (Hans Rancke-Madsen.)
Newsgroups: rec.games.frp
Subject: Re: Re: Characters with two classes
Message-ID: <3567@diku.UUCP>
Date: 7 Dec 87 15:31:25 GMT
References: <26561S9S@PSUVMA> <81800077@uiucdcsp>
Organization: DIKU, U of Copenhagen, DK
Lines: 23

In article <81800077@uiucdcsp> jenks@uiucdcsp.cs.uiuc.edu writes:

>                       The PHB doesn't specifically forbid doing this
>more than once, nor does it say what the "prime stat" is for Paladinks,
>Rangers, Monks, etc.

I seem to recall having seen a statement like "since <one of
those sub-classes  -  I forget which> has no prime requisite,
you can't switch to/from it." The implication being that any of
the sub-classes that require more than one minimum is out as
regards dual-class characters. So you could be a "fighter-turned-
magician" but not a "ranger-turned-magician". I think it was in
one of THE BOOKS, but I'm not certain. One thing you could do
is to require 15 or 17 in ALL the requisites with minimums.
That will restrict the number of assasin/illusionists!!!

   Hans Rancke, University of Copenhagen
          ..mcvax!diku!rancke

--=-=-=-=-=-=-=-=-=-=-=-=-=-=-

- I hate it when people call me paranoid.
  It makes me feel persecuted.
#! rnews 456
Path: alberta!mnetor!uunet!mcvax!diku!iesd!torbennr
From: torbennr@iesd.uucp (Torben N. Rasmussen)
Newsgroups: comp.sources.wanted
Subject: Wanted: Microemacs part 8
Message-ID: <166@iesd.uucp>
Date: 7 Dec 87 08:15:25 GMT
Reply-To: torbennr@neumann.UUCP (Torben N. Rasmussen)
Organization: Dept. of Comp. Sci., Aalborg University, Denmark
Lines: 7


Could someone please send me part 8 of the sources for Microemacs.

-- 


				Torben Rasmussen (torbennr)
#! rnews 1138
Path: alberta!mnetor!uunet!mcvax!diku!dde!jk
From: jk@dde.uucp (Jens Kjerte)
Newsgroups: comp.sources.wanted,comp.text
Subject: Sourcecode for dca2troff wanted.
Keywords: DCA conversion.
Message-ID: <277@Aragorn.dde.uucp>
Date: 8 Dec 87 09:11:32 GMT
Organization: Dansk Data Elektronik A/S, Herlev, Denmark
Lines: 18
Xref: alberta comp.sources.wanted:2716 comp.text:1345


	We are right now starting a project, that involves translating
	IBM DCA documents to and from a wordprocessing package.
	A program called dca2troff was posted sometime ago.
	This program, as the name says, was able to
	convert from DCA format to troff format.
	Would somebody having that source, please e-mail it to me.

	Other information about software regarding DCA conversion,
	Public Domain or not, would be appreciated. 

	Thanks in advance

-- 
+---------------------------------------------------------------------------+
|   Jens Kjerte  @ Dansk Data Elektronik A/S, Systems Software Department   |
|   E-mail:      ..!uunet!mcvax!diku!dde!jk  or  jk@dde.uucp                |
+---------------------------------------------------------------------------+
#! rnews 1323
Path: alberta!mnetor!uunet!mcvax!diku!dde!ct
From: ct@dde.uucp (Claus Tondering)
Newsgroups: sci.physics
Subject: Maxwell's daemon
Message-ID: <279@Aragorn.dde.uucp>
Date: 8 Dec 87 13:57:45 GMT
Organization: Dansk Data Elektronik A/S, Herlev, Denmark
Lines: 26

Consider the following variant of Maxwell's daemon:

You have the following two items:
    1) a metal block,
    2) a bowl with a liquid.
Both items have the same temperature and are placed close together, they
may, however, be thermally isolated from one another.

Now into the bowl you drop a very small magnet. The motion of the
molecules in the liquid will cause the magnet to move slightly. This
will induce a (very small) current in the metal block. This current will
cause the temperature of the metal block to rise. The current will also
try to stop the movements of the magnet; this will in turn slow down the
motion of the molecules, and the liquid will cool.

The result: The metal block will grow warmer and warmer, and the liquid
will grow colder and colder.

This contradicts the second law of thermodynamics, and has the "advantage"
over Maxwell's daemon that no intelligence is involved.

What is wrong with the above argument?
-- 
Claus Tondering
Dansk Data Elektronik A/S, Herlev, Denmark
E-mail: ct@dde.uucp   or  ...!uunet!mcvax!diku!dde!ct
#! rnews 2476
Path: alberta!mnetor!uunet!mcvax!enea!sommar
From: sommar@enea.UUCP (Erland Sommarskog)
Newsgroups: rec.music.misc
Subject: Swedish prog-rock (was Re: More than Yes)
Message-ID: <2505@enea.UUCP>
Date: 8 Dec 87 23:22:11 GMT
References: <19949@yale-celray.yale.UUCP>
Reply-To: sommar@enea.UUCP(Erland Sommarskog)
Followup-To: rec.music.misc
Organization: ENEA DATA Svenska AB, Sweden
Lines: 42

No isn't that an obscure subject line? But I must correct my 
fellow-countryman here.

Bjorn Lisper (lisper@yale-celray.UUCP) writes:
>Bo Hansson, to be correct. Gee, I didn't know that he was known outside
>Sweden. This guy was a keyboard player who was active mainly in the late
>sixties and early seventies. He is remembered for having made the very
>first record for the first Swedish independent non-profit label "Silence".
>Unexpectedly the record became a hit and the income helped financing a lot
>of records with early Swedish prog-rock that would otherwise not have been
>economically possible to make. Thus his importance for Swedish rock music
>cannot be overestimated.

So he is the one being guilty to it all. Grr. You see, in Sweden 
"progressive" music had nothing to do with the music. When we speak -
or spoke at that time - of "progressive" groups, we talked of groups
that played quite regular rock or pop. There were just one difference
to the ordinary hit music, the lyrics. They were naive, trivial and 
uttermost boring political texts of a communistic nature. (Which does
not imply that they were paid by KGB or something.) I must admit I 
didn't listen to much to them, their proganda was too much for me.

Now, this kind of people dominated this non-profit companies that Bjorn
talked of. For them ideological purity was much more important than
interesting than good music. Not to be denied, *some* good music was 
actually released on Silence and MNW (the other big non-profit), but 
also a lot of true crap. And I can easily imagine that groups with
interesting music was refused beacuse they voted with the wrong party.
(They would never have released Yes, that are right wing if anything.)

Finally, I should admit that despite the poorness of Silence, they
had the most interesting music in Sweden at that time. But that more
gives an indication of bad the rest was. (Abba, do you remember?)




-- 
Erland Sommarskog       
ENEA Data, Stockholm    
sommar@enea.UUCP        
                   C, it's a 3rd class language, you can tell by the name.
#! rnews 2310
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!forty2!poole
From: poole@forty2.UUCP (Simon Poole)
Newsgroups: comp.sys.atari.st
Subject: Re: GEMBOOT and the Megas
Message-ID: <122@forty2.UUCP>
Date: 8 Dec 87 14:19:44 GMT
References: <608@aucs.UUCP> <900@atari.UUCP>
Reply-To: poole@forty2.UUCP (Simon Poole)
Organization: Exp. Physics University Zuerich
Lines: 39


In article <900@atari.UUCP> apratt@atari.UUCP (Allan Pratt) writes:
>in article <608@aucs.UUCP>, 870646c@aucs.UUCP (barry comer) says:
>> 
>> Hi all, well my Mega2 just landed on my desk, really nice. I've got a question for all other Mega owners using the hard disks, I have been using GEMBOOT with
>> my 1040ST all along, when I boot up the Mega two bombs appear then disappear
>> after GEMBOOT has done its thing.
>
>DO NOT USE GEMBOOT.  Use FOLDRXXX from Atari.  HINSTALL should be available,
>too... It makes your hard disk bootable (no "boot floppy" needed).
>
The lastest version of GEMBOOT which was distributed something like
half a year ago, allows you to set the location of the sole undocumented
variable that Konrad uses in GEMBOOT. Matter of fact I used GEMBOOT
without problems on one of the first Mega's that arrived in Switzerland
after changing the GEMBOOT startup file. 

>patches the appropriate location in the OS.  In the case of the Mega
>ROMs, he actually added a pointer in the OS header which points to
>the necessary spot, so FOLDRXXX will work for all future ROM releases.
                                               ^^^^^^^^^^^^^^
Didn't Atari claim it was working on a new '40 folder bug'less OS?                               

>Even old TOS ROM users should probably not use GEMBOOT... I certainly
>wouldn't trust it, and with FOLDRXXX and HINSTALL available, you just
>don't need it.
Hmmmm, as Landon Dyer once said (a long time ago) FOLDRXXX does NOT fix
the other problem with GEMDOS management of the internal directory
list (mutiple bad copies of the same block), GEMBOOT does provide
a workaround  for this problem (so I wouldn't trust FOLDRXXX) plus
a lot of other nice things.


                            Simon Poole
                 UUCP: ....mcvax!cernvax!forty2!poole
                 Bitnet:             K538915@CZHRZU1A

*
***************When will Atari annouce PC-6 to PC-10?****************
*
#! rnews 1572
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!bob
From: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Blake's, all 7 of them!
Message-ID: <818@its63b.ed.ac.uk>
Date: 8 Dec 87 10:08:31 GMT
References: <6320@ihlpa.ATT.COM> <1572@cup.portal.com> <1372@aurora.UUCP>
Reply-To: bob@its63b.ed.ac.uk (ERCF08 Bob Gray)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 28

In article <1372@aurora.UUCP> timelord@aurora.UUCP (G. "Murdock" Helms) writes:
>In article <1572@cup.portal.com>, Isaac_K_Rabinovitch@cup.portal.com writes:
>> Whoops.  After the Star One episode, the actor who played
>> Blake got a job with the National Shakespeare Company, so Blake essentially
>> disappears until the "last" episode.  
>
>The second Travis, the one with the really thick Cockney accent,
>was spotted in the BBC movie "Edge of Darkness" recently broadcast
>in California.

Something else to watch out for. The recently concluded
series "Knights of God" on independant television was
notable only for having Gareth Thomas (Blake himself) playing
the part of the leader of a band of rebels trying to
overthrow the harsh Goverment sometime in the future UK.
Almost a reprise of his part as blake, but he isn't even
one of the major characters. His name comes about eighth
on the credits.

Now we know what he was doing while he was missing from
Blake's Seven. :->

Also look out for the second Dr Who, Patrick Troughton, in a
supporting role.

Note: I do Not recommend this series for any other reson
than the above mentioned curiosity value.
	Bob
#! rnews 2656
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csnjr
From: csnjr@its63b.ed.ac.uk (Nick Rothwell)
Newsgroups: comp.lang.lisp,comp.lang.scheme,comp.lang.misc
Subject: Re: Applicative languages?  Anyone?
Keywords: ML interpreter typechecker
Message-ID: <819@its63b.ed.ac.uk>
Date: 8 Dec 87 12:40:13 GMT
References: <1409@mind.UUCP> <584@zippy.eecs.umich.edu> <1202@uoregon.UUCP>
Reply-To: nick%ed.lfcs@uk.ac.ucl.cs.nss (Nick Rothwell)
Organization: LFCS, University of Edinburgh
Lines: 37
Xref: alberta comp.lang.lisp:566 comp.lang.scheme:85 comp.lang.misc:886

In article <1202@uoregon.UUCP> markv@drizzle.UUCP (Mark VandeWettering) writes:
>In article <584@zippy.eecs.umich.edu> dwt@zippy.eecs.umich.edu (David West) writes:
>>Applicativity has its advantages, but it needs
>>1) ...
>>2) Some syntactic means for preventing argumentsfrom getting unreadably
>>   numerous just to pass something down to where it's finally used. 
>
>	Hmmm, not a bad idea.  I have just acquired "Implementation of
>	Functional Programming Languages by Simon L. Peyton Jones, and
>	am much impressed by the depth/level of the text.  Seeing as I
>	have to do a final thesis/project sometime :-) I might be
>	tempted to try a hand at an ML interpreter/compiler.  I would
>	like to hear from anyone who is trying/has tried similar
>	projects.

ML gives you objects with modifiable state, so that you don't need to
pass a state structure around with you. The disadvantage, of course, is
that you smash the applicative behaviour of the language -
whether it's worth it depends what you're trying to do.
   Another way around this is to use type abstraction. That way, your
state structure is an abstract object with a few access functions to get
at the bits you need. I've always used the former approach, so I don't know
how far the latter approach gets you. It's quite possible to take non-
applicative features like assignment and abstract over them to build
structured objects with varying state, a la Smalltalk perhaps. This isn't
"dirty" functional programming - it's just using a functional language as if
it were a language of a different kind. I recently dedicated a lecture to the
structured use of side-effects in ML.
   By the way, I have various little typecheckers and interpreters for tiny
functional languages lying around on-line somewhere, if you're interested.
All written in ML, of course.
-- 
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk
		<Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
"Nothing's forgotten. Nothing is ever forgotten."   - Herne
#! rnews 1368
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csnjr
From: csnjr@its63b.ed.ac.uk (Nick Rothwell)
Newsgroups: rec.music.synth
Subject: D-50, D-550, MT-32, ???
Message-ID: <820@its63b.ed.ac.uk>
Date: 8 Dec 87 13:01:30 GMT
References: <633@elxsi.UUCP> <5470012@hplsla.HP.COM>
Reply-To: nick%ed.lfcs@uk.ac.ucl.cs.nss (Nick Rothwell)
Organization: LFCS, University of Edinburgh
Lines: 17

In article <5470012@hplsla.HP.COM> steveb@hplsla.HP.COM (Steve Bye) writes:
>The MT-32 is not a product of Roland's professional music products group.
>It is a product of their home keyboards (upscale toys) department.  It uses
>technology develped for the D-50 and D-550.  There is no comparison in 
>actual ussuage between a D-550 and an MT-32.

I recently read a report from a British music journalist visiting Roland in
Japan. Apparently (but *don't* quote me on this :-)) Roland are working on
a rack-mount box with the same sorts of features as the MT-32 but aimed a
bit more at the Pro market - presumably related to the MT-32 as the TX81Z is
to the FB01. I'm keeping my wallet closed and my eyes open...
-- 
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk
		<Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
"Nothing's forgotten. Nothing is ever forgotten."   - Herne
#! rnews 1563
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!doc.ic.ac.uk!aw
From: aw@doc.ic.ac.uk (Andrew Weeks)
Newsgroups: comp.emacs
Subject: uEmacs 3.9 - Function keys on Suns
Message-ID: <144@gould.doc.ic.ac.uk>
Date: 8 Dec 87 17:16:50 GMT
Sender: aw@doc.ic.ac.uk
Reply-To: aw@doc.ic.ac.uk (Andrew Weeks)
Organization: Dept. of Computing, Imperial College, London, UK.
Lines: 40

I have implemented, as an extension to the "VT100" option, some extra
code to allow uEmacs to recognise the top, left and right function keys
on Sun 3 consoles.  ( I imagine they will work on Sun 2s as well). 

These keys, except for the cursor keys (R8,R10,R12 & R14), return a
string of the form <ESC>[ followed by 3 digits followed by 'z'.  By
interpreting the digits as an integer, and subtracting 128 to get a
character, all the function keys can be made to simulate 'FN?' keys. 
Which they return depends on how the Sun keyboard is set up (with
setkeys(1)). 

They won't work if you use Sun-windows and have a .ttyswrc file.

Anyway - Here are the diffs:

*** input.c	Mon Nov 30 12:57:21 1987
--- input.c.orig	Mon Nov 30 12:54:37 1987
***************
*** 364,376 ****
  #if	VT100
  		if (c == '[' || c == 'O') {
  			c = get1key();
! 			if ( c >= 'A' )
! 				return(SPEC | c);
! 			c = c - 48;
! 			c = (c*10) + get1key() - 48;
! 			c = (c*10) + get1key() - 176;
! 			get1key();
! 			return ( SPEC | c );
  		}
  #endif
  		return(META | c);
--- 364,370 ----
  #if	VT100
  		if (c == '[' || c == 'O') {
  			c = get1key();
! 			return(SPEC | c);
  		}
  #endif
  		return(META | c);
#! rnews 1248
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!jam
From: jam@comp.lancs.ac.uk (John A. Mariani)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Max Headroom
Message-ID: <454@dcl-csvax.comp.lancs.ac.uk>
Date: 8 Dec 87 18:47:18 GMT
References: <82*quale@si.uninett> <3333@ihlpl.ATT.COM>
Reply-To: jam@comp.lancs.ac.uk (John A. Mariani)
Distribution: rec.arts.sf-lovers
Organization: Department of Computing at Lancaster University, UK.
Lines: 16

Having observed chat about the American Max series and comparisons with the
UK series, I would like to point out that we (in the
UK) have only seen the Pilot in
terms of an action/adventure episode. Our Max series have really featured
Max as a video DJ, and later as a talk show host.

So, I have kept silent till now, but I reckon the action/adventure series
you guys in the US of A are discussing must be worth watching! Anyone care
to hazard a guess as to why we in the UK don't get your Max show; and
do you get ours?

-- 
"You see me now a veteran of a thousand psychic wars .. "
UUCP:  ...!seismo!mcvax!ukc!dcl-cs!jam | DARPA: jam%lancs.comp@ucl-cs
JANET: jam@uk.ac.lancs.comp   | Post : University of Lancaster, Department of
Phone: +44 524 65201 ext 4467 |	Computing, Bailrigg, Lancaster, LA1 4YR, UK.
#! rnews 1017
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: rec.music.classical
Subject: Minimalist recorder music, anyone?
Message-ID: <1575@brahma.cs.hw.ac.uk>
Date: 8 Dec 87 19:29:14 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 14

What minimalist music is performable by a recorder consort? Terry Riley's
In C is the one and only thing I've found so far (almost no published
minimal music is available in the UK - I have drawn a virtually complete
blank at every major library and music shop in Scotland).

I guess this resolves into two questions: does it exist, and if it does,
can I get it? Do Glass et al have the same attitude to scores that AT&T
does to source code?

-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1165
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: comp.sys.mac
Subject: mathematical laser fonts
Keywords: font, logic, PostScript, laser printer, symbols
Message-ID: <1576@brahma.cs.hw.ac.uk>
Date: 8 Dec 87 19:43:07 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 21


What mathematical laser fonts are available?

What I need is:

	- logic and theoretical computer science symbols (like the old Ophir
	  bitmap font, but with the squared-off set theory symbols used in
	  domain theory);
	  
	- symbols for the better known algebraic structures (N, Z, Q, A, R, C)
	  (is there a font that looks like these do as usually printed?);
	
	- subscripts and superscripts with little enough leading not to
	  sabotage inter-line spacing in programs like WriteNow;
	  
	- maybe some of the more useful German capital letters.
-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1030
Path: alberta!mnetor!uunet!mcvax!ukc!cheviot!eas
From: eas@cheviot.newcastle.ac.uk (Edward Scott)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Obscure TV SF shows
Message-ID: <2588@cheviot.newcastle.ac.uk>
Date: 8 Dec 87 15:19:25 GMT
References: <871201124327980.ABWD@Mars.UCC.UMass.EDU> <4100001@hpcllf.HP.COM>
Reply-To: eas@cheviot (Edward Scott)
Organization: Computing Laboratory, U of Newcastle upon Tyne, UK NE17RU
Lines: 12

In article <4100001@hpcllf.HP.COM> jws@hpcllf.HP.COM (John Stafford x75743) writes:
>Re: UFO
>   The wigs worn by the women on moonbase were of a purple hue and were
>   described (at least in the books the followed the series if not
>   actually on the air) as "anti-static wigs".

About ten years ago I got a second hand copy of "UFO 1: Flesh Hunters" by
Robert Miall. It is a Warner Paperback Library edition, printed with 
permission from Pan books (who presumably did the UK edition). I have't seen
any since then.
How many of these UFO novels were there?
Did Robert Miall write anything else?
#! rnews 542
Path: alberta!mnetor!uunet!mcvax!ukc!stc!pete
From: pete@tcom.stc.co.uk (Peter Kendell)
Newsgroups: rec.arts.sf-lovers
Subject: No More Mel
Message-ID: <488@stc-f.tcom.stc.co.uk>
Date: 8 Dec 87 09:14:20 GMT
Organization: STC Telecoms, London N11 1HB.
Lines: 7


	Hurrah, Hurrah!!
-- 
------------------------------------------------------------------------------
|		  Peter Kendell <pete@tcom.stc.co.uk>	        	     |
|				...{uunet!}mcvax!ukc!stc!pete		     |
------------------------------------------------------------------------------
#! rnews 660
Path: alberta!mnetor!uunet!mcvax!ukc!stc!btnix!psanders
From: psanders@btnix.axion.bt.co.uk (Bob-Cut Maniac)
Newsgroups: comp.sys.mac
Subject: SMALLTALK wanted
Keywords: Mac SMALLTALK
Message-ID: <635@btnix.axion.bt.co.uk>
Date: 8 Dec 87 12:53:54 GMT
Organization: British Telecom Research Labs, Martlesham Heath, IPSWICH, UK
Lines: 10


Does anyone know of a PD SMALLTALK system for the Mac ??

Answers to me and I'll summarise on the Net.

Paul.
-- 
E-mail (UUCP)	PSanders@axion.bt.co.uk (...!ukc!btnix!psanders)
Organisation	British Telecom Research Laboratories, Ipswich UK.
"This mime of mortal life, in which we are apportioned roles we misinterpret..."
#! rnews 628
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!hrc63!trw
From: trw@hrc63.co.uk (Trevor Wright Marconi Baddow)
Newsgroups: comp.sys.ibm.pc
Subject: M.Magee AUTOMENU - any knowledge
Message-ID: <475@hrc63.co.uk>
Date: 8 Dec 87 10:39:57 GMT
Organization: GEC Hirst Research Centre, Wembley, England.
Lines: 10


We have seen a demo of a tiny MS-DOS utility called AUTOMENU which
makes building menus for PC users simple. We want to find who is the
vendor of this utility, the cost, and any details of the command characters
for the menu definition file.

Any help appreciated.

Trevor Wright
yc23%a.gec-mrc.co.uk@nss.cs.ucl.ac.uk
#! rnews 2646
Path: alberta!mnetor!uunet!mcvax!ukc!stc!datlog!dlhpedg!cl
From: cl@dlhpedg.co.uk (Charles Lambert)
Newsgroups: comp.lang.c
Subject: Re: Address of array
Message-ID: <329@dlhpedg.co.uk>
Date: 8 Dec 87 13:30:45 GMT
References: <126@citcom.UUCP> <163@mccc.UUCP> <422@xyzzy.UUCP>
Sender: news@dlhpedg.co.uk
Reply-To: cl@.co.uk (Charles Lambert)
Organization: FSG@Data Logic Ltd, Queens House, Greenhill Way, Harrow, London.
Lines: 56

In article <422@xyzzy.UUCP> throopw@xyzzy.UUCP (Wayne A. Throop) writes:
>> pjh@mccc.UUCP (Peter J. Holsberg)
>> OK - perhaps you had better tell us neophytes what you mean by the
>> address of an array!
>
>Same as address of anything else.  It is an address which, when
>indirected, yields an array, and when "N" is added to it, yields the
>address of an array which is itself a member of an array "N" elements
>away from the array yielded by an indirection.
> 
> [ several abstruse observations ]
>
>What could be simpler?

Well, several other forms of explanation, I guess.  This one confused me,
and I *understand* the address of an array. (Just teasing)

To put it another way....

Any object, of any type (integer, structure, array, etc.), has an address.
Usually, if it is an object that occupies several words of memory, it is the
address at which it begins. (Compiler theorists may be itching to tell me it
might mean something else entirely; let's keep this simple.)  The address of
an object is the compiler's handle for manipulating it.   You think of an
object by its name; the compiler "thinks" of it by its address.

The "address of an array" is the address that the compiler uses to access
that array and to calculate the position of any element in the array.

In C,  the address of an array is the same as the address of its first
element (array[0]).  If you want to set up a pointer to the array, you
get its address simply by naming it. Hence:

	pa = array;	/* pa now contains the address of "array" */

which is exactly the same as

	pa = &array[0]; /* "&" means "address of", so pa contains the
				address of element [0] of "array" */

Now this is a slight quirk in C - the name of the array being a synonym for
its address;  for any other object (notably a struct) that is not true.  If
you want the address of a structure you must write

	ps = &mystruct;	/* NOT ps = mystruct */

So we get back to the discussion from whence we came: why can't we be
consistent and get the address of an array by

	pa = &array;	?

To which the answer is:  you can, with some compilers.

[Further reading: The C Programming Language; Kernighan & Ritchie; pp.93-95]
--------------------------
Charles Lambert
#! rnews 1652
Path: alberta!mnetor!uunet!mcvax!unido!iaoobelix!vogt
From: vogt@iaoobelix
Newsgroups: comp.sys.dec
Subject: Bug in BASIC-PLUS for RSTS V8.0? - (nf)
Message-ID: <9900003@iaoobelix.UUCP>
Date: 8 Dec 87 18:36:00 GMT
Lines: 43
Nf-ID: #N:iaoobelix:9900003:000:1342
Nf-From: iaoobelix!vogt    Dec  8 19:36:00 1987

I think I found a bug in BASIC-PLUS of RSTS V8.0. The following program
isn't working in the right way. I tried to read some records from a file
and to store them in an array. But after I read and stored all records,
the array was completely empty.

> 10 ON ERROR GOTO 1000
> 15 DIM IN$(100%)
> 20 FIELD #1%, 3% as a$, 20% as i$, 15% as q$
> 30 OPEN 'foobar' as file #1%, recordsize 38%
> 40 Z% = 0%
> 50 Z% = Z% + 1%
> 60 GET #15%, RECORD Z%
> 70 IN$(Z%) = I$
> 75 PRINT IN$(Z%)
> 80 GOTO 50
> 90 CLOSE #1%
> 100 PRINT IN$(I%)  FOR I% = 1% TO Z% - 1%
> 110 GOTO 32767
> 1000 IF ERR = 11 THEN RESUME 90
> 1010 ON ERROR GOTO 0
> 32767 END

The outputs in line 75 are alright, but those in line 100 aren't.
Only blank lines appear there.

I found out that if you change line 70 to 'IN$(Z%) = LEFT$(I$, 20%)'
- which does nearly nothing different - it works correctly.

Does anybody know a patch for this bug? Or does anybody know how to
avoid this in an other way?

Thanks in advance

Gerald Vogt

--------------------------------------------------------------------------
Fraunhofer Institut fuer Arbeitswirtschaft und Organisation
Holzgartenstrasse 17
D-7000 Stuttgart 1         UUCP:   ...{uunet!unido,pyramid}!iaoobel!vogt
W-Germany

Phone: (W-Germany) 711 6648191
--------------------------------------------------------------------------
#! rnews 3127
Path: alberta!mnetor!uunet!mcvax!hafro!gst!gunnar
From: gunnar@gst.UUCP (Gunnar Stefnsson)
Newsgroups: sci.math
Subject: Re: Least-squares fitting
Message-ID: <428@gst.UUCP>
Date: 8 Dec 87 15:25:35 GMT
References: <1823@culdev1.UUCP> <22191@cca.CCA.COM> <2301@utastro.UUCP>
Reply-To: gunnar@gst.UUCP (Gunnar Stefansson)
Organization: Marine Research Institute, Reykjavik
Lines: 56

In article <2301@utastro.UUCP> bill@astro.UUCP (William H. Jefferys) writes:
>In article <22191@cca.CCA.COM> g-rh@CCA.CCA.COM.UUCP (Richard Harter) writes:
>~In article <1823@culdev1.UUCP> drw@culdev1.UUCP (Dale Worley) writes:
>~>The normal least-squares fitting of a line to a set of points in the
>~>plane assumes that the x-coordinates of the points are known to be
>~>exact, and the y-coordinates have all the error.  That is, chi^2 is
>~>the sum of the squares of the distances from the points to the line in
>~>a vertical direction.  This introduces assymetry between the
>~>coordinates.
>~>
>~>Is is known how to perform least-squares fitting where the "error" is
>~>the perpendicular distance between the point and the line?
>
>
>Actually, if both coordinates have error, it is essential that this
>fact be taken into account. If you fail to do this, the result will be
>*biased* -- the slope will be systematically underestimated, and
>this bias will not go to zero as you take more and more points

Hold on, isn't this statement a bit too strong? The answer to which method
should be used ultimately depends on what the purpose of the estimations
is. 

In fact, if the purpose is to estimate y for a given x, then ordinary
least squares will do. In this case one is not really interested in
getting the best estimates of the parameters but only in getting a good
prediction.

I claim that there are very few regression examples where one really
cares whether or not the parameters are biased. In the large majority of
cases one is much more interested in the goodness of prediction. In this
case, one is interested in E[Y|X]. So if we model this quantity as
linear in X, then the OLS estimates are BLUE. This will also give
variances etc, all valid conditionally on X.

It is my feeling that a lot of books overemphasize the so-called bias,
since that is very often totally irrelevant.  For example, some
textbooks talk about biased parameter estimates when some variables
are missing in a multiple regression. In reality OLS is estimating a
better set of parameters than would the corresponding "unbiased"
estimator (OLS in this case will give an unbiased estimate of the best
surface based on the reduced set of variables). Certainly in this case,
one can make a strong argument that all the talk about biasses is
totally irrelevant.

Of course if the true purpose is to estimate parameters, e.g. to assess
the effect of a change in X on Y, then indeed one needs to worry a bit
about the effects of X being random.

Gunnar

-- 

-----------------------------------------------------------------------------
Gunnar Stefansson                       {mcvax,enea}!hafro!gunnar 
Marine Research Institute, Reykjavik    gunnar@hafro.UUCP
#! rnews 528
Path: alberta!mnetor!uunet!mcvax!unido!tub!ao
From: ao@tub.UUCP (Arnfried Ossen)
Newsgroups: comp.mail.misc
Subject: Path to UMass Amherst
Message-ID: <318@tub.UUCP>
Date: 7 Dec 87 13:29:49 GMT
Reply-To: ao@tub.UUCP (Arnfried Ossen)
Organization: Technical University of Berlin, Germany
Lines: 7

Anybody out there who knows the PATH to

   University of Massachusetts, Amherst Campus, COINS Department

It should allow access from USENET or BITNET.

Arnfried, ao@tub.UUCP, ao@db0tui6.BITNET, TU Berlin, Berlin, Fed.Rep.Germany
#! rnews 2902
Path: alberta!mnetor!uunet!mcvax!varol
From: varol@cwi.nl (Varol Akman)
Newsgroups: sci.math
Subject: Re:   computational geometry / finding segment intersections
Summary: Try adaptive grid ...
Keywords: segment intersection
Message-ID: <141@piring.cwi.nl>
Date: 9 Dec 87 11:14:57 GMT
References: <4369@sdcsvax.UCSD.EDU>
Organization: CWI, Amsterdam
Lines: 50

<4369@sdcsvax.UCSD.EDU> maiden@sdcsvax.UCSD.EDU (VLSI Layout Project) writes:
>
>Consider a path embedded into the Cartesian plane, where for convenience
>all vertices of the path are lattice points in the positive quadrant.
>All edges are line segments.
>So, the path will look like < (x1,y1) , (x2,y2) , ... , (xn,yn) >.  
>Question:    What is the fastest method of determining *ALL* self-
>	     intersections of this path?
>This may have been beaten to death by computational geometers, so I'll
>append some extra conditions:
>Suppose there are **many** vertices in the path, and that edges are
>for the most part very short.    For example, there could be 10000
>points in a 200 by 200 square, with most edges less than 3 units long.
>Furthermore, assume that there are not very many self-intersections
>to be found.    Now, what would the fastest method be???   Any ideas
>welcome.

There are, as you've guessed several papers in computational geometry
on line segment intersections.  You may look at the books by Shamos
and Preparata, and also the book by Edelsbrunner for references.

My favorite method to solve your problem though is an excellent
method invented by Randolph Franklin at RPI.  It is called ''adaptive
grid'' and works as follows.  First you overlay a regular, say G by G
integer grid on your scene.  Then you enter your edges into respective
cells of the grid  (similar to the bucketing idea!)  Then you make a pass
thru all the cells and find the intersections in each cell.  If an
intersection falls on a grid cell boundary you should be careful to
treat it so the integrity is kept intact.

I'm not very good in describing things in a hurry (especially Email)
but let me tell that I've wide experience with this stuff and it works
very well.  It is especially excellent for a scene made of short edges
with a rather homogeneous distribution.  Write me for details.
Also you may try Franklin at franklin@csv.rpi.edu.  Here is a short bibl.

W.R. Franklin  An exact hidden sphere algorithm that operates
               in real time  COMP. GRAPHICS AND IMAGE PROC. 15(4), 1981

-------------  A linear time exact hidden surface algorithm SIGGRAPH'80

------------- and V. Akman A simple and efficient haloed line algorithm
                           for hidden line elimination COMPUTER GRAPHICS
                           FORUM, 1987

-------------------------- Adaptive grid for polyhedral visibility in
                           object space: an implementation BJC 1987, to appear

-Varol Akman
CWI, Amsterdam
#! rnews 2392
Path: alberta!mnetor!uunet!mcvax!jack
From: jack@cwi.nl (Jack Jansen)
Newsgroups: comp.os.misc,comp.unix.wizards
Subject: Re: Command interfaces
Message-ID: <142@piring.cwi.nl>
Date: 9 Dec 87 15:41:45 GMT
References: <1257@boulder.Colorado.EDU> <6840002@hpcllmv.HP.COM> <9555@mimsy.UUCP> <798@rocky.STANFORD.EDU> <432@cresswell.quintus.UUCP> <3161@psuvax1.psu.edu> <5565@oberon.USC.EDU>
Organization: AMOEBA project, CWI, Amsterdam
Lines: 43
Xref: alberta comp.os.misc:339 comp.unix.wizards:5747

In article <5565@oberon.USC.EDU> blarson@skat.usc.edu (Bob Larson) writes:
> [Discussing primos wildcards versus unix wildcards]
>For example, how would you do the equivelent of this in unix:
>
>cmpf *>old>@@.(c,h) == -report ==.+cmpf -file
>
>(Explanation: compare all files in the old sub-directory ending in .c or
>.h with the file of the same name in the current directory, and put
>the output in the file of the same name with .cmpf appended.  Non-files
>(directories and segment directories) ending in .c or .h are ignored.
>[I do prefer the output of diff -c to that of cmpf, but that isn't
>what I'm talking about here.]

Uhm, yes, unfortunately I find the 'feature' quite unusable.
I *never* come up with the correct sequence of == and @@, so I have to type
the command three times before I get it right. (really retype, that is.
'History mechanism' is something primos has never heard about).

I definitely prefer
for i in *.[ch]; do
    diff old/$i $i >$i.diff
done

(and you can add an 'if [ -d $i ]' if you really care about directories
ending in .c or .h. I don't, because I don't *have* directories ending
in .c or .h).

And, to continue some gripes on primos wildcards:
- I would expect them to work *always*. I.e. if I do
  TYPE @@
  (TYPE is primos echo) I would expect a list of all files, *not* '@@'.
- If I want all arguments on one line, and I use [WILD @@.TMP], and the
  result doesn't fit in 80 characters, I DO DEFINITELY NOT WANT IT TO TRUNCATE
  IT AT EIGHTY CHARS! I lost an important file that way: it was trying
  to generate a list containing PRECIOUSFILE.TMP, but, unfortunately,
  the .TMP started at position 81. So, it removed PRECIOUSFILE in stead.
  sigh.
  
Sorry, there are some neat ideas in primos, but the command processor and
it's wildcards is definitely *not* one of them.
-- 
	Jack Jansen, jack@cwi.nl (or jack@mcvax.uucp)
	The shell is my oyster.
#! rnews 1552
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csbg
From: csbg@its63b.ed.ac.uk (Andie)
Newsgroups: comp.windows.news
Subject: Windows and menus through the CPS interface
Keywords: NeWS windowing, menus, CPS interface
Message-ID: <821@its63b.ed.ac.uk>
Date: 9 Dec 87 00:15:36 GMT
Reply-To: csbg@its63b.ed.ac.uk (Bruce)
Organization: Computer Science Department, Edinburgh University
Lines: 26

Hi everybody !

I'm a final year student at Edinburgh University and as part of my final
year project I am using NeWS to build up a document composition system.
Alas, I'm new to NeWS and the NeWS manual does seem to be rather sketchy,
especially when it comes to using the CPS interface.

Having had a look at the stuff that is floating around in this newsgroup
I think that someone out there will be able to help me.

Point 1 : How can I control the litewin.ps and litemenu.ps packages through
          the CPS interface - especially, how do I get notification to the
          C program that something is happening ?

Point 2 : This may be trivial, but when I create an overlay for the purposes
          of rubber-banding, using the getclick family of operators, I can
          never get the overlay to disappear again. What is happening and 
          how should it be done ?

If these points have already been raised in the past then I will be happy to
receive direct e-mail from anybody who can answer any part of the above
queries.

As they say: When the going gets tough, I get the hell out of it !

Bruce Gilmour (CS4 student at Edinburgh University)
#! rnews 1134
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: Problems with serial TTY driver
Message-ID: <1778@botter.cs.vu.nl>
Date: 9 Dec 87 15:36:52 GMT
References: <2314@encore.UUCP>
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 16

In article <2314@encore.UUCP> paradis@encore.UUCP (Jim Paradis) writes:
>Is there some limit to how fast MINIX will take interrupts? 
>If one takes them too fast, will messages get lost?
>
If you try to force feed MINIX from an Ethernet at 10 Mbps it will probably
drop stuff.  There is undoubtedly a limit on how many interrupts per second
it can handle, but an AT it should be over 1000 per second.

The original tty driver was very carefully written to deal with exactly
this issue.  When characters come in, they are buffered, even if it is
not possible to send a message to the tty task.  This code is on lines
3528 to 3552 of the book.  Assuming you are still using this mechanism,
you ought to be able to accept characters at say 2400 baud without losing
any.

Andy Tanenbaum (ast@cs.vu.nl)
#! rnews 915
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: P-H has MINIX in stock (finally)
Message-ID: <1779@botter.cs.vu.nl>
Date: 9 Dec 87 15:46:14 GMT
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 11


I talked to P-H yesterday.  Version 1.2 of MINIX in 256K & 640K PC, 512K AT, 
mag tape, and the IBM slipcase version with the abridged book are all
in stock.  If it is of any consolation to the people who have had to wait
and wait and wait, one of the corporate vice presidents was so unhappy
about the poor service to customers that he fired the person who was in charge
of managing the MINIX inventory.  He has been replaced by someone else who has 
clear instructions to make sure it doesn't go out of stock again.  They are now
shipping to everyone whose order got backlogged.

Andy Tanenbaum (ast@cs.vu.nl)
#! rnews 841
Path: alberta!mnetor!uunet!mcvax!prlb2!lln-cs!gf
From: gf@lln-cs.UUCP (Frank Grognet)
Newsgroups: rec.games.misc,rec.games.frp,rec.games.board
Subject: WARGAMING!
Keywords: wargame,rule,figurine,game
Message-ID: <796@lln-cs.UUCP>
Date: 9 Dec 87 15:19:13 GMT
Organization: Computer Science Dept., Louvain-la-Neuve Belgium
Lines: 11
Xref: alberta rec.games.misc:1150 rec.games.frp:1652 rec.games.board:543


	I want to start wargaming but I don't know how!

I won't be playing wargames on a board, but with 15mm or 25mm
figurines.
I would like to find addresses in Europe (especially Belgium)
of good figurine manufacturers and also references to rule
books for the Napoleonic period.
I am also interested in rules contained on the net or in files at
other sites, if they exist!
I anybody can help me, please reply to ..!mcvax!prlb2!lln-cs!gf
#! rnews 1656
Path: alberta!mnetor!uunet!mcvax!nikhefk!frankg
From: frankg@nikhefk.UUCP (Frank Geerling)
Newsgroups: comp.sys.atari.st
Subject: Re: the perfect ram disk
Keywords: ramdisk, resizeable, reset-survivable
Message-ID: <294@nikhefk.UUCP>
Date: 9 Dec 87 19:53:23 GMT
References: <427@dukempd.UUCP>
Reply-To: frankg@nikhefk.UUCP (Frank Geerling)
Organization: Nikhef-K, Amsterdam (the Netherlands).
Lines: 42

In article <427@dukempd.UUCP> gpm@dukempd.UUCP (Guy Metcalfe) writes:
>I have Mike's Ramdisk v. .95, and like the idea of what it's trying to do.
>It has a dialogue box as if it were resizable, but it's very buggy.  Could
>someone send me a later version that works like it's dialogue implies it
>should.  What I would like best of all is an eternal ram disk that I can
>size up and down as I see fit, but which sizes down without letting me 
>destroy any data I may have on the disk.  If anybody has and would send me
>or knows where I could get such a beast, I would be grateful.  Thanks.
>-- 
>	Guy Metcalfe                            gpm@dukempd.uucp  


Please send it to me too, I also have Mike's Ramdisk and the resize doesn't
work it doesn't return allocated memory when you resize to a smaller amount
of memory.

Thanx in advance


			   Frank Geerling
			(frankg@nikhefk.uucp)


Usenet:		{seismo, philabs, decvax}!mcvax!frankg@nikhefk

Normal mail:	Frank Geerling
		NIKHEF-K (DIGEL)
		Postbus 4395
		1009 AJ Amsterdam
		The Netherlands

			   Frank Geerling
			(frankg@nikhefk.uucp)


Usenet:		{seismo, philabs, decvax}!mcvax!frankg@nikhefk

Normal mail:	Frank Geerling
		NIKHEF-K (PIMU)
		Postbus 4395
		1009 AJ Amsterdam
		The Netherlands
#! rnews 2666
Path: alberta!mnetor!uunet!mcvax!prlb2!kulcs!luc
From: luc@kulcs.UUCP (Luc Van Braekel)
Newsgroups: comp.lang.pascal
Subject: Re: self-replicating programs?
Summary: here is a self-replicating pascal program
Message-ID: <1070@kulcs.UUCP>
Date: 9 Dec 87 08:31:27 GMT
References: <1400@tulum.swatsun.UUCP>
Organization: Kath.Univ.Leuven, Comp. Sc., Belgium
Lines: 37

In article <1400@tulum.swatsun.UUCP>, hirai@swatsun (Eiji "A.G." Hirai) writes:
> 	In our recent ACM programming contest (regionals), one of the
> problems was to write a self-replicating program.  That is, we had to
> write a program whose output was itself, the source code.  No alterations
> of the original code during execution was allowed (I think).
> 	Does anyone have any code for this problem?  We have one but
> it looks inelegant.  I've also see bery bery short Prolog code for this.
> Help, we are looking for good codes to study!  And yes, the contest is
> over (we ain't cheating).

Here is a self-replicating Pascal program I wrote a few years ago.
The program looks dirty but it works !

program self (output);                                     
var i,j: integer;                                          
    a: array[1..8] of packed array[1..59] of char; begin   
  a[1] := 'program self (output);                                     ';
  a[2] := 'var i,j: integer;                                          ';
  a[3] := '    a: array[1..8] of packed array[1..59] of char; begin   ';
  a[4] := 'for i := 1 to 3 do writeln(a[i]);                          ';
  a[5] := 'for i := 1 to 8 do begin write(''  a['',i:0,''] := '',chr(39));';
  a[6] := 'for j := 1 to 59 do begin write(a[i][j]);if a[i][j]=chr(39)';
  a[7] := 'then write(a[i][j]) end; writeln(chr(39),'';'') end;         ';
  a[8] := 'for i := 4 to 8 do writeln(a[i]) end.                      ';
for i := 1 to 3 do writeln(a[i]);                          
for i := 1 to 8 do begin write('  a[',i:0,'] := ',chr(39));
for j := 1 to 59 do begin write(a[i][j]);if a[i][j]=chr(39)
then write(a[i][j]) end; writeln(chr(39),';') end;         
for i := 4 to 8 do writeln(a[i]) end.                      

+-----------------------------------+------------------------------------+
| Name   : Luc Van Braekel          |  Katholieke Universiteit Leuven    |
| UUCP   : luc@kulcs.UUCP           |  Department of Computer Science    |
| BITNET : luc@blekul60.bitnet      |  Celestijnenlaan 200 A             |
| Phone  : +(32) 16 20 0656 x3563   |  B-3030 Leuven (Heverlee)          |
| Telex  : 23674 kuleuv b           |  Belgium                           |
+-----------------------------------+------------------------------------+
#! rnews 1678
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!zu
From: zu@ethz.UUCP (Urs Zurbuchen)
Newsgroups: comp.sys.ibm.pc
Subject: Re: Oooh Yeccheo. How Does This One Really Work?!?
Message-ID: <264@bernina.UUCP>
Date: 9 Dec 87 12:16:51 GMT
References: <164300022@uiucdcsb> <412@wa3wbu.UUCP> <13091@beta.UUCP> <1269@phoenix.Princeton.EDU>
Reply-To: zu@bernina.UUCP (Urs Zurbuchen)
Organization: ETH Zuerich, CS Department, Switzerland
Lines: 41

In article <1269@phoenix.Princeton.EDU> rjchen@phoenix.Princeton.EDU (Raymond Juimong Chen) writes:
>In article <13091@beta.UUCP> it was written:
>What you'd probably want is something like
>
>AUTOEXEC.BAT:
>  doit
>
>DOIT.BAT:
>  copy \autoexec.ddd \autoexec.bat
>  del \autoexec.ddd
>  do other stuff
>  reboot.
>
>AUTOEXEC.DDD:
>  same as before

You could the same thing without changing your AUTOEXEC.BAT. With the solution
presented above you will execute the same second version of AUTOEXEC.BAT each
time you reboot your machine (perhaps that's really what you want, but my
imagination doesn't go that far. If so, just disregard this article).

My solution: In the startup file you include the following:

if exist <filename_like_gaga.gag_or_whatever_you_want_to_call_it> goto second
<here included all the stuff you want executed when booted for the first time>
echo gaga > <filename_like_gaga.gag_or_whatever_you_want_to_call_it>
:second
<now follows the rest of the story (i.e. your autoexec.ddd)>

That's it. If you want to toggle between the two boot modes just add a line
like:

del <filename_like_gaga.gag_or_whatever_you_want_to_call_it>


		I hope this will help anybody :-)

			...urs


UUCP: ...seismo!mcvax!cernvax!ethz!zu
#! rnews 420
Path: alberta!mnetor!uunet!mcvax!inria!irisa!michaud
From: michaud@irisa.UUCP (Michaud Franck INSA BN205)
Newsgroups: comp.protocols.tcp-ip
Subject: virtual circuit
Keywords: tcp, socket
Message-ID: <202@irisa.UUCP>
Date: 9 Dec 87 20:05:21 GMT
Organization: IRISA, Rennes (Fr)
Lines: 7


	I'd like to have a good definition of :
- virtual circuit.

 	If you have a good definition, send me a mail.
		thanck you.
	franck
#! rnews 758
Path: alberta!mnetor!uunet!mcvax!enea!liuida!dat08
From: dat08@butterix.liu.se
Newsgroups: rec.games.frp
Subject: Re: New rules for AD&D
Message-ID: <686@butterix.liu.se>
Date: 9 Dec 87 03:53:09 GMT
References: <26788S9S@PSUVMA>
Organization: CIS Dept, Univ of Linkoping, Sweden
Lines: 11

In article <26788S9S@PSUVMA> S9S@PSUVMA.BITNET (Steven A. Schrader) writes:
>New Rules for TSR.   [...] Does anyone know when these rules will be out
>and how much they will cost?

According to Harold Johnson of TSR (at a local convention in Sweden) the new
rules will be out in 89.
 
BTW -- Any reactions about the new (again!) Gamma World? I haven't tried it
yet but I like their idea of one-table-system for everything.
 
Per Westling         dat08@majestix.liu.se
#! rnews 968
Path: alberta!mnetor!uunet!mcvax!enea!tut!tolsun!reini
From: reini@tolsun.oulu.fi (Jukka Reinikainen)
Newsgroups: comp.sys.ibm.pc,comp.sources.wanted
Subject: Hercules graphic characters
Keywords: hercules, text, MASM, MSC
Message-ID: <246@tolsun.oulu.fi>
Date: 8 Dec 87 15:32:30 GMT
Organization: University of Oulu, Finland
Lines: 14
Xref: alberta comp.sys.ibm.pc:9576 comp.sources.wanted:2717


 
Help wanted: how to create text in Hercules graphic mode?
 
I have a program written in MSC (parts coded with MASM) which does
quite nice things with grapichs but suffers lack of characters.
According to my knowledge the only way to get characters in Herc graphic
mode is to draw them on screen by lightning a set of pixels, right?
 
Somebody *must* have written a program which draws characters and
other symbols, so please help me.  C and/or ASM sources and/or ideas
will be *very* appreciated.
 
       >      Jukka Reinikainen         reini@tolsun.oulu.fi       <
#! rnews 935
Path: alberta!mnetor!uunet!mcvax!enea!liuida!andka
From: andka@smidefix.liu.se (Andreas K}gedal)
Newsgroups: rec.music.synth
Subject: Yamaha CLP - pf question
Keywords: Yamaha pf85 CLP300
Message-ID: <687@smidefix.liu.se>
Date: 9 Dec 87 15:36:48 GMT
Organization: CIS Dept, Univ of Linkoping, Sweden
Lines: 13


 I'm thinking of getting one of those new sampled pianos and would like
to get som info. From the net and from my own experience in my local
piano store, I've understood that the Yamaha Clavinova CLP 300 is
a pretty good choise. But I seem to remember a rumor about something
called Yamaha pf85 wich would be some kind of stageversion of the CLP 300.
Has anyone seen it, played it, compared it with the CLP 300? What are the
differences in price, sound, keyboard?

My local pianopusher here in Sweden hadn't heard of it. Is this because
it is so new or because it is a local phenomenon in the states?

    /Andreas Kagedal
#! rnews 2816
Path: alberta!mnetor!uunet!mcvax!enea!ttds!draken!sics!erikn
From: erikn@sics.se (Erik Nordmark)
Newsgroups: comp.unix.questions
Subject: Re: Need help with interprocess communications
Keywords: Pipes, Ptys, Buffering, I/O
Message-ID: <1639@sics.se>
Date: 9 Dec 87 21:21:43 GMT
References: <8117@steinmetz.steinmetz.UUCP>
Reply-To: erikn@sics.UUCP (Erik Nordmark)
Organization: Swedish Institute of Computer Science, Kista
Lines: 60

[[ I tried sending this as mail using different addresses, but failed! ]]

In article <8117@steinmetz.steinmetz.UUCP> you write:
>
>
>I have tried using "fcntl(fd,F_SETFL,FASYNC)" as well as setting up an
>interrupt handler to handle SIGIO signals (via "sigvec(2)"), and this works
>fine when I'm reading from the terminal, but does not seem to work at all
>when I try it from a pipe.
>
>
>Well, the SIGIO handler works fine to detect input from places like stdin, but
>never sees anything coming down the pipe.  When it gets invoked (generally
>by me banging on the <RETURN> key causing an interrupt from stdin), it 
>does find that there is data available in the pipe (as well as stdin) and
>has no problem reading it.
>
>
>Does anyone out there know how I can fix this problem?
>

>From looking at the BSD4.3 sources I found out the following:
When a tty is opened the associated process group is set to
that of the creator. The signals that the tty driver generate (e.g. caused
by ^C) are sent to this process group.

However, for sockets (a pipe is implemented as a pair of sockets in BSD4.3
and maybe elsewhere!) the associated process group is not set automatically.

So what you have to do is to set it before you can get ant SIGIO's! Use
   int pgrp = getpid();
   if (fcntl(fd, F_SETOWN, pgrp) == -1) {
	perror("fnctl");
	exit(1);
   }
or
       ioctl(fd, SIOCSPGRP, &pgrp)	/* note: & */

I think this should work even if pipes aren't implemented as a pair of
sockets, but I haven't tried any of it.

>Also:  Is there a way that I can determine WHICH file descriptor caused
>a SIGIO interrupt to be invoked, or by which I can set up a different
>interrupt handler for each descriptor?
>

See select(2). (Just a detail: select will tell you that there is data
to read if there actually is data to read or if the other end(s) have
closed the pipe. In the latter case read() will return an EOF - this
stuff caused me some trouble before I read the *real* documentation -
the OS source code!!)

-------------------------------------------------------------------------
Erik Nordmark
Swedish Institute of Computer Science, Box 1263, S-163 13  SPANGA, Sweden
Phone: +46 8 750 79 70	Ttx: 812 61 54 SICS S	Fax: +46 8 751 72 30

uucp:	erikn@sics.UUCP or {seismo,mcvax}!enea!sics!erikn
Domain: erikn@sics.se
-------------------------------------------------------------------------
#! rnews 2508
Path: alberta!mnetor!uunet!mcvax!enea!luth!d2c-czl
From: d2c-czl@sm.luth.se (Caj Zell)
Newsgroups: rec.music.misc
Subject: Re: Ace-Screamingest Guitar Solos on Record
Keywords: guitar, flames (regrettably)
Message-ID: <438@psi.luth.se>
Date: 9 Dec 87 14:51:22 GMT
References: <1725@s.cc.purdue.edu>
Reply-To: Caj Zell <d2c-czl@psi.luth.se>
Organization: University of Lulea, Sweden
Lines: 44
UUCP-Path: {uunet,mcvax}!enea!psi.luth.se!d2c-czl


In article <1725@s.cc.purdue.edu> rsk@s.cc.purdue.edu (Rich Kulawiec) writes:
>I thought I'd make up a very hasty list of what I
>thought were some of the best solos I've heard, and then ask y'all to
>contribute further.

Good idea,I love making up lists!

>Money (Pink Floyd), David Gilmour
>Cracked Actor (David Bowie), Earl Slick
>Don't Take Me Alive (Steely Dan), Jeff 'Skunk' Baxter?
>All Along the Watchtower Jimi Hendrix
>Aqualung (Jethro Tull), Martin Barre
>Highway 61, Johnny Winter

Agree,but how about these:

Muffin Man (Frank Zappa)              (I think FZ was the most underrated)
Son of Mr. Green Genes (Frank Zappa)  (guitarist there ever has been.But,)
Son of Orange County (Frank Zappa)    (he can't play anymore,too bad.    )
Push Comes To Show (Van Halen) Eddie Van Halen
Crossroads (Cream) Eric Clapton (The 2nd solo,of course)
Astronomy (Blue \yster Cult) Donald Roeser (on "Some Enchanted Evening")
Lazy (Deep Purple) Ritchie Blackmore
Fat Time (Miles Davis) Mike Stern

I know that when I get home I will kill myself for not adding more solos,
but these are the ones I can think of without looking at my records.
But maybe that's a good sign indicating that these are really my favourites.

I'd be very glad to see some reactions on the list.


      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      X                                                            X
      X                                                            X
      X   Caj Zell                 	 ________________________  X
      X   University of Lulea            :                      :  X
      X   Sweden                         : Jazz is not dead,    :  X
      X  				 : it just smells funny :  X
      X   mail: d2c-czl@psi.luth.se	 : -Frank Zappa         :  X
      X                                  :                      :  X
      X                                  -----------------------:  X
      X                                                            X
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#! rnews 1389
Path: alberta!mnetor!uunet!mcvax!enea!kuling!peterf
From: peterf@kuling.UUCP (Peter Fagerberg)
Newsgroups: comp.sys.mac
Subject: More memory for Mac+...?
Message-ID: <570@kuling.UUCP>
Date: 9 Dec 87 15:08:48 GMT
Organization: DoCS, Uppsala University, Sweden
Lines: 23


Hello. I've been wondering how to get a little extra memory for my
Macintosh Plus (needed in these days of Hypercard and Multifinder).

I was wondering if the normal brute-force method could be used;
  Just solder 1M memory chips on top of the existing one (piggyback)
  and attach CS (chip-select) and whatever else is needed from the
  adressbus to select the appropiate chip. I haven't really checked
  out the memorychips but maybe an inverter is needed for some signals.

  If I'm correctly informed there are 22 bit defining the adress on
  a MC68000, making it possible to have 4M of memory.

*If* this is possibly, would programs take advantage of it?

Well, maybe this is one of the most stupid questions asked to USENET
since it all began and if so - please forgive my ignorance...

                                 Peter-- 
==============================================================================
Peter Fagerberg             UUCP: {seismo,enea,mcvax,decwrl,...}!kuling!peterf
Applied Computer Science    ARPA: kuling!peterf@seismo.css.gov
Uppsala University          Analog: +46 18-128286 or 8-102927
#! rnews 1429
Path: alberta!mnetor!uunet!mcvax!botter!klipper!biep
From: biep@cs.vu.nl (J. A. "Biep" Durieux)
Newsgroups: soc.culture.jewish
Subject: Re: Jews in soc.culture.jewish?
Message-ID: <958@klipper.cs.vu.nl>
Date: 10 Dec 87 09:07:28 GMT
References: <4765@spool.wisc.edu> <2086@ucbcad.berkeley.edu> <2264@encore.UUCP> <5779@cisunx.UUCP> <2872@sphinx.uchicago.edu> <5861@cisunx.UUCP>
Reply-To: biep@cs.vu.nl (J. A. "Biep" Durieux)
Organization: VU Informatica, Amsterdam
Lines: 23

In article <5861@cisunx.UUCP> dlhst@unix.cis.pittsburgh.edu.UUCP,
	(David L. Heyman) writes:
>Don't kid yourself.  the Constitution is one thing but reality is
>another.  National Christmas tree, etc.
                    ^^^^^^^^^^^^^^

You are not trying to say that the US are German-mythological qua
religion, are you? :-)

No, but seriously: what does that tree have to do with Christianity?
(Or, what does the mean US Christmas have to do with it at all - but
that's another story)
Is Santa Claus Christian? The Easter Bunny and its eggs?

While I agree that the dates of these festivities originally come from
the church, the things which are generally celebrated have no origin in
Christian doctrine, and no one pretends so.

Sorry if I offended anyone by this - I am not commenting on those who do
use those times for prayer and as memorial days.
-- 
						Biep.  (biep@cs.vu.nl via mcvax)
	To be the question or not to be the question, that is.
#! rnews 1323
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!ivax!shb
From: shb@ivax.doc.ic.ac.uk (Simon Brock)
Newsgroups: comp.sys.mac
Subject: Re: uw/Multifinder?
Message-ID: <146@gould.doc.ic.ac.uk>
Date: 9 Dec 87 10:08:38 GMT
References: <174400085@uxc.cso.uiuc.edu>
Sender: news@doc.ic.ac.uk
Reply-To: shb@doc.ic.ac.uk (Simon Brock)
Organization: Dept. of Computing, Imperial College, London, UK.
Lines: 22

In article <174400085@uxc.cso.uiuc.edu> dorner@uxc.cso.uiuc.edu writes:
>
>I can't get uw to work under Multifinder.  ...
>I have an SE, and am running the latest system software (obviously).
>I'm using uw version 4.1.
>
>Is anybody successfully using uw under Multifinder?
Yes.  I'm using uw4.1 on an SE with System 4.1/Finder 6.0 and a beta version 
of MF (1.0b6).  (As an aside, we can't get System Tools 5.0 in the UK until 
early next year, unless you know different to me !)

UW runs but I do character losses at 9600 baud.  I can't work out why, and
I'm not convinced its UW's fault.  I wrote to John Bruner, the author, who
says other people were reporting the same problem.

				Simon.

Simon H Brock, Dept. of Computing, Imperial College, London SW7 2AZ
Tel	: 01 589 5111 x4993
BitNet	: shb@doc.ic.ac.uk (or shb%uk.ac.ic.doc@AC.UK)
UUCP	: shb@icdoc.uucp (...siesmo!mcvax!ukc!icdoc!shb)
JANET	: shb@uk.ac.ic.doc
#! rnews 1446
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!cam-cl!am
From: am@cl.cam.ac.uk (Alan Mycroft)
Newsgroups: comp.lang.c
Subject: Re: closing stdout
Keywords: Yes it IS a buggy library
Message-ID: <1115@jenny.cl.cam.ac.uk>
Date: 9 Dec 87 10:38:55 GMT
References: <442@cresswell.quintus.UUCP>
Reply-To: am@cl.cam.ac.uk (Alan Mycroft)
Organization: U of Cambridge Comp Lab, UK
Lines: 19

In article <442@cresswell.quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes:
>There's an old joke with the punch-line "We've already established what
>you are, madam.  Now we're just haggling over the price."
>		result = getchar();
>		errno = 0;
>		result = putc(result, stdin);
>		printf("result = %d, errno = %d\n", result, errno);
>The bug is that depending on where you are in the buffer, putc() MIGHT
>notice the mistake, but it usually won't.
>... the bug is a pretty fundamental one in the UNIX stdio implementation,
Richard, The bug is not in the slightest bit fundamental and could be fixed
in less than 1 day once and for all.  I have done it for a ANSI unix-like I/O
library:
Merely separate the _cnt field
of struct FILE into a _icnt and an _ocnt, change getc/putc to use _icnt/_ocnt.
Fix _filbuf/_flsbuf to use the right one, and to whinge when _icnt/_ocnt
goes -ve when you expect the other one to.
This for free also enables the library to police the "fflush/fseek between
change of direction for I/O" restriction and avoids chaos there.
#! rnews 1094
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!cam-cl!lg
From: lg@cl.cam.ac.uk (Li Gong)
Newsgroups: soc.culture.china
Subject: Change of Policy After Beginnig Signing Contrct ?
Message-ID: <1114@jenny.cl.cam.ac.uk>
Date: 9 Dec 87 10:37:41 GMT
Organization: U of Cambridge Comp Lab, UK
Lines: 19


   Is there anybody out there who has info about whether the Chinese
government has changed the policy regarding students aboard and how
it is changed, because from this April, all students sent by the
government are asked to sign contracts between him/her and his/her
institution.

   What do these contracts mean ?  Does this imply that those who came
out before this April (thus did not sign) then have a somewhat different
status (for example, can not be asked to go back to carry out a certain
contract) ?

   E-mail to me and I'll summurize OR post to the newsgroup.  I believe
there are other people who are also interested in this issue.

                                    Martin
-----------------------------------------------------------------------
lg@uk.ac.cam.cl
---------------
#! rnews 1315
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!cdwf
From: cdwf@root.co.uk (Clive D.W. Feather)
Newsgroups: rec.arts.sf-lovers
Subject: Eric Frank Russell - was Re: Misc questionings
Message-ID: <492@root44.co.uk>
Date: 9 Dec 87 15:03:01 GMT
References: <362@n8emr.UUCP> <2481@pbhyf.UUCP>
Reply-To: cdwf@root44.UUCP (Clive D.W. Feather)
Organization: Root Computers Ltd, London, England
Lines: 23

In article <2481@pbhyf.UUCP> djl@pbhyf.UUCP (Dave Lampe) writes:
>In article <362@n8emr.UUCP> lwv@n8emr.UUCP (Larry W. Virden) writes:
>>
>>5.	Finally, and perhaps most important.  I am looking for author and
>>anthology names for a short story (perhaps longer than thtat?) called I 
>>believe "MYOB".
>>The title stands for "Mind Your Own Business".
>
>The story is in a book called "The Great Explosion" by Eric Frank
>Russell in 1962. It is a collection of 3 or 4 stories telling
>of an attempt by Earth to recontact colonies that had been lost
>for a long time and that had evolved into unusual societies.

I have come across "The Great Explosion", but I also have this part of it
in a collection whose name I have forgotten, under the title "And then there
were none.". Great story. THE BEST AUTHOR EVER.

[Kill the line counter]
[Kill Mel]
[Keep Adric Dead]
[Kill the line counter]
[Kill Mel]
[Keep Adric Dead]
#! rnews 849
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!cdwf
From: cdwf@root.co.uk (Clive D.W. Feather)
Newsgroups: sci.misc
Subject: Re: Color
Message-ID: <493@root44.co.uk>
Date: 9 Dec 87 15:46:24 GMT
References: <162300002@uiucdcsb> <162300004@uiucdcsb>
Reply-To: cdwf@root44.UUCP (Clive D.W. Feather)
Organization: Root Computers Ltd, London, England
Lines: 13


Carl Kadie
Inductive Learning Group
University of Illinois at Urbana-Champaign
writes:
>ii.       There is "no such color" as purple! Mixing red and blue ink 
>          causes your eye to react in a way which is not reproducible 
>	  by any single wavelength of light.

The eye can see colours (for example, in afterimages) that cannot be
reproduced by any combination of wavelengths of light !
There was an article in Scientific American c.1970 entitled "Phosphenes"
that went into this.
#! rnews 795
Path: alberta!mnetor!uunet!mcvax!ukc!stc!datlog!dlhpedg!cl
From: cl@dlhpedg.co.uk (Charles Lambert)
Newsgroups: rec.games.empire,comp.sources.bugs
Subject: Re: conquest newsletter #3
Message-ID: <330@dlhpedg.co.uk>
Date: 9 Dec 87 14:27:16 GMT
References: <4886@mhuxd.UUCP> <6899@apple.UUCP>
Sender: news@dlhpedg.co.uk
Reply-To: cl@.co.uk (Charles Lambert)
Organization: FSG@Data Logic Ltd, Queens House, Greenhill Way, Harrow, London.
Lines: 8
Xref: alberta rec.games.empire:292 comp.sources.bugs:563

>In article <4886@mhuxd.UUCP>, smile@mhuxd.UUCP (Edward Barlow) writes:
>> 3) Still have not thought of a new name for the game.  Best so far is 
>> 	<Midguard> (need to check spelling).  Comments?

I've missed something here;  what was wrong with "conquest"?

---------------
Charlie Lambert
#! rnews 819
Path: alberta!mnetor!uunet!mcvax!weijers
From: weijers@cwi.nl (Eric Weijers)
Newsgroups: comp.lang.c++
Subject: another error in vector.h 1.3
Message-ID: <143@piring.cwi.nl>
Date: 10 Dec 87 13:27:06 GMT
Organization: CWI, Amsterdam
Lines: 22

In "vector.h 1.3" the following definition of the X(X&) constructor
is given:

vector(type).vector(type)(vector(type)& a)
{
	register i = a.sz;
	sz = a.sz; 			/* ADD THIS LINE */
	v = new type[i];
	register type* vv = &v[i];
	register type* av = &a.v[i];
	while (i--) *--vv = *--av;
}

You should add the indicated line in order to set the size of
the new vector. If that is not done you get "vector index out of
range" errors.

I found two other errors in this header file, I posted
earlier. If you are interested in them just send a reply (r).

Eric Weijers.
weijers@cwi.nl
#! rnews 830
Path: alberta!mnetor!uunet!mcvax!botter!klipper!biep
From: biep@cs.vu.nl (J. A. "Biep" Durieux)
Newsgroups: soc.culture.jewish
Subject: Anything positive about Jewish genes? (Was: Jewish genetic diseases)
Message-ID: <959@klipper.cs.vu.nl>
Date: 10 Dec 87 09:50:15 GMT
References: <4362@ig.ig.com> <4374@ig.ig.com>
Reply-To: biep@cs.vu.nl (J. A. "Biep" Durieux)
Organization: VU Informatica, Amsterdam
Lines: 12

I suppose the exclusive intermarriage among Jews must also have
spared them for many genetic diseases found among "the rest of us".
Does anyone have any data on that?

~~~
I understand nobody is interested in discussing the Dead Sea scrolls?

And nobody knows what the "Jewish region" in the far SE of Siberia is?
~~~
-- 
						Biep.  (biep@cs.vu.nl via mcvax)
	To be the question or not to be the question, that is.
#! rnews 960
Path: alberta!mnetor!uunet!mcvax!unido!ecrcvax!johng
From: johng@ecrcvax.UUCP (John Gregor)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Old SF Shows
Summary: Yet another show I can't remember the name of...
Message-ID: <463@ecrcvax.UUCP>
Date: 9 Dec 87 13:57:35 GMT
References: <04.Dec.87.11:29:45.GMT.ZZASSGL@UK.AC.UMRCC.CMS> <18784@linus.UUCP> <1046@bc-cis.UUCP> <19026@linus.UUCP>
Reply-To: johng@ecrcvax.UUCP (John Gregor)
Organization: ECRC, Munich 81, West Germany
Lines: 10

There was a show on sometime between the late 70's and early 80's (1 season).
And I can't remember the name.  It was actually two (or more) shows in one
with each sub-show taking a fraction of the time slot.  One part was a 
modern day dracula.  Another dealt with a society living underground.  They
couldn't come up to the surface without special filters due to dust/pollution
or some such.  Ring any bells?  It was NBC, I think.

				John

		johng%ecrcvax.UUCP@germany.CSNET
#! rnews 756
Path: alberta!mnetor!uunet!mcvax!botter!ark!maart
From: maart@cs.vu.nl (Maarten Litmaath)
Newsgroups: comp.bugs.4bsd
Subject: Re: 4.3BSD: using control-m in .exrc file
Summary: More ^V's are needed (won't the editor get enough of it ? :-)
Keywords: 4.3bsd  .exrc  control-m ^V
Message-ID: <1161@ark.cs.vu.nl>
Date: 10 Dec 87 18:44:07 GMT
References: <133@telesoft.UUCP>
Reply-To: maart@cs.vu.nl (Maarten Litmaath)
Organization: VU Informatica, Amsterdam
Lines: 8

Try preceding each ^M by *another* ^V (which in turn is escaped by ^V) !
Type:
	map , ^V^V^V^M^V^V^V^M^V^V^V^M

BTW, death to emacs !
-- 
Time flies like an arrow, fruit flies |Maarten Litmaath @ Free U Amsterdam:
like an orange.      (seen elsewhere) |maart@cs.vu.nl, mcvax!botter!ark!maart
#! rnews 1079
Path: alberta!mnetor!uunet!mcvax!inria!shapiro
From: shapiro@inria.UUCP (Marc Shapiro)
Newsgroups: comp.lang.c++
Subject: Re: Is there a "real" C++ compiler available?
Summary: There is a native C++, with debugger support
Message-ID: <589@inria.UUCP>
Date: 10 Dec 87 17:55:27 GMT
References: <2097@ucbcad.berkeley.edu>
Organization: INRIA, Rocquencourt. France
Lines: 14

In article <2097@ucbcad.berkeley.edu>, faustus@ic.Berkeley.EDU (Wayne A. Christopher) writes:
> [...].  Is there a C++
> compiler available now that will compile directly into asm
> code, instead of into C?  Alternatively, is there a good way
> to use dbx with C++ programs (i.e, using the c++ source instead
> of the c files)?  

The answer to both questions is yes.  The Free Software Foundation (you
know, the GNU Emacs people) will distribute (soon?) a modified version of
their C compiler which does C++.  Their debugger GDB (a dbx-lookalike) knows
how to handle it.

I haven't used either of these so I have no opinions to whether they are
in any way adequate.  Just passing useful information along.
#! rnews 1269
Path: alberta!mnetor!uunet!mcvax!enea!ttds!draken!zap
From: zap@draken.nada.kth.se (Svante Lindahl)
Newsgroups: comp.os.misc,comp.unix.wizards
Subject: Re: Command interfaces
Message-ID: <239@draken.nada.kth.se>
Date: 10 Dec 87 04:54:11 GMT
References: <1257@boulder.Colorado.EDU> <6840002@hpcllmv.HP.COM> <9555@mimsy.UUCP> <798@rocky.STANFORD.EDU> <432@cresswell.quintus.UUCP> <3161@psuvax1.psu.edu> <5565@oberon.USC.EDU>
Reply-To: zap@nada.kth.se (Svante Lindahl)
Organization: The Royal Inst. of Techn., Stockholm
Lines: 21
Xref: alberta comp.os.misc:340 comp.unix.wizards:5748

In article <5565@oberon.USC.EDU> blarson@skat.usc.edu (Bob Larson) writes:
#For example, how would you do the equivelent of this in unix:
#
#cmpf *>old>@@.(c,h) == -report ==.+cmpf -file

I can do it using either /bin/sh or csh, but it does require more
typing than in Primos. The test for existence of the file is not
necessary so these examples could be simplified at the expense of
risking a few error messages to the terminal.

C-shell:
% foreach i (`cd old; ls *.[ch]`)
> if (-r $i) diff -c old $i > $i.cmpf
> end

Bourne-shell:
$ for i in `cd old; ls *.[ch]` ; do
> if [ -r $i ] ; then diff -c old $i > $i.cmpf ; fi
> done

Svante Lindahl	    zap@nada.kth.se	uunet!nada.kth.se!zap
#! rnews 2030
Path: alberta!mnetor!uunet!mcvax!enea!ttds!draken!sics!lhe
From: lhe@sics.se (Lars-Henrik Eriksson)
Newsgroups: rec.arts.sf-lovers
Subject: Re: ST:TNG posters, GET OUT!
Keywords: Why
Message-ID: <1640@sics.se>
Date: 10 Dec 87 11:50:40 GMT
References: <5226@zen.berkeley.edu> <2011@charon.unm.edu>
Reply-To: lhe@sics.se (Lars-Henrik Eriksson)
Organization: Swedish Institute of Computer Science, Kista
Lines: 32

In article <2011@charon.unm.edu> cs3631cg@hydra.UUCP (Mark Giaquinto) writes:
>Two points here, interesting is a *very* relative term, what is
>interesting to you may not be to me and  visa versa.  Secondly I
>agree, that if you have a ST posting put it in the header, for people
>who don't want to read this stuff.
>
>>If there was no group for star trek fans to converse in without pestering
>>the rest of the sf world, I would just have to sit here and suffer, but
>>that's not the case.  Rec.arts.startrek is alive and well.  There is no
>>reason beyond sheer orneryness to post to sf-lovers as well.  Arguments that
>>star trek is sci-fi as well are pointless.  The simple fact is that there is
>>newsgroup for all of you to communicate in, and if the rest of us wanted to
>>listen, then we would.
>
>Well startrek is sf and I don't see how that arguement is pointless.

I have only the faintest interest in the ST stuff and I would prefer it
to be posted elsewhere, although I am not particularly bothered either.

I think the interesting question is: WHY DO WE HAVE DIFFERENT NEWSGROUPS??

I always thought it was to organize postings by subject and because different
people are interested in different things.

If you argue that ST postings could as well be made to rec.arts.sf-lovers
rather than to the special ST newsgroup, you could just as well argue
that we only need one newsgroup on the entire net: general.general.general.

Lars-Henrik Eriksson				Internet: lhe@sics.se
Swedish Institute of Computer Science		Phone (intn'l): +46 8 750 79 70
Box 1263					Telefon (nat'l): 08 - 750 79 70
S-164 28  KISTA
#! rnews 1007
Path: alberta!mnetor!uunet!mcvax!enea!tut!mk59200
From: mk59200@tut.fi (Kolkka Markku Olavi)
Newsgroups: comp.sources.bugs
Subject: Re: PC Nethack 2.2 bugs + help wanted linking
Summary: Inventory display problems
Message-ID: <522@fuksi.tut.fi>
Date: 10 Dec 87 13:32:40 GMT
References: <492@silver.bacs.indiana.edu> <5253@zen.berkeley.edu>
Reply-To: mk59200@fuksi.UUCP (Kolkka Markku Olavi)
Organization: Tampere University of Technology, Finland
Lines: 13

I have successfully compiled and linked Nethack using MSC 4.0
and it looks great, exept in a few points.  The inventory
display is spread all over the screen if there aren't enough
items to force a full-screen display.  It seems that after 
printing each line the cursor is moved one step down, but
it doesn't move left to the right place.

Also, when I teleport away from an unlit room, some quote characters
are left behind around the place I was in.

Markku Kolkka at Tampere University of Technology, Finland
mk59200@tut.fi
...mcvax!tut!mk59200
#! rnews 811
Path: alberta!mnetor!uunet!mcvax!enea!tut!tolsun!jto
From: jto@tolsun.oulu.fi (Jarkko Oikarinen)
Newsgroups: comp.sys.amiga,rec.games.misc
Subject: 'Real' controllers for Flight Simulator II
Keywords: Controllers, Flight Simulator
Message-ID: <247@tolsun.oulu.fi>
Date: 10 Dec 87 16:47:22 GMT
Organization: University of Oulu, Finland
Lines: 15
Xref: alberta comp.sys.amiga:11680 rec.games.misc:1151


  I am interested in finding any information about 'real' controllers
for Amiga's Flight Simulator II program. ie. similar controllers
that are used in real airplanes. 

Please mail your responses because I don't read this group regularly.

-- 
========================================
Jarkko Oikarinen   mcvax!tut!oulu!jarkko
                   jarkko@tolsun.oulu.fi
========================================
#! rnews 913
Path: alberta!mnetor!uunet!mcvax!inria!imag!pierre
From: pierre@imag.UUCP (Pierre LAFORGUE)
Newsgroups: comp.protocols.appletalk
Subject: NCSA TELNET bug with foreign MacSE or MacII keyboards
Message-ID: <2331@imag.UUCP>
Date: 10 Dec 87 08:08:19 GMT
Reply-To: pierre@imag.UUCP (Pierre LAFORGUE)
Organization: IMAG, University of Grenoble, France
Lines: 11

NCSA Telnet is really a must, but ...
on a Mac SE and a Mac II, NCSA Telnet 2.0 forces an american keyboard, in a
permanent manner (it remains after exiting telnet, until the next Macintosh
reboot). It is very painful when you use, for instance, a french keyboard:
not only you have to remember to type Q for A, and so on, but you cannot
type for example a Control-Z under telnet.
[On a Macintosh +, one do not loss its keyboard]

Is this bug fixed in the last version ?
-- 
Pierre Laforgue       pierre@imag.imag.fr      {uunet.uu.net|mcvax}!imag!pierre 
#! rnews 490
Path: alberta!mnetor!uunet!mcvax!diku!sergej
From: sergej@diku.UUCP (S|ren O. Jensen)
Newsgroups: sci.math.stat
Subject: The SAS package
Message-ID: <3570@diku.UUCP>
Date: 10 Dec 87 14:03:31 GMT
Organization: DIKU, U of Copenhagen, DK
Lines: 7


Is the SAS package available for UNIX-systems? We are currently using the
package on a old IBM machine but would like to change this machine to
something newer - preferably a UNIX-machine.
-- 
----
S|ren Oskar Jensen ({sergej,postmaster}@diku)
#! rnews 2766
Path: alberta!mnetor!uunet!mcvax!diku!iesd!jacob
From: jacob@iesd.uucp (Jacob stergaard B{kke)
Newsgroups: comp.arch
Subject: job search, Comp. eng.
Summary: I'm looking for a job
Keywords: Job, Computer. eng., Computer. sci., M.S.
Message-ID: <172@iesd.uucp>
Date: 10 Dec 87 12:00:17 GMT
Reply-To: jaaob@iesd.UUCP (Jacob \stergaard B{kke)
Organization: Dept. of Comp. Sci., Aalborg University, Denmark (student)
Lines: 68

I'm looking for a job in Computer Engineering to begin around July
1988. I'm getting my Master of Science in Computer Engineering June
1988 and at present holding a degree equal to BS in Electronic
Engineering. My BS studies have included:
	
	Computer hardware (hands-on knowledge with mc68k),
	Analog electronic 
	Control engineering (analog and digital control)

My MS studies have included:

	Software development (man-machine interface, what people want
			      from programs) 
	Compiler construction (an expertsystem shell) 
	Program environment (for CCS programming) 
	Distributed operating systems (in UNIX)
 	Compiler mapping object-oriented language on parallel computers

Furthermore I do have experience in conventional programming (PASCAL,
C, postscript, UNIX (awk, shell-scripts(C-shell) and yacc/lex) (and Basic)),
functional programming (LISP and ML) and logical programming (Prolog)
and knowledge about object-oriented programming. And I have also attended 
courses in VLSI design, databases, etc. I have been working with CDC under 
NOS/Telex, VAX 11/750 under Ultrix, SUN 3 under Sun OS 4.3 (UNIX), MacIntosh 
(LISA) under Finder and IBM S36 under IBM property operating system.  

My spoken English is excellent and my written English is satisfactory,
good knowledge of the Scandinavian languages (Danish (of course),
Swedish and Norwegian), some speaking and reading knowledge of German
and limited knowledge of French and Spanish (and Latin). 

I have 5 years experience in group project work in engineering and
computer scinence areas, broad social interest, good health.

My interest include computer hardware and software, operating system
design, expertsystems, distributed, concurrency and teaching.

I'm open on location (outside Denmark) but I have relatives or other
reasons to be especially intereted in:

	Canada (British Colombia or Toronto)
	USA (New England or Pacific Coast)
	Pacific (New Zealand or Oceania)
	Thailand
	Scotland (Highlands)

I'll look forward to any reponds.

		Yours sincerely
			
			Jacob Baekke, Denmark

For further information:

Reply to:     	jacob@iesd.uucp, {...}!mcvax!diku!iesd!jacob  or
		 
at Univ:	Jacob Baekke 
		S9D (in spring S10)
		Strandvejen 19
		AUC
		DK--9000 Aalborg
		Denmark

private:	Jacob Baekke
		Davids Alle 48
		DK--9000 Aalborg
		Denmark
		Tel. 45-(0)8102673
#! rnews 867
Path: alberta!mnetor!uunet!mcvax!diku!dde!jk
From: jk@dde.uucp (Jens Kjerte)
Newsgroups: comp.sources.wanted
Subject: Re: Wanted: Microemacs part 8
Message-ID: <281@Aragorn.dde.uucp>
Date: 10 Dec 87 09:27:24 GMT
References: <166@iesd.uucp>
Reply-To: jk@dde.uucp (Jens Kjerte)
Organization: Dansk Data Elektronik A/S, Herlev, Denmark
Lines: 15

In article <166@iesd.uucp> torbennr@neumann.UUCP (Torben N. Rasmussen) writes:
>
>Could someone please send me part 8 of the sources for Microemacs.
>

Me too!

It seems as if part8 never reached Denmark.

-- 

+---------------------------------------------------------------------------+
|   Jens Kjerte  @ Dansk Data Elektronik A/S, Systems Software Department   |
|   E-mail:      ..!uunet!mcvax!diku!dde!jk  or  jk@dde.uucp                |
+---------------------------------------------------------------------------+
#! rnews 512
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!solaris!wyle
From: wyle@solaris.ifi.ethz.ch@relay.cs.net (Mitchell Wyle)
Newsgroups: comp.lang.modula2
Subject: modula-2 pretty-printer
Keywords: pretty-printer
Message-ID: <195@solaris.ifi.ethz.ch@relay.cs.net>
Date: 9 Dec 87 21:56:57 GMT
Organization: SOT sun cluster, ETH Zuerich
Lines: 7

Did anyone ever get the m2pp program to work on Sun Modula-2?

Does anyone have a different Modula-2 pretty-printer (perhaps better)?

Thanks,

Mitch Wyle  (wyle@ethz.uucp)
#! rnews 1762
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!zu
From: zu@ethz.UUCP (Urs Zurbuchen)
Newsgroups: comp.emacs
Subject: Re: Has uemacs 3.9 solved the file save bug?
Message-ID: <265@bernina.UUCP>
Date: 10 Dec 87 07:21:02 GMT
References: <3056@pegasus.UUCP>
Reply-To: zu@bernina.UUCP (Urs Zurbuchen)
Organization: ETH Zuerich, CS Department, Switzerland
Lines: 30

In article <3056@pegasus.UUCP> avi@pegasus.UUCP (XMPE40000-Avi E. Gross;LZ 3C-314;6241) writes:
>
>I haven't compiled the new micro emacs since I have a MSC compiler, which is
>not fully supported.

This is simply NOT TRUE. I am also working with MSC (version 4.0) and had only
one minor problem when I compiled MicroEmacs 3.9e (the latest version which
was posted on Usenet). This problem relates to the Subshell spawning. But if
you know just a little bit of C, there is no problem to fix it (add a routine
specific to MSC). Some time ago, there was even a posting in comp.sources.bugs
describing all the necessary steps to do that.

>I have been having a very annoying problem with the
>older version, and am wondering if it has been fixed, or if someone has a
>work around. I am used to saving my files regularly with ^X^S, and then
>sometimes quiting with ^X^C. Unfortunately, uemacs will quit before
>completing the writing of the file, leaving me with only a small piece of
>the file. 

I am sure you enable breaking with ^C (either in config.sys or in autoexec.bat)
Turn this off, and all your problems have gone :-)
I know this is not the solution to this problem we all want to have. Perhaps
you can do it with signal(). If not you have to included a function of your own
which intercepts the break vector of MS-DOS.


		Have a nice day,
		      ...urs

UUCP: ...seismo!mcvax!cernvax!ethz!zu
#! rnews 2164
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!ceb
From: ceb@ethz.UUCP (Charles Buckley)
Newsgroups: comp.lang.lisp
Subject: Re: lisp environments summary -- program storage methods
Message-ID: <266@bernina.UUCP>
Date: 10 Dec 87 23:08:38 GMT
References: <613@umbc3.UMD.EDU> <325@siemens.UUCP> <323@spar.SPAR.SLB.COM> <329@siemens.UUCP> <13253@think.UUCP>
Organization: ETH Zuerich, Switzerland
Lines: 30
In-reply-to: barmar@think.COM's message of 9 Dec 87 03:18:01 GMT

Posting-Front-End: GNU Emacs 18.41.2 of Mon Sep 14 1987 on bernina (berkeley-unix)


In article <329@siemens.UUCP> steve@siemens.UUCP (Steve Clark) writes:
>  I maintain that the non-Interlisp systems are wrong, however.  It
>is clearly more advanced to treat a file as a database of definitions of
>functions, data, structures, etc. than to treat it as a string of characters
>that might have been typed at the keyboard.  However, since the rest of the
>world hasn't caught up yet, there are bound to be incompatibilities.

(Character) file storage is simply more flexible.  The form in which
information is stored must be the most flexible possible, or you lose
information.  The D-crate's pitching of conditionals is simply the
manifestation of this.

Proponents of restrictive protocols for information storage really ask
"the world" to change to fit the protocol model.  In science, models
change to fit the data, not the other way round (unless you cheat).
To me, browbeating eventual non-conformists into "catching up" by
labeling the a model as "advanced" is just a form of negative
motivation.  All the lousy places I have ever worked ran on negative
motivation, none of the good ones.  If your model *is* really worth
using, and you can communicate its value, you will not need such
tactics. 

Interactively defined functions?  Haven't typed one in *years* -
that's what scratch buffers are for (in case I want to change a
*character* or two, or later save it.).

Any mouse-based gadgets you can point to in Interlisp can be recreated
for a text editor working on correctly parsed Lisp code.  May  take
execution time, but if this is prohibitive, your function is probably
too large. 
#! rnews 2319
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!jha
From: jha@its63b.ed.ac.uk (J Andrews)
Newsgroups: rec.games.frp
Subject: Fantasy Philosophy
Keywords: wackafoo
Message-ID: <824@its63b.ed.ac.uk>
Date: 10 Dec 87 14:30:15 GMT
Reply-To: jha@lfcs.ed.ac.uk (J Andrews)
Organization: Univ. of Edinburgh Dept. of Computer Science
Lines: 38
God: Kate Bush

Least-favourite-subject: domain theory



     Those interested in the issues surrounding the mechanics and
philosophy of fantasy worlds should read Tolkien's (non-fiction)
essay "On Fairy-Stories".  It appears in the collections _Tree and
Leaf_ and _The Tolkien Reader_.

     One of the main ideas behind it is that the fantasy author or
story-teller is a "sub-creator", who tries to create a "secondary
belief" (rather than exactly a "willing suspension of disbelief")
in the reader.  In the fantasy that works, the reader should be
able to enter the world every time she picks up the book, and not
be aware of the world as being constructed by the author.  This
involves not only internal consistency, but a lack of gimmickry.

     For instance, in _Lord of the Rings_ I was never aware of
anything being in the world gratuitously.  (Others may differ! :-))
In _The Sword of Sha-Na-Na_ (sic)(sick?), on the other hand, I was
very aware of the Elfstones as being just a gimmick to get the
characters out of tight spots.  Sure it was internally consistent
(the Elfstones only had any effect in times of direst need for
their holders), but the hand of the author was clearly visible.

     Similarly, applying it to FRPG's, the magic system in AD&D is
certainly internally consistent (to the extent that it is described),
but just doesn't "work" for me.  Having MU's able to remember several
copies of a spell, but forgetting it when the last copy is cast, is
obviously a gimmick to limit the number of spells an MU can use.

     So I guess the moral of all this for FRPG or module designers
is that it's best to start out with a few basic assumptions and build
up your world from them by fairly believable steps, and if you can't
avoid ending up with something really hairy, then change one of your
assumptions rather than put in quick kludges.  (Gee, sounds like
software engineering! :=))

--Jamie.
  jha@uk.ac.ed.lfcs
"Switch off the mind and let the heart decide"
#! rnews 1818
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!db
From: db@its63b.ed.ac.uk (D Berry)
Newsgroups: comp.windows.x
Subject: Questions about implementing the X toolkit.
Message-ID: <825@its63b.ed.ac.uk>
Date: 10 Dec 87 17:28:06 GMT
Reply-To: db@lfcs.ed.ac.uk (Dave Berry)
Organization: LFCS, University of Edinburgh
Lines: 25

1)  Does anyone, preferably in the UK or Europe, have a copy of the new
X toolkit interface definition I can get by ftp?

2)  I'm considering implementing the X toolkit in Standard ML.  Are there any
constraints on what I should include or exclude?  The documentation mentions
implementation in different languages, but doesn't say much about what this
means.  Is the idea to provide the same functions, with the same names and
functionality, in each language?  What about languages that have automatic
storage management or automatic creation of objects, etc?  How far can I
deviate from the documentation & still use the name "X Toolkit"?

3)  Is the toolkit definition limited to the intrinsics, or are toolkits
expected to provide a standard class hierarchy?

4)  Is there any relation between the InterViews toolkit, the Xr, Sx &
DEC toolkits provided with X version 10R4, and the current X toolkit?

5)  If I go ahead, my first implementation will be a prototype, on top of X
version 10R4.  This is because someone else is working on porting X version 11
to Standard ML, and I want a simple windowing system I can use fairly quickly.
I hope the prototype will make implementing a full version reasonably
straightforward.  I will probably ignore the resource manager, since I'll get
that for free when the full Xlib is implemented.  I'll also ignore colour for
the time being, and only implement devices (widgets) I'm immediately interested
in.  Is there anything else I can obviously ignore?
#! rnews 1113
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!csw
From: csw@eagle.ukc.ac.uk (C.S.Welch)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Word processors are: [was Re: Pournelle's Problems]
Message-ID: <4065@eagle.ukc.ac.uk>
Date: 10 Dec 87 18:42:09 GMT
References: <1915@haddock.ISC.COM>
Reply-To: csw@ukc.ac.uk (C.S.Welch)
Organization: Computing Lab, University of Kent at Canterbury, UK.
Lines: 20
Summary:

Expires:

Sender:

Followup-To:



Some (possibly) timely information from a course entitled "The Art of
Communication for Engineers" that I'm on this week.

From one of the handouts :-

"Word processors: research has shown that when writers use pen and paper
 alone, their thoughts and information tend to have better planning and
 organisation. When using word processors alone, writers tend to plan
 on a more surface level, focussing on such aspects as word choice, sentence
 structure, and spelling"

It goes on to recommend starting with pen and paper and graduating to WP's
after the first draft has been written.

I trust that this may have been of some interest.

Chris Welch
Cranfield Institute
U.K.
#! rnews 1286
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!qmc-cs!pd
From: pd@cs.qmc.ac.uk (Paul Davison)
Newsgroups: rec.music.misc
Subject: Re: Another Day : by Peter Gabriel and Kate Bush
Message-ID: <352@sequent.cs.qmc.ac.uk>
Date: 10 Dec 87 12:58:25 GMT
References: <1987Dec8.154517.11828@gpu.utcs.toronto.edu>
Reply-To: pd@qmc.ac.uk (Paul Davison)
Organization: Computer Science Dept, Queen Mary College, University of London, UK.
Lines: 22


I've heard of this as well, but I have never found it. It's a pity
because I would really like to hear it, so if anyone has got it please
let me know as well!!

As an aside, Roy has a new album out early next year, probably January.

Paul.

PS Your internal newsgroup "tor.general" shouldn't have been on the
newsgroups line really, because nobody else has heard of it!
-- 
--
Paul Davison

UUCP:      pd@qmc-cs.uucp   or       ...seismo!mcvax!ukc!qmc-cs!pd
Internet:  pd@cs.qmc.ac.uk              Post:   Dept of Computer Science
JANET:     pd@uk.ac.qmc.cs                      Queen Mary College
Easylink:  19019285                             University of London
Telex:     893750 QMCUOL G                      Mile End Road
Fax:       +44 1 981 7517                       London E1 4NS
Voice:     +44 1 980 4811  x3950                England
#! rnews 786
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!craig
From: craig@comp.lancs.ac.uk (Craig)
Newsgroups: comp.sys.mac
Subject: MAC II Debuggers
Keywords: Development, MacII Debuggers
Message-ID: <457@dcl-csvax.comp.lancs.ac.uk>
Date: 9 Dec 87 13:36:01 GMT
References: <687@howtek.UUCP> <3456@husc6.harvard.edu>
Reply-To: craig@comp.lancs.ac.uk (Craig)
Organization: Department of Computing at Lancaster University, UK.
Lines: 11

Having found out that Macsbug 5.5  works well with the MAC II, 
how do I get a copy ?


Craig.

-- 
UUCP:	 ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster,
DARPA:	 craig%lancs.comp@ucl-cs          |	  Department of Computing,
JANET:	 craig@uk.ac.lancs.comp           |	  Bailrigg, Lancaster, UK.
Phone:	 +44 524 65201 Ext. 4476   	  |	  LA1 4YR
#! rnews 1070
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!strath-cs!jml
From: jml@cs.strath.ac.uk (Joseph McLean)
Newsgroups: sci.math
Subject: concatenation making primes
Message-ID: <756@stracs.cs.strath.ac.uk>
Date: 9 Dec 87 12:47:19 GMT
Reply-To: jml@cs.strath.ac.uk (Joseph McLean)
Organization: Comp. Sci. Dept., Strathclyde Univ., Scotland.
Lines: 14


tege@nada.kth.se replied by e-mail to my original posting which asked
if it is always possible to append digits to a positive number in order
to make a prime. Unfortunately, his address is one of those I can't
reach, and so I thought I'd kill two birds with one stone and post
another article.
  His argument is very simple, using the Prime Number Theorem to give
an approximation to the number of primes between x.10^n and
x.10^n+10^n-1 (which is the same problem I asked but translated to
mathematics) which shows that as n -> inf, this number of primes also
goes to infinity. A very simple argument that proves you can always
append digits to make any number into a prime. Great stuff.

      jml, the mad mathematician.
#! rnews 1275
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!miduet!misoft!tait
From: tait@gec-mi-at.co.uk (Philip Tait)
Newsgroups: comp.sys.ibm.pc,comp.sources.wanted
Subject: Re: Wanted: PC Checkbook Software
Summary: Continental Software's Home Accountant Plus
Keywords: Checkbook
Message-ID: <800@gec-mi-at.co.uk>
Date: 9 Dec 87 17:34:03 GMT
References: <985@mhuxh.UUCP>
Sender: news@gec-mi-at.co.uk
Reply-To: tait@gec-mi-at.co.uk (Philip Tait)
Organization: Marconi Instruments Ltd., St. Albans, UK
Lines: 15
Xref: alberta comp.sys.ibm.pc:9577 comp.sources.wanted:2719

In article <985@mhuxh.UUCP> vxb@mhuxh.UUCP (Vern Bradner) writes:
>
>Can anyone suggest a PC checkbook program?

I use Home Accountant Plus by Continental Software. The (legit.) version I use
was originally bundled with the Columbia MPC, so it had to be 'unprotected'
and altered to remove some hardware dependencies. (Incidentally, this made
it possible to compile it with QuickBasic - essential if you're impatient
like me!)

I've found it reasonably secure and well-featured.

| Philip J. Tait, Marconi Instruments Ltd. | St. Albans, Herts. AL4 0JN, U.K. |
| UUCP: ...mcvax!ukc!hrc63!miduet!tait	   | NRS : tait@gec-mi-at.co.uk	      |
| Voice: +44 727 36421 x4549 Telex: 297221 | Fax: +44 727 39447		      |
#! rnews 1059
Path: alberta!mnetor!uunet!mcvax!ukc!stc!idec!kbsc!yorick
From: yorick@kbsc.UUCP (Yorick Phoenix)
Newsgroups: comp.os.cpm,comp.sources.wanted
Subject: Kermit for MP/M
Message-ID: <888@kbsc.UUCP>
Date: 7 Dec 87 17:23:21 GMT
Organization: The Knowledge-Based Systems Centre, London, UK
Lines: 16
Xref: alberta comp.os.cpm:1030 comp.sources.wanted:2720

I have a friend who is trying to transfer some files off of an Micromation
MP/M system.

He has so far moved the standard "Generic" CP/M Kermit (slowly) to the MP/M
machine but it doesn't seem to work correctly.

Has anybody ever managed to get Kermit to work under M/PM?  Is there a simple
set of differences between C/PM kermit and M/PM Kermit.  We have the full
source code for C/PM Kermit.

	Yorick Phoenix
-- 
+------------------------------------------+ The Knowledge-Based Systems Center
|  yorick@kbsc.UUCP                        | 58 Northside, Clapham Common
|  ..mcvax!ukc!{idec,hrc63}!kbsc!yorick    | LONDON   SW4 9RZ   England
+------------------------------------------+ Voice: +44 1 350 1622
#! rnews 1946
Path: alberta!mnetor!uunet!mcvax!ukc!stc!root44!gwc
From: gwc@root.co.uk (Geoff Clare)
Newsgroups: comp.unix.questions
Subject: Re: rmail under HP-UX   (was Re: Using RMAIL under HPUX)
Summary: RISC architecture
Keywords: RISC, HP-UX
Message-ID: <495@root44.co.uk>
Date: 10 Dec 87 13:58:20 GMT
References: <8711251805.AA02481@mitre-bedford.ARPA> <3720010@hpsemc.UUCP> <3631@xanth.cs.odu.edu>
Reply-To: gwc@root44.UUCP (Geoff Clare)
Organization: Root Computers Ltd, London, England
Lines: 31

>In article <3720010@hpsemc.UUCP>, bd@hpsemc.UUCP (bob desinger) writes:
>> Here's how it is on our HP-UX system, a model 840:

>> drwxrwxr-x   2 bin      mail        1024 Nov 25 18:45 /usr/mail
>> -rwxr-sr-x   2 root     mail      137216 Oct  2 00:00 /bin/rmail

>Wow!  Why is rmail so BIG?  What does HP-UX rmail do that SMAIL 2.5
>doesn't?  Contrast the size of this rmail with various executables
>found on our 4.3 BSD system.

>-rwxr-xr-x  2 root     staff       35840 Nov  3 07:02 /bin/rmail (SMAIL 2.5)
>-rwxr-xr-x  1 root     staff      104448 Jun  5  1986 /lib/ccom (C compiler)
>-rwxr-xr-x  1 root     staff       97280 Dec  5 05:17 /usr/local/carmen (Lisp)
>-rwsr-xr-x  1 root     staff      100352 Apr  5  1987 /usr/lib/sendmail

The HP840 is a RISC architecture machine.  Reduced instruction set implies
more instructions required to do the same job than on a 'complex'
instruction set machine, hence the proportionately larger executable files.
Presumably your 4.3BSD machine is a VAX-alike (i.e. complex instruction set).

The only other file from your list which exists on our HP840 system is
the C compiler, and look at the size of that beast!!

-rwxrwxr-x  1 bin      bin       1097728 Mar  5  1987 /lib/ccom

(No, that's not a typo - it really is more than 1 Megabyte!)

Geoff Clare              gwc@root.co.uk            seismo!mcvax!ukc!root44!gwc
-- 

Geoff Clare              gwc@root.co.uk            seismo!mcvax!ukc!root44!gwc
#! rnews 1904
Path: alberta!mnetor!uunet!mcvax!ukc!stc!datlog!slxsys!jpp
From: jpp@slxsys.specialix.co.uk (John Pettitt)
Newsgroups: comp.unix.xenix
Subject: Re: 16-bit versus 32-bit memory performance
Summary: 32 bit cpu on 16 bit ram is a waste of money
Message-ID: <109@slxsys.specialix.co.uk>
Date: 10 Dec 87 14:17:13 GMT
References: <388@ddsw1.UUCP> <620@omen.UUCP> <435@spdcc.COM>
Reply-To: jpp@slxsys.UUCP (John Pettitt)
Organization: Specialix International, London, UK.
Lines: 29

This should perhaps belong in comp.arch

It would appear that most 8088,8086,186 and 286 systems are
limited by the number of cycles taken to execute instructions
(I.E the clock speed).  However the 80386 (at 16 and esp at 20 Mhz)
is limited by its memory bus bandwidth.  That is the memory subsystem
on most 286 boxes is fast enough have little or no real effect on
performance compared to a change in clock speed.   An 80386
however is largly limited by the rate that it can be 'fed' data
and instructions.   

16 Bit memory subsystems have a devestating effect on the 80386 
for 2 reasons.  Firstly 2 memory accesses are required rather than
one thus doubling the access time.  Secondly most 16 bit memory cards
are designed for 8 or 10 Mhz operation not 16 Mhz so a significant
number of wait states are needed when used with a 386.   It would
appear that a 'cache miss' on the Intel Inboard(tm) generates beteween
10 and 12 wait states thus making access to 16 bit ram slower than
from the original 286.

In conclustion - if you want a 32 bit CPU use 32 bit ram.  If you
just want the instruction set use the P9 (80388) - if it ever appears.

(This posting written on a Dell 386 with 6 MB of 0 wait static 32 bit ram)

-- 
John Pettitt - 144.5 MHz: G6KCQ, CIX: jpettitt,  Voice: +44 1 398 9422
UUCP:  ...uunet!mcvax!ukc!pyrltd!slxsys!jpp  (jpp@slxsys.specialix.co.uk)
Disclaimer: I don't even own a cat to share my views !
#! rnews 1704
Path: alberta!mnetor!uunet!mcvax!unido!iaoobelix!woerz
From: woerz@iaoobelix
Newsgroups: comp.unix.wizards
Subject: Re: Request for human interface design a - (nf)
Message-ID: <8300012@iaoobelix.UUCP>
Date: 3 Dec 87 01:35:00 GMT
References: <10559@brl-adm.UUCP>
Lines: 32
Nf-ID: #R:brl-adm:10559:iaoobelix:8300012:000:1331
Nf-From: iaoobelix!woerz    Dec  3 02:35:00 1987

> /***** iaoobelix:comp.unix.wiz / oberon!blarson /  5:40 pm  Nov 28, 1987*/
> In article <7995@steinmetz.steinmetz.UUCP> dawn!stpeters@steinmetz.UUCP (Dick St.Peters) writes:
> >(The VMS interface is not always so friendly to novices: name the file
> >"junk" instead of "junk.txt", and a novice may never figure out how to
> >read it.  As for expert interfaces, rename the expert's .emacs file to
> >sav.emacs and watch him/her try to recover.)
>
> I'm no VMS expert and I know a way to recover.  Use a gun to put a few
> bullets in the aproprate disk drive.  (When it is replaced and the
> backups restored, my .emacs reappears. :-)

And if you're out of luck, a backup has been done between the time
you changed your .emacs file and the shooting of the disk and you
will get your changed file. :-(

> --
> Bob Larson              Arpa: Blarson@Ecla.Usc.Edu
> Uucp: {sdcrdcf,cit-vax}!oberon!skat!blarson             blarson@skat.usc.edu
> Prime mailing list (requests):  info-prime-request%fns1@ecla.usc.edu
> /* ---------- */

------------------------------------------------------------------------------

Dieter Woerz
Fraunhofer Institut fuer Arbeitswirtschaft und Organisation
Abt. 453
Holzgartenstrasse 17
D-7000 Stuttgart 1
W-Germany

BITNET: iaoobel.uucp!woerz@unido.bitnet
UUCP:   ...{uunet!unido, pyramid}!iaoobel!woerz
#! rnews 1992
Path: alberta!mnetor!uunet!mcvax!unido!tub!actisb!federico
From: federico@actisb.UUCP (Federico Heinz)
Newsgroups: comp.sys.atari.st
Subject: Re: Hard disk boot???
Keywords: Hard disk, GEMBOOT
Message-ID: <122@actisb.UUCP>
Date: 8 Dec 87 19:34:12 GMT
References: <624@aucs.UUCP>
Reply-To: federico@actisb.UUCP (Federico Heinz)
Organization: Actis in Berlin GmbH, W. Germany
Lines: 39

[The line eater was sleeping again ...]

In article <624@aucs.UUCP> 870646c@aucs.UUCP (barry comer) writes:
>I have a few questions for anyone using a SH204 with a Mega ST. I have a Meag2
>with a SH204, I have being auto booting from the hard disk using HDB_V2.3, I
>used to be able to auto boot from the floppy when the CTRL,SHIFT, and ALT.
>keys were held down, well since I started using the Mega, the machine always
>boots from the hard disk with the keys down or up??????????????

I didn't know of the CTRL-SHIFT-ALT trick, but I had a problem similar
to yours: there was no way my Mega would boot from floppy, and that
turned out to be quite a problem when a desk accessory I had downloded
from somewhere was turned unusable because of line noise.  My "solution"
was not to boot from hard disk at all, which I now find better since it
allows me to choose different configurations (desk accesories and such)
depending on the job I'm going to do.

>I am also using GEMBOOT to overcome the 40 folder limit in TOS(has it been
>fixed with the new ROMS?).

I'm also interested on this question, and it has been already asked a couple
of times with no visible answer.  I've never used the old ROMs, so I don't
know what the infamous "40 folder limit" means. I've had more than 40 folders
on my hard disk and nothing happened.  Does this mean that the problem is
fixed? Or is it 40 folders DEEP?


                                        
					
					///////
				      //____ //
		Federico             //     //
				    // __  //
				   // / / //
				   ///////


UUCP: ...!mcvax!unido!tub!actisb
BIX:  fheinz
#! rnews 888
Path: alberta!mnetor!uunet!mcvax!varol
From: varol@cwi.nl (Varol Akman)
Newsgroups: sci.physics
Subject: Texts a la Feynman
Summary: I would like to read them
Message-ID: <144@piring.cwi.nl>
Date: 11 Dec 87 10:59:47 GMT
Organization: CWI, Amsterdam
Lines: 12

I've been re-reading recently Feynman's excellent volumes and enjoying
myself.  The question is:  Are there physics books of similar style?
One thing that I like about Feynman is that he tries to ``demystify''
stuff instead of giving cookbook formulas.  Since I do this as a
leisurely activity, the absence of too many formulas and long
mathematical analyses (at least in Vol. I) are also appreciated.
I'm especially interested in classical mechanics.  Philosophical
implications of physics laws such as causality, etc. are also interesting.

Send me individual replies and I'll post a summary to the net. Thanks!

-Varol Akman
#! rnews 1649
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!bath63!pes
From: pes@ux63.bath.ac.uk (Smee)
Newsgroups: rec.games.misc
Subject: Re: The Pawn help
Keywords: ** EXPLICIT SPOILERS **
Message-ID: <2011@bath63.ux63.bath.ac.uk>
Date: 9 Dec 87 11:24:10 GMT
References: <2884@cbmvax.UUCP> <2299@killer.UUCP> <2910@cbmvax.UUCP>
Reply-To: pes@ux63.bath.ac.uk (Smee)
Organization: AUCC c/o University of Bath
Lines: 22

In article <2910@cbmvax.UUCP> daveb@cbmvax.UUCP (Dave Berezowski) writes:
>
>I've been told that there is a bug in the game such that you must get to
>the pedestal asap else the blue key won't be there (this is what has happended
>to me)...

The story I've heard is that this is not a bug.  Rather (as warned in the
manual) the other characters you meet are also poking around, and can have
effects even while they are not in the same location as you.

In particular, as I've heard it, if the adventurer gets to the pedestal before
you do then he will take the key.  (And allegedly you then can recover it when
you kill him.)  I haven't tried this line of play yet, so can't vouch for it,
but it sounds plausible.

There's a cute bug in the ST version, though, to do with the pedestal.  If
you move the pedestal and then type 'take all' you end up carrying the pedestal,
a duplicate of which remains in place.  (If you just try to 'take pedestal',
you are told that it is too heavy to lift.)  I'm told that this results from
a bug in the relevant object definition table entry, so it might have propagated
to other versions.  (I'd doubt that the driving data undergoes as much analysis
as the executable code during porting to other machines.)
#! rnews 1317
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!pyr1.cs.ucl.ac.uk!awylie
From: awylie@pyr1.cs.ucl.ac.uk
Newsgroups: comp.sys.ibm.pc
Subject: Zorland/Datalight C INT86 problem
Message-ID: <39500003@pyr1.cs.ucl.ac.uk>
Date: 8 Dec 87 13:23:00 GMT
Lines: 24
Nf-ID: #N:pyr1.cs.ucl.ac.uk:39500003:000:954
Nf-From: pyr1.cs.ucl.ac.uk!awylie    Dec  8 13:23:00 1987


Hi,
   I have a problem with the Zorland C compiler, aka Datalight-C or
NorthWest-C which I wondered if any netlander had previously encountered
and solved.
   I have a program which works fine in small model but recently I had
to go to the data model (small code, large data) whereupon it hung my
XT clone. Tracing execution seems to indicate that the DOS software
interrupt routine INT86 may be the source of the trouble.
   Has anyone seen problems with INT86 in D or L model programs? The
prospect of DEBUGging the interface between C and assembler does not
appeal to me.
   BTW I have deliberately not given details of the program. I do not
       want to debug it on the net. Please e-mail me only if you have
       solid evidence of problems in the INT86 area.

      thanks for any help you can give,
           Andrew

Andrew Wylie
University of London Computer Centre, London, England

uucp:    awylie@uk.ac.ucl.cs
JANET:   andrew@ulcc.ncdlab
#! rnews 644
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!pyr1.cs.ucl.ac.uk!awylie
From: awylie@pyr1.cs.ucl.ac.uk
Newsgroups: comp.sys.ibm.pc
Subject: Re: Virus program warning
Message-ID: <39500004@pyr1.cs.ucl.ac.uk>
Date: 8 Dec 87 17:12:00 GMT
References: <6146@jade.BERKELEY.EDU>
Lines: 8
Nf-ID: #R:jade.BERKELEY.EDU:-614600:pyr1.cs.ucl.ac.uk:39500004:000:227
Nf-From: pyr1.cs.ucl.ac.uk!awylie    Dec  8 17:12:00 1987


Presumably it would be relatively easy to modify the virus program to
make it into an 'antibody' which would automatically overwrite the
virus on any infected floppy which was used on the PC.

Andrew Wylie

awylie@uk.ac.ucl.cs
#! rnews 541
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!pyr1.cs.ucl.ac.uk!awylie
From: awylie@pyr1.cs.ucl.ac.uk
Newsgroups: rec.games.hack
Subject: NetHack 2.2 part 18
Message-ID: <42700005@pyr1.cs.ucl.ac.uk>
Date: 10 Dec 87 09:51:00 GMT
Lines: 8
Nf-ID: #N:pyr1.cs.ucl.ac.uk:42700005:000:193
Nf-From: pyr1.cs.ucl.ac.uk!awylie    Dec 10 09:51:00 1987


People in the UK and Europe who need NetHack 2.2 part18 can get it by
sending me e-mail, preferably to my Janet address.

Andrew Wylie

Janet:   andrew@ulcc.ncdlab
uucp:    awylie@uk.ac.ucl.cs
#! rnews 892
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!smb!dave
From: dave@smb.co.uk (Dave Settle)
Newsgroups: comp.sources.wanted
Subject: B-tree routines required.
Keywords: b-tree index rmcobol
Message-ID: <18@oscar.smb.co.uk>
Date: 8 Dec 87 11:17:39 GMT
Organization: SMB Business Software, Mansfield, UK
Lines: 21

I'm looking for a set of routines which can handle B-trees, as part of
a program which I'm writing to recover RM-COBOL indexed files.

If anyone knows of any routines which might be helpful (or any hints about
how to go about it), I'd be very grateful to hear about them.

Please reply to me directly by mail, as I don't (yet) get this newsgroup
directly.

Thanks in advance,
		Dave Settle.
---

Dave Settle, 
	SMB Business Software, Thorn EMI Datasolve, High St, Mansfield, UK

UUCP:	dave@smb.co.uk
	...!mcvax!ukc!nott-cs!smb!dave	

		<--- This way to point of view --->
		
#! rnews 3785
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!sph
From: sph@eagle.ukc.ac.uk (S.P.Holmes)
Newsgroups: rec.games.misc,rec.games.frp,rec.games.board
Subject: Re: WARGAMING!
Message-ID: <4067@eagle.ukc.ac.uk>
Date: 11 Dec 87 10:24:28 GMT
References: <796@lln-cs.UUCP>
Reply-To: sph@ukc.ac.uk (S.P.Holmes)
Organization: Computing Lab, University of Kent at Canterbury, UK.
Lines: 76
Xref: alberta rec.games.misc:1153 rec.games.frp:1655 rec.games.board:544
Summary:

Expires:

Sender:

Followup-To:


In article <796@lln-cs.UUCP> gf@lln-cs.UUCP (Frank Grognet) writes:
>
>	I want to start wargaming but I don't know how!
>
>I won't be playing wargames on a board, but with 15mm or 25mm
>figurines.
>I would like to find addresses in Europe (especially Belgium)
>of good figurine manufacturers and also references to rule
>books for the Napoleonic period.

The best set which I've found are the Wargames Research Group 1685 - 1850
rules. Although the time period sounds a bit long these rules have the
following advantages (My opinions only).

- Wide ranges of troops covered (You can fight outside Europe)
- Wide range of weapons covered (Pikes for those Moscow Militiamen etc)
- Simple solution for combat - This is what I really like, There@s
      No nonsense evaluating every 20th of a casualty, or evaluating
      grenadier companies firing separate from the rest of their battallion.
- All weapons are handled simply. Just a different entry in one table.
- Movement is alternate, not simultaneous, things move much quicker.
- Hand to hand combat is decided very quickly, (Just like reality).
- Morale tests are also quite fast to do, and give specific tests for
  different situations. (This avoids an old problem where eg Horsemen test
      morale before charging, Test fails horribly, Horsemen rout off the 
      field.) To make you go away, the opponent actually has to do
      something.
- European regulars have "National characteristics".
    ie British are disciplined infantry and rash cavalry.
       Russians are stoical Infantry (Won@t retreat easily)
       Spanish are easily panicked
       Highlanders charge aggressively
       French columns are impetuous and frighten the enemy.
       Austrian and Prussian cavalry are Bold
       Austrian, Spanish and Dutch Generals are Cautious.

Together with these rules I would recommend the army lists published by
Table Top Games.

These cover the European armies for most of the big campaigns of
1805-1815 and ensure a balanced army is selected (Although the 
1000 point armies don@t always work too well.
eg My russians need 12 Gun Artillery Batteries (6 pieces on the table)
   This leaves me few points for infantry or cavalry
   (In practice a Russian 1000 point army has two of Inf, Cav & Art)

The lists also help to enhance the National Flavour of an army
ie British get few Cavalry, but some veteran Infantry.
   French after 1812 have Raw Infantry or Guards.
   Austrians Have Very Large numbers Of infantry.

I can summarise some of the +/- points of each of the armies I've seen
if you mail me.

I'd recommend 15mm scale troops (Much cheaper and more transportable)
    They'll fit on your table too.

I actually use the 6mm scale which is cheaper, lighter and requires
about 60cm x 100 cm for a medium game.
However the Job of painting, mounting and moving the little guys is
much harder.


>I am also interested in rules contained on the net or in files at
>other sites, if they exist!

Copyright makes this difficult.

>I anybody can help me, please reply to ..!mcvax!prlb2!lln-cs!gf


-- 
        Steve Holmes         | Noel Coward : "Would you object if I smoked"
        Room 109a            |
E-mail  sph                  | Sarah Bernhardt : "I wouldn't care if you burned"
Phone   ext 7681 or 3682     |
#! rnews 1737
Path: alberta!mnetor!uunet!mcvax!ukc!pyrltd!lucifer!rob
From: rob@lucifer.UUCP ( 237)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Origin of Hithchiker's Guide
Message-ID: <6@lucifer.UUCP>
Date: 11 Dec 87 10:03:57 GMT
References: <909WDMCU@CUNYVM> <1240001@otter.HP.COM>
Reply-To: rob@lucifer.UUCP (Rob Clive - 237)
Organization: Lucas Micos, Phoenix Way, Cirencester, Glos, UK  (0285 67981)
Lines: 24

In article <1240001@otter.HP.COM> kers@otter.HP.COM (Christopher Dollin) writes:
>> I have recently been told be someone that The Hitchhiker's Guide to the
>> Galaxy originated as a radio program rather than as a book.
>
>The radio series "The Hitch-hikers Guide to the Galaxy" was broadcast in 
>Britain for the first time between 1976..1979 (sorry for the range but all I

It was 1978.  Episode 1 of the first series was a pilot production for the
whole thing and as such is slightly different in flavour to the others.  The 
first series (6 episodes) covered the ground of the TV version and books 1
and 2.  Then came the Christmas (1978) show to make a link to the second
series which was broadcast in 1979 and consisted of 5 episodes.

> For my money, the show (and scripts) are MUCH funnier than the books.

True.  The radio shows left much more to the imagination with the assistance
of some very good sound effects.  I thought the TV series spoiled it.  For 
instance at the end of the first radio series you hear the song 'What a
Wonderful World' amid the sound of burning trees on prehistoric Earth; can't
you just imagine it?

-----------------------------------------------------------------------------
Rob Clive.				     UUCP:  ...!mcvax!ukc!lucifer!rob
Lucas Micos Ltd., Cirencester, GL7 1QG, UK.		      Now read on....
#! rnews 1160
Path: alberta!mnetor!uunet!mcvax!botter!tjalk!rblieva
From: rblieva@cs.vu.nl (Roemer Lievaart)
Newsgroups: rec.music.classical
Subject: Re: The range of the male voice.
Message-ID: <918@tjalk.cs.vu.nl>
Date: 11 Dec 87 13:06:10 GMT
References: <1280@phoenix.Princeton.EDU> <1597@faline.bellcore.com> <3999@pucc.Princeton.EDU>
Reply-To: rblieva@cs.vu.nl (Roemer B. Lievaart)
Organization: VU Informatica, Amsterdam
Lines: 15

Q2816@pucc.Princeton.EDU (Roger Lustig) typed:
+---------------------------------------
| Choral music is generally written for a fairly restricted range (note
| the two qualifications in that sentence) in order to allow choirs, not
| individuals, to sing it.  There are choral high Bb's (in Singet dem
| Herrn, for instance) and even C's for the sopranos (end of Kodaly's
| Laudes Organi), and the incredible stuff Beethoven asked for in the
| Missa Solemnis and Ninth.  But they are the exception, and are generally
| intended to sound like an exception.
+---------------------------------------

We're playing Mahler's 2nd, and so I noticed last wednesday that
the Basses have to sing as deep as (at least ?) the low B.

	-- Roemer.
#! rnews 871
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: scanf()
Message-ID: <1782@botter.cs.vu.nl>
Date: 11 Dec 87 14:40:54 GMT
References: <782@louie.udel.EDU>
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 10

In article <782@louie.udel.EDU> KIMMEL%ecs.umass.edu@relay.cs.net (Matt Kimmel) writes:
>I just got Minix v1.2, and I like it a lot.  However, when I try to
>compile a C program that calls scanf(), I get a message to the effect
>of " _scanf not resolved".  Am I missing something?  Or is there no scanf()

There is a scanf in libsrc.a, but it is not included in libc.a.  You have to
compile it yourself with cc -LIB -c scanf.c and put in in the library.
It was omitted from libc.a because there was no room on that diskette!

Andy Tanenbaum (ast@cs.vu.nl)
#! rnews 1614
Path: alberta!mnetor!uunet!mcvax!guido
From: guido@cwi.nl (Guido van Rossum)
Newsgroups: comp.windows.x
Subject: X and different IPC protocols
Summary: Surely feasible; but how useful?
Message-ID: <145@piring.cwi.nl>
Date: 11 Dec 87 22:15:13 GMT
Reply-To: guido@cwi.nl (Guido van Rossum)
Organization: "The Amoeba Project", CWI, Amsterdam
Lines: 22

Although X as distributed uses TCP/IP to connect clients and server, it
is possible use other network protocols by relatively small changes to
the lowest levels of library and server.  We have almost gotten the
server half of such a set-up running using Amoeba (a distributed
operating system with its own, capability-based RPC mechanism).
The library half should be working as soon as we solve problems with the
C compiler.

The question is, how much does this buy us?  Since Amoeba is not Unix, X
clients requiring advanced Unix features won't run under vanilla Amoeba.
What percentage of the available client applications will be convertable
to a different operating system, where, e.g., one will have <stdio.h>
available, but not select(2)?  I would assume that there will be VMS
support for X, so that one might expect clients to be OS-independent,
but then again, you can never know what hacks a performance-driven
application programmer may use... (including VAX assembly :-)

Can anybody comment on this?  It would also be interesting to know if
third-party software for X would come binary or source.
--
Guido van Rossum, Centre for Mathematics and Computer Science (CWI), Amsterdam
guido@cwi.nl or mcvax!guido or (from ARPAnet) guido%cwi.nl@uunet.uu.net
#! rnews 1102
Path: alberta!mnetor!uunet!mcvax!prlb2!kulcs!wim
From: wim@kulcs.UUCP (Wim De Bisschop)
Newsgroups: comp.lang.ada
Subject: Ada-interface to Termcap(3)
Keywords: termcap
Message-ID: <1075@kulcs.UUCP>
Date: 11 Dec 87 10:56:28 GMT
Organization: Kath.Univ.Leuven, Comp. Sc., Belgium
Lines: 15

Has anyone an Ada interface to the C routines from the termcap
library? We would have a package for terminal independent 
screen oriented output in Ada. The most natural way to do this,
is to make use of the C-routines of termcap. 
We were wondering whether someone else has already defined an
interface package, preferably for a Verdix 5.41 compiler to
run under 4.3BSD.


+----------------------------------------------------------------------+
| Name:   Wim De Bisschop           | Katholieke Universiteit Leuven   |
| E-mail: wim@kulcs.UUCP  or        | Department of Computer Science   |
|         ...!mcvax!prlb2!kulcs!wim | Celestijnenlaan 200 A            |
| Phone:  +(32) 16-200656 x3596     | B-3030 Leuven (Heverlee), Belgium|
+----------------------------------------------------------------------+
#! rnews 835
Path: alberta!mnetor!uunet!mcvax!enea!erix!erialfa!afr
From: afr@erialfa.UUCP (Anders Fredrikson ZX/DRG)
Newsgroups: rec.music.misc
Subject: Re: Ace-Screamingest Guitar Solos on Record
Message-ID: <172@erialfa.UUCP>
Date: 10 Dec 87 12:31:18 GMT
References: <1725@s.cc.purdue.edu> <2455@sfsup.UUCP>
Reply-To: afr@erialfa.UUCP (Anders Fredrikson ZX/DRG)
Organization: Ericsson Information Systems AB, Kista, Stockholm, SWEDEN
Lines: 17

In article <2455@sfsup.UUCP> mingus@sfsup.UUCP (Damballah Wedo) writes:
>> rsk@s.cc.purdue.edu.UUCP (in <1725@s.cc.purdue.edu>):
>> [ lists some excellent guitar solos ]
>
>Sure, I'll play that game:
>
>......
>---cut
>She'a a Woman (Jeff Beck, BLOW BY BLOW)
This tune is even better on the "Jeff Beck & Jan Hammer group LIVE"
>---Cut
>.....
You might also add
Europa (Santana, MOONFLOWER)


/Anders
#! rnews 1046
Path: alberta!mnetor!uunet!mcvax!enea!pvab!robert
From: robert@pvab.UUCP (Robert Claeson)
Newsgroups: comp.lang.c
Subject: Re: Making re-#includes harmless--a simple solution?
Message-ID: <339@pvab.UUCP>
Date: 11 Dec 87 10:23:09 GMT
References: <13395@think.UUCP>
Reply-To: robert@pvab.UUCP (Robert Claeson)
Organization: Statskonsult Programvaruhuset AB, Sweden
Lines: 16

In article <13395@think.UUCP> rlk@THINK.COM writes:

>1)  The same file may have multiple names (symlinks and/or hard
>links).  How do you KNOW whether a file has been included?  The only
>way is by defining an attribute that only that file will have.  The
>easiest way to do this (aside from checking device/inumbers, which is
>not portable and may not work in some bizarre cases, or other system
>dependent hacks) is to #define a unique name.

How can you be sure that the name you choose is unique, especially if
you use links or symlinks?

-- 
Robert Claeson, System Administrator, PVAB, Box 4040, S-171 04 Solna, Sweden
eunet: robert@pvab
uucp:  sun!enea!pvab!robert
#! rnews 1812
Path: alberta!mnetor!uunet!mcvax!enea!ttds!draken!sics!lhe
From: lhe@sics.se (Lars-Henrik Eriksson)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Houston SF Opera
Message-ID: <1642@sics.se>
Date: 11 Dec 87 10:31:40 GMT
References: <8168@ism780c.UUCP>
Reply-To: lhe@sics.se (Lars-Henrik Eriksson)
Organization: Swedish Institute of Computer Science, Kista
Lines: 32

In article <8168@ism780c.UUCP> jimh@ism780c.UUCP (Jim Hori) writes:
>The Lessing is probably Doris who has
>written several futurist/SF novels ...

>Her SF novels are serialized, and from what
>I recall from scanning them in bookstores,
>reminiscent of Marge Piercy's enjoyable,
>though somewhat stiff, feminist SF.
>
>The series is called "Canopus and Argos: Archives",
Should be              Canopus IN Argos: Archives

The five books are quite different in character. The second one
("The marriages between zones 3, 4 and 5") could possibly be called
"feminist SF" - it is very different from the other four in most ways.
The third ("The Sirian Experiments") is at times rather funny, and the
fifth ("The sentimental agents in the Volyen empire") is among the funniest
books I've read.

On the other hand, number 4 ("The making of the representative of planet 8")
was rather depressing. While reading it I thought that "it can't get any
worse than this". It could, of course. (I don't refer to the quality of the
book, but to the events in the story).

I should mention the title of the first one also: "Shikasta" This is
the most "important" of the five, in some sense. It is also the one that
could perhaps be called "stiff". All the books are well worth reading.

Lars-Henrik Eriksson				Internet: lhe@sics.se
Swedish Institute of Computer Science		Phone (Intn'l): +46 8 750 79 70
Box 1263					Telefon (nat'l): 08 - 750 79 70
S-164 28  KISTA
#! rnews 768
Path: alberta!mnetor!uunet!mcvax!enea!tut!santra!kolvi!jku
From: jku@kolvi.UUCP (Juha Kuusama)
Newsgroups: comp.sys.ibm.pc
Subject: Re: EVALuation of Shareware Word Processors - Version 1
Message-ID: <32@kolvi.UUCP>
Date: 11 Dec 87 07:40:17 GMT
References: <3610@dhw68k.UUCP>
Reply-To: jku@kolvi.UUCP (Juha Kuusama)
Organization: Helsinki University of Technology, Finland
Lines: 9

I'm not at all questioning the value of the comparision, but (as a VERY
satisfied and registered) user of PC-Write, I'd like to point out that:

- PC-Write does support the ega in 43-line mode

- PC-Write can remind you to do backups at specified time intervals or
  when you have entered a specified number of characters.
---
Juha Kuusama, jku@kolvi.UUCP  ( ...!mcvax!tut!kolvi!jku )
#! rnews 904
Path: alberta!mnetor!uunet!mcvax!diku!daimi!jnp
From: jnp@daimi.UUCP (J|rgen N|rgaard)
Newsgroups: comp.sys.mac
Subject: Re: Conjecture:  why several tech notes failed
Message-ID: <1248@daimi.UUCP>
Date: 10 Dec 87 08:43:14 GMT
References: <9827@ut-sally.UUCP>
Reply-To: jnp@titan.UUCP (J|rgen N|rgaard)
Organization: DAIMI: Computer Science Department, Aarhus University, Denmark
Lines: 16


Earlier this year there has been trouble with tech-notes, that would 
not binhex correctly (the Mac program).
Then the problem could be solved with a similiar program on unix-machines.
The problem seemed to show up when the file-names where extremely long
(28 might be the number).

It seemed not to be so sensitive about file-names.

Unfortunately I have lost the sources.


-- 
			Regards J|rgen N|rgaard
				e-mail: jnp@daimi.dk
-------------------------------------------------------------------------------
#! rnews 785
Path: alberta!mnetor!uunet!mcvax!diku!iesd!jacob
From: jacob@iesd.uucp (Jacob stergaard B{kke)
Newsgroups: sci.misc
Subject: A request on the Ozone layer
Keywords: More information wanted about the Ozone layer.
Message-ID: <174@iesd.uucp>
Date: 11 Dec 87 13:38:23 GMT
Reply-To: jacob@iesd.UUCP (Jacob \stergaard B{kke)
Organization: Dept. of Comp. Sci., Aalborg University, Denmark
Lines: 12

Today I read an posting from rhorn@infinet.UUCP about the problems
with the Ozone layer. So I got interested and now wanted more
information about it and the problems with the Ozone layer in
Switzerland present. I would like any information and I'll look
forward to any reponds. 

		Yours sincerely
			
			Jacob Baekke, Denmark


Reply to:     	jacob@iesd.uucp, {...}!mcvax!diku!iesd!jacob  
#! rnews 1246
Path: alberta!mnetor!uunet!mcvax!inria!imag!jarwa
From: jarwa@imag.UUCP (Jarwa Sahar)
Newsgroups: comp.software-eng
Subject: LOOKING FOR DOCUMENTS ON SOFTWARE DOCUMENTATION
Message-ID: <2336@imag.UUCP>
Date: 11 Dec 87 09:15:21 GMT
Reply-To: jarwa@imag.UUCP (Jarwa Sahar)
Organization: IMAG, University of Grenoble, France
Lines: 26


     I am very interested in all publications concerning Documents 
     Related to Software Documentation and to Maitenance Environment.
     
     What I am interested in are papers on different types 
     of these documents, their formalism and their structure.
     
     If this area also interest you, I'd be very pleased if you could 
     contact me, or send me your papers and/or what you have found 
     interesting pertaining to this area. This will help me making a 
     preliminary study on it.
     
     Looking forward to your answer, and thank you for your help.
					Sahar JARWA

	My adress is
	Sahar JARWAH
	Equipe "Systemes Intelligents de Recherche d'Informations"
        Laboratoire de Genie Informatique - IMAG
        BP 68
        38462 St Martin d'Heres Cedex
        FRANCE

	my phone is 76-51-46-00 extension 5182

	my electronic adress is jarwa@imag.imag.fr
	on UUCP: jarwa@imag
#! rnews 1217
Path: alberta!mnetor!uunet!mcvax!inria!imag!jarwa
From: jarwa@imag.UUCP (Jarwa Sahar)
Newsgroups: comp.databases
Subject: LOOKING FOR DOCUMENTS
Message-ID: <2337@imag.UUCP>
Date: 11 Dec 87 09:18:16 GMT
Reply-To: jarwa@imag.UUCP (Jarwa Sahar)
Organization: IMAG, University of Grenoble, France
Lines: 26


     I am very interested in all publications concerning Documents 
     Related to Software Documentation and to Maitenance Environment.
     
     What I am interested in are papers on different types 
     of these documents, their formalism and their structure.
     
     If this area also interest you, I'd be very pleased if you could 
     contact me, or send me your papers and/or what you have found 
     interesting pertaining to this area. This will help me making a 
     preliminary study on it.
     
     Looking forward to your answer, and thank you for your help.
					Sahar JARWA

	My adress is
	Sahar JARWAH
	Equipe "Systemes Intelligents de Recherche d'Informations"
        Laboratoire de Genie Informatique - IMAG
        BP 68
        38462 St Martin d'Heres Cedex
        FRANCE

	my phone is 76-51-46-00 extension 5182

	my electronic adress is jarwa@imag.imag.fr
	on UUCP: jarwa@imag
#! rnews 2496
Path: alberta!mnetor!uunet!mcvax!unido!laura!hmm
From: hmm@laura.UUCP (Hans-Martin Mosner)
Newsgroups: comp.lang.smalltalk
Subject: User Survey
Keywords: survey smalltalk curiosity
Message-ID: <165@laura.UUCP>
Date: 10 Dec 87 21:31:51 GMT
Organization: University of Dortmund, W-Germany
Lines: 59

To stir up some unrest, we have decided to post a smalltalk user survey.
Where are you, all you happy smalltalk hackers ?  There must be life
in other parts of the world, too... :-)
Anyway, we would like you to fill in this questionnaire and give us some
feedback.  Of course we would also like if you would post your experiences
and questions to this group.  After all, that's it's purpose...

	Hans-Martin Mosner & Andreas Toenne
	Smalltalk hackers at the University of Dortmund

+-------------------------------
|1.	What kind of hardware/software do you use:
|1.1.	Hardware
|1.1.1.	Processor type:		_____
|1.1.2.	Physical memory size:	_____
|1.1.3.	Display size:		_____
|1.2.	Software
|1.2.1.	Operating system:	_____
|1.2.2.	Virtual machine:	_____
|1.2.3.	Virtual image version:	_____
|1.3	Overall performance:	_____ % Dorado (if you know that)
|2.	For what purposes do you use smalltalk ?
|	(FillInThisBlank)
|3.	Do you think that the system meets your requirements ?
|	If not, why ?
|4.	If you are a programmer:
|4.1.	What kind of applications have you written ?
|4.2.	If those applications were not written for your employer,
|	why didn't you share them with the Usenet community ? :-)
|5.	How do you like smalltalk ?
|5.1.	How long have you been using smalltalk ?
|5.2.	How familiar are you with smalltalk ?
+-------------------------------
Thank you for being so cooperative.
Now that you have answered all those questions, please
send the whole thing back to:

	hmm@unido.uucp
or	hmm@unido.bitnet
or	...!uunet!unido!hmm
or	hmm%unido.uucp@uunet.uu.net

If everything fails, just post it to this group...

If even that does not work, then send it via snail mail to:
	Hans-Martin Mosner
	Informatik-Rechner-Betriebsgruppe
	Universitaet Dortmund
	Postfac` 500500
D-4600  Dortmund
	West Germany

Disclaimer: these opinions are not opinions but just random bits & bytes
and therefore I don't need to disclaim anything...
-- 
Hans-Martin Mosner		| Don't tell Borland about Smalltalk - |
hmm@unido.{uucp,bitnet}		| they might invent TurboSmalltalk !   |
------------------------------------------------------------------------
Disclaimer: TurboSmalltalk may already be a trademark of Borland...
D
#! rnews 14600
Path: alberta!mnetor!uunet!mcvax!unido!laura!atoenne
From: atoenne@laura.UUCP (Andreas Toenne)
Newsgroups: comp.lang.smalltalk
Subject: A small IconEditor for Smalltalk 80, VI2.2
Keywords: smalltalk icons goodie
Message-ID: <166@laura.UUCP>
Date: 10 Dec 87 21:48:21 GMT
Organization: University of Dortmund, W-Germany
Lines: 525

Here is a little IconEditor I wrote.
This goodie works on Smalltalk 80 VI2.2 VM1.1
It comes in two parts.
The first part 'Icon menu.st' adds knowledge about icons to the 
StandardSystemController's blueButtonMenu.
You should file in this one first.
The second part 'Icon Editor.st' is the editor himself.

Some notes about icons:
The icon's textRectangle is clipped with the icon's boundingBox.
To cancel a given textRectangle simply move it outside the outlined box.
The method storeOn: in class OpaqueForm is buggy.
You should add enclosing round brackets to the output. Otherwise
you won't be able to read the saved icon definitions back.

	Have fun

	Andreas Toenne
	atoenne@unido.uucp
	atoenne@unido.bitnet
	...!uunet!unido!atoenne
	atoenne%unido.uucp@uunet.uu.net

~~~~~~~~~~~~~~~~~~ cut here for best results ~~~~~~~~~~~~~~~~~~~~~~~~~~
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	Icon Editor.st
#	Icon Menu.st
# This archive created: Thu Dec 10 22:36:04 1987
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'Icon Editor.st'
then
	echo shar: "will not over-write existing file 'Icon Editor.st'"
else
cat << \SHAR_EOF > 'Icon Editor.st'
MouseMenuController subclass: #IconDisplayController
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Icon Editor'!


!IconDisplayController methodsFor: 'controller default'!

isControlActive
	^ super isControlActive and: [sensor blueButtonPressed not]! !

!IconDisplayController methodsFor: 'menu messages'!

yellowButtonActivity
	| index menu |
	menu _ view yellowButtonMenu.
	menu == nil
		ifTrue:
			[view flash.
			super controlActivity]
		ifFalse: 
			[index _ menu startUpYellowButton.
			index ~= 0 
				ifTrue:
					[self controlTerminate.
					view perform: (menu selectorAt: index).
					self controlInitialize]]! !

View subclass: #IconDisplayView
	instanceVariableNames: 'icon aspect iconMsg iconMenu '
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Icon Editor'!
IconDisplayView comment:
'I am a stupid view used to display the edited icon'!


!IconDisplayView methodsFor: 'displaying'!

displayView
	"display icon centered in my insetBox"

	| r iconRect rec |
	Display white: self insetDisplayBox.
	(icon isKindOf: Icon)
		ifTrue: 
			[r _ self insetDisplayBox.
			icon form displayOn: Display at: r topLeft + r bottomRight - icon form extent // 2.
			iconRect _ icon form computeBoundingBox.
			iconRect _ iconRect translateBy: r topLeft + r bottomRight - iconRect extent // 2.
			(iconRect areasOutside: (iconRect insetBy: 1 @ 1))
				do: [:edge | Display fill: edge mask: Form gray].
			rec _ icon textRect.
			rec = nil
				ifFalse: 
					[rec _ rec translateBy: r topLeft + r bottomRight - icon form computeBoundingBox extent // 2.
					(rec areasOutside: (rec insetBy: 1 @ 1))
						do: [:edge | Display fill: edge mask: Form gray]]]! !

!IconDisplayView methodsFor: 'updating'!

update: anAspect 
	"update the view"

	anAspect == aspect
		ifTrue: 
			[icon _ model perform: iconMsg.
			self displayView]! !

!IconDisplayView methodsFor: 'menu messages'!

allBlack
	"make the selected icon all black"
	| figure shape |
	figure _ icon form figure.
	shape _ icon form shape.
	figure fill: figure computeBoundingBox rule: Form over mask: Form black.
	shape fill: figure computeBoundingBox rule: Form over mask: Form black.
	model changed: #iconView!

allGray
	"make the selected icon all transparent"
	| figure shape |
	figure _ icon form figure.
	shape _ icon form shape.
	figure fill: figure computeBoundingBox rule: Form over mask: Form white.
	shape fill: figure computeBoundingBox rule: Form over mask: Form white.
	model changed: #iconView!

allWhite
	"make the selected icon all white"
	| figure shape |
	figure _ icon form figure.
	shape _ icon form shape.
	figure fill: figure computeBoundingBox rule: Form over mask: Form white.
	shape fill: figure computeBoundingBox rule: Form over mask: Form black.
	model changed: #iconView!

editIcon
	"edit the selected icon"

	| figure shape opaqueForm iconExtent bitView viewPoint savedForm |
	(icon = nil and: [model iconSymbol ~= #default])
		ifTrue: 
			[iconExtent _ Rectangle fromUser extent.
			figure _ Form extent: iconExtent.
			shape _ Form extent: iconExtent.
			opaqueForm _ OpaqueForm figure: figure shape: shape.
			model icon: (Icon form: opaqueForm textRect: nil)].
	icon = nil
		ifFalse: 
			[viewPoint _ (BitEditor locateMagnifiedView: icon form scale: 4 @ 4) topLeft.
			bitView _ BitEditor
						bitEdit: icon form
						at: viewPoint
						scale: 4 @ 4
						remoteView: nil.
			savedForm _ Form fromDisplay: (bitView displayBox merge: bitView labelDisplayBox).
			bitView controller startUp.
			savedForm displayOn: Display at: bitView labelDisplayBox topLeft.
			bitView release.
			model changed: #iconView]!

textRect
	"let the user specify a rectangle that will hold the icon's text"

	| rec r|
	rec _ Rectangle fromUser.
	r _ self insetDisplayBox.
	rec _ rec translateBy: 0@0 - (r topLeft + r bottomRight - icon form computeBoundingBox extent //2).
	icon form: icon form textRect: rec.
	model changed: #iconView! !

!IconDisplayView methodsFor: 'controller access'!

defaultControllerClass
	^IconDisplayController! !

!IconDisplayView methodsFor: 'private'!

on: anIcon aspect: m1 icon: m2 menu: m3
	self model: anIcon.
	aspect _ m1.
	iconMsg _ m2.
	iconMenu _ m3! !

!IconDisplayView methodsFor: 'adaptor'!

yellowButtonMenu
	^ self model perform: iconMenu! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

IconDisplayView class
	instanceVariableNames: ''!


!IconDisplayView class methodsFor: 'instance creation'!

on: anIcon aspect: m1 icon: m2 menu: m3
	"create a new view for anIcon with aspect m1"

	^self new
		on: anIcon
		aspect: m1
		icon: m2
		menu: m3! !

Model subclass: #IconEditor
	instanceVariableNames: 'icon iconSymbol iconBuffer '
	classVariableNames: 'IconMenu ListMenu '
	poolDictionaries: ''
	category: 'Icon Editor'!
IconEditor comment:
'I am a bit editor for system icons.

Instance Variables :
	icon 				"The selected icon"
	iconSymbol			"The symbol for the selected icon"

Class Variables:
	ListMenu 			"The action menu for the SelectionInListView over all icons"'!


!IconEditor methodsFor: 'accessing'!

icon
	"return the selected icon"

	^icon!

icon: anIcon 
	"change the selected Icon to anIcon"

	icon _ anIcon.
	Icon constantNamed: iconSymbol put: anIcon.
	self changed: #iconView 	" aspect for the IconDisplayView"!

icon: anIcon named: aSymbol 
	" store anIcon at position aSymbol"

	Icon constantNamed: aSymbol put: anIcon.
	icon _ anIcon.
	iconSymbol _ aSymbol.
	self changed: #iconSymbol.			"aspect for SelectionInListView"
	self changed: #iconView			"aspect for iconDisplayView "!

iconSymbol
	"return the symbol for the selected icon"

	^iconSymbol!

iconSymbol: aSymbol 
	"change the symbol for the selected icon to aSymbol"

	iconSymbol _ aSymbol.
	icon _ Icon constantNamed: aSymbol.
	self changed: #iconView	"aspect for the IconDisplayView"! !

!IconEditor methodsFor: 'removing'!

removeIcon
	" remove the currently selected icon "

	Icon constantDictionary removeKey: iconSymbol ifAbsent: [^nil].
	iconSymbol _ icon _ nil.
	self changed: #iconSymbol.
	self changed: #iconView! !

!IconEditor methodsFor: 'list display'!

iconList
	"return the list of icon symbols"

	| list |
	list _ OrderedCollection new.
	Icon constantDictionary keysDo: [:i | list add: i].
	^list!

initialSymbol
	"get the initial symbol selection"
	"this method is used every time the SelectionInListView receives an update mesage "

	^iconSymbol!

listMenu
	"return the menu for the icon list"

	^ListMenu! !

!IconEditor methodsFor: 'icon display'!

iconMenu
	"return the menu for the iconDisplayController"

	^IconMenu! !

!IconEditor methodsFor: 'menu messages'!

copy
	" save a (deep) copy of the currently selected icon"

	icon = nil ifFalse: [iconBuffer _ icon deepCopy]!

cut
	" remove the currently selected icon from the icon dictionary and   
	save it in iconBuffer"

	(icon ~= nil or: [iconSymbol ~= #default])
		ifTrue: 
			[iconBuffer _ icon.
			self removeIcon]!

loadIcon
	"override the current icon with a definition from a file"

	| aFileName anIcon aStream |
	(icon ~= nil or: [iconSymbol ~= #default])
		ifTrue: 
			[aFileName _ FileDirectory
						requestFileName: 'file : '
						default: iconSymbol asString , '.icn'
						version: #old
						ifFail: [^''].
			aFileName ~= ''
				ifTrue: 
					[aStream _ FileStream oldFileNamed: aFileName.
					anIcon _ Object readFrom: aStream.
					aStream close.
					self icon: anIcon]]!

newIcon
	" create a new clean icon"

	| iconName |
	iconName _ FillInTheBlank request: 'Icon Name ?'.
	iconName = '' ifFalse: [self icon: nil named: iconName asSymbol]!

paste
	" change the currently selected icon to the icon held in iconBuffer"
	" invoke newIcon if none is selected"

	iconSymbol = nil
		ifTrue: 
			["add a new icon"
			self newIcon.
			iconSymbol = nil ifFalse: [self icon: iconBuffer]]
		ifFalse: ["override old icon"
			self icon: iconBuffer]!

renameIcon
	" change the name of an icon"

	| key value newName |
	(icon ~= nil or: [iconSymbol ~= #default])
		ifTrue: 
			[key _ iconSymbol.
			value _ icon.
			newName _ FillInTheBlank request: 'Change icon name' initialAnswer: key.
			newName ~= ''
				ifTrue: 
					[self removeIcon.
					self icon: value named: newName asSymbol]]!

saveIcon
	"store the selected icon to a file"

	| aFileName aStream |
	icon = nil
		ifFalse: 
			[aFileName _ FileDirectory
						requestFileName: 'file : '
						default: iconSymbol asString , '.icn'
						version: #any
						ifFail: [^''].
			aFileName ~= ''
				ifTrue: 
					[aStream _ FileStream newFileNamed: aFileName.
					icon storeOn: aStream.
					aStream close]]! !

!IconEditor methodsFor: 'view creation'!

open
	"open the views"

	| topView |
	topView _ StandardSystemView
				model: self
				label: 'Icon Editor'
				minimumSize: 256 @ 300.
	topView
		addSubView: (SelectionInListView
				on: self
				aspect: #iconSymbol
				change: #iconSymbol:
				list: #iconList
				menu: #listMenu
				initialSelection: #initialSymbol)
		in: (0 @ 0 corner: 1.0 @ 0.3)
		borderWidth: 1.
	topView
		addSubView: (IconDisplayView
				on: self
				aspect: #iconView
				icon: #icon
				menu: #iconMenu)
		in: (0.0 @ 0.3 corner: 1.0 @ 1.0)
		borderWidth: 1.
	topView controller open! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

IconEditor class
	instanceVariableNames: ''!


!IconEditor class methodsFor: 'class initialization'!

initialize
	"Initialize the class IconEditor"
	"IconEditor initialize"

	ListMenu _ ActionMenu labelList: #((copy cut paste ) (newIcon renameIcon ) (saveIcon loadIcon ) ) selectors: #(copy cut paste newIcon renameIcon saveIcon loadIcon ).
	IconMenu _ ActionMenu labelList: #((editIcon textRect ) (allWhite allBlack allGray) ) selectors: #(editIcon textRect allWhite allBlack allGray)! !

!IconEditor class methodsFor: 'instance creation'!

open
	"create on schedule a new Icon Editor"

	self new open! !

IconEditor initialize!
SHAR_EOF
fi
if test -f 'Icon Menu.st'
then
	echo shar: "will not over-write existing file 'Icon Menu.st'"
else
cat << \SHAR_EOF > 'Icon Menu.st'
!MouseMenuController methodsFor: 'menu messages'!

blueButtonActivity
	"Determine which item in the blue button pop-up menu is selected. 
	If one is selected, then send the corresponding message to the object 
	designated as the menu message receiver."
	"Enhanced to use HierarchicalMenus by atoenne@unido.uucp"

	| index |
	blueButtonMenu ~~ nil
		ifTrue: 
			[index _ blueButtonMenu startUpBlueButton.
			index ~= 0 ifTrue: [blueButtonMenu class = HierarchicalMenu
					ifTrue: [self menuMessageReceiver perform: (blueButtonMenu selectorAt: index)]
					ifFalse: [self menuMessageReceiver perform: (blueButtonMessages at: index)]]]
		ifFalse: [super controlActivity]! !

!StandardSystemController class methodsFor: 'class initialization'!

initialize
	"Initialize the class variables."
	"StandardSystemController initialize. 
	StandardSystemController allInstances do: [:sc | sc 
	initializeBlueButtonMenu] "

	ScheduledBlueButtonMenu _ (MenuBuilder parseFrom: (ReadStream on: 'newLabel[newLabel]
(under[under] move[move] frame[frame]) (collapse[collapse]
icon: ((selectIcon[selectIcon] editIcon[editIcon]) (loadIcons[loadIcons] saveIcons[saveIcons])))
(close[close])')) menu.
	MenuWhenCollapsed _ ActionMenu
				labels: 'new label\under\move\expand\close' withCRs
				lines: #(1 4 )
				selectors: #(newLabel under move expand close )! !

!StandardSystemController methodsFor: 'menu messages'!

editIcon
	" call an icon editor "

	IconEditor open!

loadIcons
	"load new constant definitions for icons"

	| aFileName |
	aFileName _ FileDirectory
				requestFileName: 'file:'
				default: '*.icn'
				version: #old
				ifFail: [^''].
	aFileName ~= '' ifTrue: [Icon constantsFromFile: aFileName]!

saveIcons
	"write current icon constants to a file"

	| aFileName |
	aFileName _ FileDirectory
				requestFileName: 'file:'
				default: '*.icn'
				version: #any
				ifFail: [^''].
	aFileName ~= '' ifTrue: [Icon constantsToFile: aFileName]!

selectIcon
	"let the user choose from the current icons"

	| nameList iconList selection selectedIcon |
	nameList _ OrderedCollection new.
	Icon constantDictionary keysDo: [:key | nameList add: key].
	iconList _ Array with: nameList asArray.
	selection _ (PopUpMenu labelList: iconList) startUp.
	selection ~= 0
		ifTrue: 
			[selectedIcon _ (Icon constantNamed: (nameList at: selection) asSymbol) copy.
			self view icon: selectedIcon.				"change the icon"
			self view iconView lock.					"essential. see below"
			self view iconView text: self view label.	"set new icon text"
			self view iconView newIcon]				"compute new icon"
"lock is needed to perform the newIcon computation. Otherwise insetDisplayBox would be garbled. Text setting is merely needed at the first change. (The standard label has no iconText) "! !

!StandardSystemController initialize. 
StandardSystemController allInstances do: [:sc | sc 
initializeBlueButtonMenu]!
SHAR_EOF
fi
exit 0
#	End of shell archive
D
#! rnews 813
Path: alberta!mnetor!uunet!mcvax!unido!laura!atoenne
From: atoenne@laura.UUCP (Andreas Toenne)
Newsgroups: rec.games.hack
Subject: Re: Nethack 2.2:  You stop to avoid hitting.
Keywords: I have this bug too.
Message-ID: <167@laura.UUCP>
Date: 10 Dec 87 21:53:23 GMT
References: <7515@alice.UUCP>
Reply-To: atoenne@unido.UUCP (Andreas Toenne)
Organization: University of Dortmund, W-Germany
Lines: 9

In article <7515@alice.UUCP> wilber@alice.UUCP writes:
>I have nethack running on my 3B1.  So far the only bug I've encountered
>is the message "You stop to avoid hitting."  (Which sometimes comes out as
>"You stop to avoid hitting <random garbage>.")  I haven't hit the plethora

You have defined DOGNAME but you are missing the dog's name :-)
Simply add 'dogname:...' to your nethack options.

	Andreas Toenne
D
#! rnews 1201
Path: alberta!mnetor!uunet!mcvax!unido!rmi!dg2kk!dg2kk
From: dg2kk@dg2kk.UUCP (Walter)
Newsgroups: rec.ham-radio.packet
Subject: Problems with WA8DED 2.1 and TNC-2 clones (+possible solution)
Summary: PTT line is released too early
Message-ID: <174@dg2kk.UUCP>
Date: 10 Dec 87 23:09:52 GMT
Reply-To: dg2kk@dg2kk.UUCP
Organization: dg2kk, W Germany, (JO30FT)
Lines: 20

Some TNC-2's have problems with the WA8DED software (version 2.1).
Most of the outgoing frames cannot be docoded by other stations because
the software turns off the transmitter before all bits have been transmitted.

There are two solutions to this problem:

Hardware: connect a small (~2.2uf) capacitor from the base of the PTT keying
          transistor to ground. (Note: you may have to increase TXDELAY)

Software: the code that turns off the transmitter starts at location $037B
          (3E 05...). It's possible to insert a short delay loop, so that the
          transmitter remains keyed for a few milliseconds longer.
          (I haven't tried this yet.)


73s, Walter  dg2kk@dg2kk.UUCP


PS: Does anyone know if WA8DED is on USENET/Bitnet/ARPANET/anynet???
    What is his email address? Please let me know.  Thanks.
#! rnews 1319
Path: alberta!mnetor!uunet!mcvax!4gl!honzo
From: honzo@4gl.UUCP (Honzo Svasek)
Newsgroups: comp.unix.xenix,comp.os.misc,comp.unix.questions,comp.unix.wizards
Subject: Re: Venix Users?
Message-ID: <253@4gl.UUCP>
Date: 11 Dec 87 18:23:50 GMT
References: <2439@sputnik.COM>
Organization: 4GL Consultants b.v., the Netherlands
Lines: 27
Xref: alberta comp.unix.xenix:1172 comp.os.misc:341 comp.unix.questions:4773 comp.unix.wizards:5750

in article <2439@sputnik.COM>, dbb@tc.fluke.COM (Dave Bartley) says:
> 
> The Great OS Search continues ...
> 
> What about Venix?

I am using Venix for several years now and have the folowing comments.

1. it IS System V UNIX.

2. It has a faster 'feel' for the interactive user than Xenix or Microport

3. It seems to be bug free. This system is running news and I am doing most
   of the development on it. I have had no problems for at least a year now,
   and the system is on the air 24 hours a day.

   A few times I had to remove the -O options when compiling, but same
   counts for 3B2 UNIX.

4. Venturecom claims it to be REAL TIME. I have no experience with
   REAL real-time on this system, and don't know if the venix system calls
   are interruptable.

Honzo Svasek, <mcvax!4gl!honzo>

PS. Anyone out there has a way to install 2.2 on a Seagate ST4096 disk?
	(on an AT)
#! rnews 1252
Path: alberta!mnetor!uunet!mcvax!cernvax!ethz!forty2!vogel
From: vogel@forty2.UUCP (Stefan Vogel)
Newsgroups: comp.sources.bugs
Subject: bug in sush
Message-ID: <123@forty2.UUCP>
Date: 11 Dec 87 17:02:58 GMT
Reply-To: vogel@forty2.UUCP (Stefan Vogel)
Organization: Exp. Physics University Zuerich
Lines: 33

We found the following bug in sushperm.c of the sush distribution:

In routine addgroup the pointer gpmem was incremented before it was used.
So, the first member of the group was never found, and the reference to
the last member lead to an illegal memory reference (NULL pointer!).

original code:

	 gpmem = gpt->gr_mem;
	 while(*gpmem++) {  <------------------gpmem is incremented
		 if(!strcmp(user,*gpmem))  <---gpmem is used
			 ok++;
	 }

	 /* auth failed - return */

corrected code:

	 gpmem = gpt->gr_mem;
	 while(*gpmem) {
		 if(!strcmp(user,*gpmem++))
			 ok++;
	 }

	 /* auth failed - return */

                              Stefan Vogel, Simon Poole
                              Inst. for Theoretical Physics
                              University of Zuerich
                              Switzerland

                              UUCP:   ....mcvac!cernvax!forty2!vogel
                              BITNET: k524911@czhrzu1a
#! rnews 626
Path: alberta!mnetor!uunet!mcvax!prlb2!vub!leo
From: leo@vub.UUCP (Leo Smekens)
Newsgroups: comp.sys.mac
Subject: 4th Dimension vs. dBase Mac
Keywords: 4th Dimension,dBase Mac,Macintosh
Message-ID: <506@vub.UUCP>
Date: 11 Dec 87 13:40:05 GMT
Organization: Vrije Universiteit Brussel, Brussels
Lines: 14

What can 4th Dimension do what dBase Mac can't?
What can dBase Mac do what 4th Dimension can't?

Who should invest in which program?
If you don`t like answering on the net,
please mail direct to:
leo@vub.vub.uucp

Leo Smekens
Metabolism & Endocrinology
Free University of Brussels
Laarbeeklaan 103
B-1090 BRUSSELS
BELGIUM
#! rnews 783
Path: alberta!mnetor!uunet!mcvax!prlb2!vub!leo
From: leo@vub.UUCP (Leo Smekens)
Newsgroups: comp.sys.mac
Subject: Latest SE's shipped
Keywords: Mac,Mac SE,Macintosh,Macintosh SE,hardware
Message-ID: <507@vub.UUCP>
Date: 11 Dec 87 13:50:46 GMT
Organization: Vrije Universiteit Brussel, Brussels
Lines: 15

We noticed that the last Macintosh SE's we received at our
university are equipped with a new type of mouse,and,
apparently,with another internal disk drive (at least,it
sounds differently and beeps upon activation).
What has been changed on the new Mac SE compared to the first version?
If you don't like to answer via the net,please mail direct to:

leo@vub.vub.uucp

Leo Smekens
Metabolism & Endocrinology
Free University of Brussels
Laarbeeklaan 103
B-1090 BRUSSELS
BELGIUM
#! rnews 1432
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!csnjr
From: csnjr@its63b.ed.ac.uk (Nick Rothwell)
Newsgroups: rec.music.misc
Subject: Re: Ace-Screamingest Guitar Solos on Record
Keywords: guitar, flames (regrettably)
Message-ID: <826@its63b.ed.ac.uk>
Date: 11 Dec 87 13:06:12 GMT
References: <1725@s.cc.purdue.edu> <1349@saturn.ucsc.edu> <6480@ihlpa.ATT.COM>
Reply-To: nick@lfcs.ed.ac.uk (Nick Rothwell)
Organization: LFCS, University of Edinburgh
Lines: 21

In article <6480@ihlpa.ATT.COM> rjp1@ihlpa.ATT.COM writes:
>>C'mon people, you can't omit:
>...
>Edgar Froese	-  Underwater Twilight, Riding The Ray, Le Parc and
>		   Heartbreakers tunes, etc, etc.

Froese's best guitar solo, by most accounts, is on Cloudburst Flight
on the Force Majeure album, back in '79. He starts with slow chords
and fingering on a 12 string acoustic, then some "power chords" (!) on
the 12 string, and then onto the electric (Fender Strat I think).
Some of the recent live work's been good, as well - Franke holding down
a rhythm, with Froese and Haslinger both firing off screaming guitar riffs.

>Bob Pietkivitch   ( e - x - p - o - s - u - r - e )   UUCP: ihnp4!ihlpa!rjp1

-- 
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk
		<Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
"Nothing's forgotten. Nothing is ever forgotten."   - Herne
#! rnews 818
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!gvw
From: gvw@its63b.ed.ac.uk (G Wilson)
Newsgroups: comp.sys.transputer
Subject: Meiko email contact
Message-ID: <827@its63b.ed.ac.uk>
Date: 11 Dec 87 13:23:42 GMT
Reply-To: gvw@its63b.ed.ac.uk (G Wilson)
Organization: I.T. School, Univ. of Edinburgh, U.K.
Lines: 18

In response to several queries --- Meiko Ltd. is not
connected to any electronic mail network at present.
However, both myself and Dr. Duncan Roweth, who are
Meiko employees working on the Edinburgh Concurrent
Supercomputer Project, are connected to various networks.
I can be reached at:

	gvw@itspna.ed.ac.uk (usual)
	gvw@its63b.ed.ac.uk (alternative)

while Duncan is:

	egnp36@meiko.ed.ac.uk

If you want more information on Meiko, please include
a telephone number and a physical mail address.

Greg
#! rnews 733
Path: alberta!mnetor!uunet!mcvax!ukc!dcl-cs!nott-cs!pyr1.cs.ucl.ac.uk!awylie
From: awylie@pyr1.cs.ucl.ac.uk
Newsgroups: rec.games.misc
Subject: Re: Does anyone remember Zork1? (*S
Message-ID: <42800002@pyr1.cs.ucl.ac.uk>
Date: 11 Dec 87 09:42:00 GMT
References: <22039@ucbvax.BERKELEY.EDU>
Lines: 8
Nf-ID: #R:ucbvax.BERKELEY.EDU:-2203900:pyr1.cs.ucl.ac.uk:42800002:000:300
Nf-From: pyr1.cs.ucl.ac.uk!awylie    Dec 11 09:42:00 1987


Its a looooong time since I played Zork, but I believe that you can get
to the INSIDE of the grate in the woods by which time you should have
obtained a key which will open it. This gives you an alternative entrance/
exit to the dungeon, but is not actually much help.
   Andrew

awylie@uk.ac.ucl.cs
#! rnews 1324
Path: alberta!mnetor!uunet!mcvax!ukc!eagle!icdoc!ivax!mst
From: mst@ivax.doc.ic.ac.uk (Martin Taylor)
Newsgroups: rec.games.trivia
Subject: Re: words to a song (old lady who swallowed a fly)
Message-ID: <148@gould.doc.ic.ac.uk>
Date: 11 Dec 87 10:55:47 GMT
References: <2170@homxc.UUCP> <12270004@hpldola.HP.COM> <1053@mtuxo.UUCP>
Sender: news@doc.ic.ac.uk
Reply-To: mst@doc.ic.ac.uk (Martin Taylor)
Organization: Dept. of Computing, Imperial College, London, UK.
Lines: 26

In article <1053@mtuxo.UUCP> gertler@mtuxo.UUCP (xm960-D.GERTLER) writes:

>As I recall, the sequence is as follows (more or less):
>
>	1)  Fly		Perhaps she'll die.
>	2)  Spider	That wriggled and jiggled and tickled inside her.
>	3)  Bird	How absurd to swallow a bird!
>	4)  Cat		Imagine that, to swallow a cat!
>	5)  Dog		What a hog, to swallow a dog!
>	6)  Horse	She's dead, of course!
>
>I seem to remember a goat at about 5.5, but I don't
>recall it's associated comment.  Sorry.
>

It's "She just opened her throat, and swallowed a goat"

Also heard at an informal church social group, this alternative ending:

	6)  Horse	Not easy, of course, but she swallowed a horse
	7)  Minister	That finished her!


Martin S Taylor			        Department of Computing
JANET/ARPANET : mst@doc.ic.ac.uk	Imperial College
+44 589 5111 X4996			LONDON    SW7 2BZ
#! rnews 1060
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!aiva!ken
From: ken@aiva.ed.ac.uk (Ken Johnson)
Newsgroups: comp.edu,comp.lang.misc
Subject: Free audio tape about Logo
Message-ID: <209@aiva.ed.ac.uk>
Date: 11 Dec 87 11:33:10 GMT
Reply-To: ken@aiva.ed.ac.uk (Ken Johnson)
Followup-To: comp.lang.misc
Organization: Dept. of AI, Univ. of Edinburgh, UK
Lines: 26
Xref: alberta comp.edu:745 comp.lang.misc:887


Logotron Limited have prepared an audio tape called "Logo comes of age". 

Although it is basically a plug for the Logotron product, (it contains a
reference to the mythical "LCSI standard", for example) there is a lot
of interesting chat about how Logo is actually used. 

Playing time 45 minutes. 

Free from:
 Logotron Limited,
 Dales Brewery,
 Gwydir Street,
 CAMBRIDGE,
 England CB1 2LJ

	Phone (0223) 323656
-- 

From Ken Johnson			| Phone 031-225 4464 Ext 212
     AI Applications Institute		| Email k.johnson@ed.ac.uk
     80 South Bridge			|
     The University			|
     EDINBURGH, Scotland EH1 1HN	|

"Things will get worse before they get worse."
#! rnews 2806
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!tom
From: tom@cs.hw.ac.uk (Tom Kane)
Newsgroups: comp.ai
Subject: Probability Bounds from Bayes Theory: (A Problem).
Keywords: Bayes Theorem, Probability, Expert Systems, Uncertainty
Message-ID: <1578@brahma.cs.hw.ac.uk>
Date: 11 Dec 87 14:10:21 GMT
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 65


I am sending this letter out to the network to ask for solutions to a
particular problem of Bayesian Inference. Below is the text of the
problem, and at the end is the mathematical statement of the information
given. Simply, I am asking the questions:

1) Can you find bounds on the final result. If so, how?
2) If not, why is it not possible to do so? 
   What is missing in the specification of the problem?
3) If you get nowhere with this problem, would you be able to solve it
   if you were given the information: p(pv|t or l)=0.9?

I am interested in the problem of providing probability bounds for events
specified in a Bayesian setting when not all the necessary conditional 
probabilities are provided in setting up the problem. 

PROBLEM
~~~~~~~
(A problem relevant to the handling of Uncertainty in Expert Systems.)
We want to know the probability of a patient having both lung cancer and
tuberculosis based on the fact that this person has had a positive reading
in a chest X-ray. We are given the following pieces of information:

1. The probability that a person with lung cancer will have a positive
   chest X-ray is 0.9.

2. The probability that a person with tuberculosis will have a positive
   chest X-ray is 0.95.

3. The probability that a person with neither lung cancer nor tuberculosis
   will have a positive chest X-ray is 0.07.

4. In the town of interest, 4 percent of the population have lung cancer,
   and three percent have tuberculosis.

EVENTS
~~~~~~
l = lung cancer;       t = tuberculosis;           pv = positive chest X-ray

SETUP
~~~~~
In the statement of the problem below:-

~l means 'not l'.
~l, ~t means 'not l and not t'.
t or l means 't or l'
where 'not', 'and' , and 'or' are logical operators.
so that: p(~l, ~t) means probability( not l and not t).
Also,
p(pv|l) means the conditional probability of event pv, given event l.
PRIORS
~~~~~~
p(l) = 0.04;           p(t) = 0.03;                p(~l, ~t) = 0.95
CONDITIONALS
~~~~~~~~~~~~
p(pv|l) = 0.9;         p(pv|t) = 0.95;             p(pv| ~t,~l) = 0.07

(You are not given p(pv| t or l) )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please mail all solutions or comments to me, and I will let interested parties 
know what the results are. 
(I will specially treasure attempts which don't use independence assumptions.)
Thanks in advance to anyone who will spend time on this problem...
Regards,
Tom Kane.
#! rnews 3109
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!adrian
From: adrian@cs.hw.ac.uk (Adrian Hurt)
Newsgroups: sci.space
Subject: Re: SPACE Digest V8 #68
Summary: First submarines
Message-ID: <1580@brahma.cs.hw.ac.uk>
Date: 11 Dec 87 15:43:08 GMT
References: <OTA@ANGBAND.S1.GOV> <8712091350.AA00806@angband.s1.gov>
Organization: Computer Science, Heriot-Watt U., Scotland
Lines: 52

In article <8712091350.AA00806@angband.s1.gov>, ESC1361@DDAESA10.BITNET (Rupert Williams) writes:
> 
>						In fact the British must have
> been the most war-like nation in the world, fighting with more countries than
> anyone I can think off. Is this the reason why the English language is so
> popular ( hello America!! )???!!!! 

I assume you refer to the British Empire - prior to that, Britain (and before
the rest joined/were conquered by it, England) fought mostly against either
France, Spain or both at once. The wide domain of the English language is
directly due to the Empire, just as the wide use of Spanish throughout South
and Central America is due to the Spanish Empire.

>    I think also that ALL countries train their armies in ice and snow??!!

Including the Arabs? :-)

>    As for the Submarine....well I dont know about that, I thought that was an
> English invention too, like the Tank and the Jet-plane??! Maybe I'm wrong??!

There are a number of ancient submarine designs, including one which was a
rowing boat with a watertight cover! The first practical submarine was (I
believe) designed by a Mr. Holland, resident of Ireland, for use against the
Royal Navy. The Royal Navy took over the design, but regarded such concealed
warfare as ungentlemanly, and didn't make much use of them until Germany
showed the way.

The jet plane was invented practically at the same time by Britain, Germany
and the U.S.A. Germany had the first flying jet aircraft, followed closely by
Britain. Britain would have had a jet fighter not long after the Battle of
Britain except for government intervention. Fortunately, Hitler was equally
stupid. The Nazis believed they would win the war in a couple of months, and
gave little interest to projects which would bear no short term military
results. When they did get the world's first jet fighter (the Me262) it was
pretty devastating, albeit rare, until Hitler decided that it would make a
great fighter-bomber. Two bombs were fitted under the nose, at the expense
of two cannon and much speed and agility. Fortunately, Nazi policy was "if
it doesn't work, stomp on whoever says so." The first American jet was too
late for WW2, and the first Russian jet had a captured German engine.

>    As for the NASA/Space shuttle saga, the sooner they pull their fingers out
> the better. Arianne is having a field day over this one.

Now, for those who say "Why is this in sci.space?", read the above and apply
the lessons of history to the shuttle, Hermes, HOTOL, or whatever craft your
country should be sponsoring.

-- 
 "Keyboard? Tis quaint!" - M. Scott

 Adrian Hurt			     |	JANET:  adrian@uk.ac.hw.cs
 UUCP: ..!ukc!cs.hw.ac.uk!adrian     |  ARPA:   adrian@cs.hw.ac.uk
#! rnews 1128
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: sci.space
Subject: Re: Remote Sensing Fascism
Message-ID: <1583@brahma.cs.hw.ac.uk>
Date: 11 Dec 87 17:36:36 GMT
References: <566084060.amon@H.GP.CS.CMU.EDU>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 18
Summary:

Expires:

Sender:

Followup-To:



[ignore the above email address and use my signature]

>'Our' (I use the term VERY loosely since I'm not really sure which side
>they are on) people have obviously learned how to lie about the
>existance of things which are common knowledge
>PS: Is it now appropriate to address members of the DOD and the various spook
>    agencies as Comrade?

How about Right Honourable? (or have the Zircon and Spycatcher affairs not
made the news over there?)


-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1825
Path: alberta!mnetor!uunet!mcvax!ukc!its63b!hwcs!jack
From: jack@cs.hw.ac.uk (Jack Campin)
Newsgroups: rec.arts.sf-lovers
Subject: Re: Houston SF Opera
Message-ID: <1584@brahma.cs.hw.ac.uk>
Date: 11 Dec 87 19:10:14 GMT
References: <8168@ism780c.UUCP>
Reply-To: jack@cs.glasgow.ac.uk (Jack Campin)
Organization: PISA Project, Glesga Yoonie
Lines: 32
Summary:

Expires:

Sender:

Followup-To:



[ignore the above email address and use my signature]

In article <8168@ism780c.UUCP> jimh@ism780c.UUCP (Jim Hori) writes:
>
>I expected somebody to respond by now to the
>question about a SF opera being co-written
>by Philip Glass and somebody named Lessing,
>
>Any other news on this opera?

It's "the Making Of The Representative From Planet 8", if I remember right.
This is from the announcements to a Radio 3 broadcast of Glass's new orchestral
piece "The Light" - a tone poem about the Michelson-Morley experiments.

Incidentally, it's not the first SF opera. I heard a broadcast in New Zealand
of a Swedish opera called "Aniara", based on an epic poem about a colonizer
spaceship on its way to oblivion. I can remember neither the poet's nor the
composer's name.

I've only read the first of Lessing's series and didn't like it much. I felt I
was being preached at (Lessing is a Sufi - I don't know whether her having
been born in Iran has anything to with that - and it shows in her more recent
writing). OK, the content of the sermon may not have been as obnoxious as
Heinlein, Tolkien or Pournelle, but it was still gratuitous in literary terms.


-- 
ARPA: jack%cs.glasgow.ac.uk@nss.cs.ucl.ac.uk
JANET:jack@uk.ac.glasgow.cs       USENET: ...mcvax!ukc!cs.glasgow.ac.uk!jack
Mail: Jack Campin, Computing Science Department, University of Glasgow,
      17 Lilybank Gardens, Glasgow G12 8QQ, Scotland (041 339 8855 x 6045)
#! rnews 1184
Path: alberta!mnetor!uunet!mcvax!ukc!stl!stc!root44!cdwf
From: cdwf@root.co.uk (Clive D.W. Feather)
Newsgroups: rec.arts.sf-lovers
Subject: Asimov, UFO, and others
Summary: Where you can find them
Message-ID: <497@root44.co.uk>
Date: 11 Dec 87 08:48:49 GMT
Reply-To: cdwf@root44.UUCP (Clive D.W. Feather)
Organization: Root Computers Ltd, London, England
Lines: 17

Readers in the UK, and those elsewhere with UK contacts, may like to know...

(1) W.H.Smiths are stocking Asimov's "Fantastic Voyage II" in hardback,
UKL10.95.

(2) An organisation called Channel 5 Video, available at least in W.H.Smiths
and Woolworths, produces tapes of UFO, Thunderbirds, Captain Scarlet (under the
title "Captain Scarlet and the Mysterons", Stingray (yuk), and, of course,
the Prisoner. Each tape that I have seen contains two episodes of the
appropriate program. All cost less than UKL10.
What proportion of the total output of these programmes is available I can't
say, except for the Prisoner (100%).

Warning for foreign readers:
These tapes are VHS-PAL. According to "Which?" they work in Australia,
New Zealand, Europe except France, South Africa, and the Middle East, but not
North America.
#! rnews 1077
Path: alberta!mnetor!uunet!mcvax!ukc!stl!stc!root44!jgh
From: jgh@root.co.uk (Jeremy G Harris)
Newsgroups: comp.protocols.tcp-ip
Subject: Subnetting questions
Keywords: subnet ethernet
Message-ID: <498@root44.co.uk>
Date: 11 Dec 87 10:25:23 GMT
Organization: Root Computers Ltd., London, England
Lines: 27

A whole bunch of questions:


Does anybody run multiple subnets on a single Ethernet?

    If so, do you use subnet broadcasts or net broadcasts?
    Do you find it worthwhile to use ethernet multicast for
    subnet broadcasts? How do you assign the multicast addresses?
    For what purposes do you still use net broadcast?

    Should redirects be provided by an inter-subnet gateway,
    when both subnets are on the same Ethernet?


What are the semantics of 'ICMP redirect to net' in a subnettted environment?


Does anybody run multiple classes of subnet on a single net?

    Does the mechanism proposed in rfc950 ( ICMP broadcasts to
    discover the subnet mask ) still work? Do you use it?


Thanks for your time
    Jeremy
-- 
Jeremy Harris			jgh@root.co.uk
#! rnews 1006
Path: alberta!mnetor!uunet!mcvax!ukc!stl!stc!root44!hrc63!nwh
From: nwh@hrc63.co.uk (Nigel Holder Marconi)
Newsgroups: comp.unix.wizards
Subject: Re: /dev/swap - possibility of it being a ramdisk
Summary: depends on your system ?
Keywords: /dev/swap
Message-ID: <476@hrc63.co.uk>
Date: 11 Dec 87 10:09:05 GMT
References: <712@qetzal.UUCP> <16869@topaz.rutgers.edu>
Organization: GEC Hirst Research Centre, Wembley, England.
Lines: 12


I have just added some extra memory to a Sun 3.  Unfortunately, it did
not increase the usable amount of virtual memory.  I have been informed
(not by Sun I hasten to add), that 4.x will only allocate memory up to
the disk swap space size.  Adding more memory will speed things up but will
not increase your total usable virtual memory size (this is achieved by
increasing the swap space).  I was also informed that system V does not
inforce this type of restriction.


Nigel Holder			UK JANET:       yf21@uk.co.gec-mrc.u
				ARPA:           yf21%u.gec-mrc.co.uk@ucl-cs
#! rnews 781
Path: alberta!mnetor!uunet!mcvax!enea!luth!jem
From: jem@sm.luth.se (Jan Erik Mostr|m)
Newsgroups: comp.sys.mac,comp.sys.mac.hypercard
Subject: Hypercard/CD-ROM
Message-ID: <902@luth.luth.se>
Date: 11 Dec 87 11:31:13 GMT
Reply-To: Jan Erik Mostr|m <jem@luth.luth.se>
Organization: University of Lulea, Sweden
Lines: 8
Xref: alberta comp.sys.mac:10017 comp.sys.mac.hypercard:200
UUCP-Path: {uunet,mcvax}!enea!luth.luth.se!jem




Is there someone out there who has experience with Hypercard and CD-ROM.
I would appreciate any information (and especially about Mac II/CD-ROM).
-- 
Jan Erik Mostrom     | {uunet,mcvax}!enea!luth!jem       | Mors certa,
University of Lulea  | jem@sm.luth.se                    | vita incerta
Sweden               | jem@luth.UUCP                     |
#! rnews 1535
Path: alberta!mnetor!uunet!mcvax!enea!diab!pf
From: pf@diab.UUCP (Per Fogelstrom)
Newsgroups: comp.arch
Subject: Re: Why is SPARC so slow?
Summary: Yet another "super processor".
Message-ID: <344@ma.diab.UUCP>
Date: 11 Dec 87 13:59:12 GMT
References: <1078@quacky.UUCP> <8809@sgi.SGI.COM> <6964@apple.UUCP>
Reply-To: pf@ma.UUCP (Per Fogelstrom)
Organization: Diab Data AB, Taby, Sweden
Lines: 16

Well, the history repeats once again. A new RISC chip is launched and peopels
expectations reaches new "high scores". A few years ago there was another risc
chip set brougth to the market, called the Clipper. This processors performence
was climed to sweep all competitors off the sceene. Often compared to the
DEC 8x00 computers. For this chip set the picture has cleared now. The perfor-
mence range is not much more than can be achived with a 16-20 Mhz 68020. The
most i have seen of the 33Mhz versions is one running at room temprature.
Intergraph is one of the companys who is still using the Clipper (They recently
bought the rights for the chip set from NS/Fairchild) . From what i recall they
throw out the NS32032 for the Clipper. Well they could have had 2-3 times the
clipper performance with the NS32532 today. And they called the buy a bargin !
It's not suprising that the MIPS 2000 gives most power/Mhz, The architecture has
evolved during many years, without a hard pressure from the marketing such as
'We must have it NOW!!!'. (John Mashey mayby has another opinion, only my guess)

SO: Why is everybody so suprised ????!
#! rnews 1169
Path: alberta!mnetor!uunet!mcvax!mhres!jv
From: jv@mhres.mh.nl (Johan Vromans)
Newsgroups: comp.unix.questions
Subject: Re: Finding Files
Summary: looking everywhere
Message-ID: <1503@mhres.mh.nl>
Date: 12 Dec 87 16:08:12 GMT
References: <205700003@prism> <4441@ihlpg.ATT.COM>
Organization: Multihouse N.V., The Netherlands
Lines: 21

In article <205700003@prism> billc@prism.UUCP writes:
>
>	Right now, to find a file somewhere under my current directory,
>	I use the following alias:
>
>	    alias	where	"find \$cwd -name \!* -exec echo {} \;"
> .. etc ..

On our systems, a small cron script executes every night the following
command:

	find / -print > /dirfile

Finding a file somewhere can be done by grepping in the /dirfile.
Of course, the contents of /dirfile are not really up-to-date, but this is
just a minor drawback. "find" on the whole system (including mounted disks)
takes more than an hour, a grep in /dirfile much less than a minute.
-- 
Johan Vromans                              | jv@mh.nl via European backbone
Multihouse N.V., Gouda, the Netherlands    | uucp: ..{uunet!}mcvax!mh.nl!jv
"It is better to light a candle than to curse the darkness"
#! rnews 904
Path: alberta!mnetor!uunet!mcvax!mhres!jv
From: jv@mhres.mh.nl (Johan Vromans)
Newsgroups: comp.os.vms
Subject: Re: Are VMS and VAX synonymous?
Summary: NO
Message-ID: <1504@mhres.mh.nl>
Date: 12 Dec 87 16:55:05 GMT
References: <8712111910.AA18210@ucbvax.Berkeley.EDU>
Organization: Multihouse N.V., The Netherlands
Lines: 11

In article <8712111910.AA18210@ucbvax.Berkeley.EDU> "ERI::SMITH" <smith%eri.decnet@mghccc.harvard.edu> writes:
>But someone who thinks VAX and VMS are synonymous
>MAY POSSIBLY also be expressing a philosophical stance.

The only thing you can do between "#ifdef vax" and its corresponding "#endif"
is conclude that you are running on a big-endian machine ....

-- 
Johan Vromans                              | jv@mh.nl via European backbone
Multihouse N.V., Gouda, the Netherlands    | uucp: ..{uunet!}mcvax!mh.nl!jv
"It is better to light a candle than to curse the darkness"
#! rnews 691
Path: alberta!mnetor!uunet!mcvax!enea!tut!jh
From: jh@tut.fi (Juha Hein{nen)
Newsgroups: comp.lang.scheme
Subject: Re: Request for MacScheme source for SCOOPS
Message-ID: <2108@korppi.tut.fi>
Date: 12 Dec 87 07:32:39 GMT
References: <8712101554.AA15940@ucbvax.Berkeley.EDU>
Reply-To: jh@korppi.UUCP (Juha Hein{nen)
Organization: Tampere University of Technology, Finland
Lines: 10

MacScheme doesn't have enviroments (atleast my version doesn't).  It
would be straightforward to port SCOOPS if somebody first provides
environments.  The hacks provided with MacScheme distribution are not
enough.

-- 
	Juha Heinanen
	Tampere Univ. of Technology
	Finland
	jh@tut.fi (Internet), tut!jh (UUCP)
#! rnews 643
Path: alberta!mnetor!uunet!mcvax!enea!diab!pf
From: pf@diab.UUCP (Per Fogelstrom)
Newsgroups: comp.arch
Subject: Re: Zilog Z320 32-bit chip
Keywords: 80,000 vaporware model
Message-ID: <345@ma.diab.UUCP>
Date: 12 Dec 87 11:15:23 GMT
References: <1911@ho95e.ATT.COM> <9071@utzoo.UUCP> <3521@aw.sei.cmu.edu> <485@PT.CS.CMU.EDU>
Reply-To: pf@ma.UUCP (Per Fogelstrom)
Organization: Diab Data AB, Taby, Sweden
Lines: 3

The Z80,000 was put on market just about 8 months ago. It newer reached the
target specification (e.g. clock speed) and the performence was not impressive.
It has some nice things, but as someone pointed out, to late ..........
#! rnews 884
Path: alberta!mnetor!uunet!mcvax!diku!daimi!erja
From: erja@daimi.UUCP (Erik Jacobsen)
Newsgroups: comp.lang.modula2
Subject: Re: Modula II on IBM PC with HALO graphics
Keywords: Modula IBM HALO graphics
Message-ID: <1253@daimi.UUCP>
Date: 12 Dec 87 13:13:50 GMT
References: <17237@glacier.STANFORD.EDU>
Reply-To: erja@daimi.UUCP (Erik Jacobsen)
Organization: DAIMI: Computer Science Department, Aarhus University, Denmark
Lines: 10

jbn@glacier.STANFORD.EDU (John B. Nagle) asks in <17237@glacier.STANFORD.EDU>
> Some questions on Logitec Modula II:
> 
> 1.  Are subranges assigned space appropriately?  In particular,
> does 0..255 occupy only one byte?  

No, subranges occupy the same amount of space as the type they are
a subrange of. E.g. 0..255 will occupy two bytes. You may use a
CHAR or a BYTE, and convert to and from CARDINAL everytime you need
to do some caluculations.
#! rnews 869
Path: alberta!mnetor!uunet!mcvax!unido!tub!stx
From: stx@tub.UUCP (Stefan Taxhet)
Newsgroups: comp.text,comp.sources.wanted
Subject: MS-WORD to Q-ONE
Keywords: MS-WORD Q-ONE DCA
Message-ID: <319@tub.UUCP>
Date: 11 Dec 87 18:23:35 GMT
Organization: Technical University of Berlin, Germany
Lines: 19
Xref: alberta comp.text:1346 comp.sources.wanted:2722


We're looking for a document conversion program.
It should translate MS-Word- to Q-ONE-documents.

Q-ONE offers conversions to several formats as:
Fortune:Word, Wang, IBM's DCA (RFT,FFT)
Therefor  programs to interchange documents between
MS-Word and these format would also help us.

Thanks in advance

Stefan Taxhet,
Communications and Operating Systems Research Group
Technical University of Berlin

UUCP: ...!pyramid!tub!stx (From the US)
      ...!mcvax!unido!tub!stx (From Europe)

BITNET: stx@db0tui6.BITNET
#! rnews 1235
Path: alberta!mnetor!uunet!mcvax!unido!rmi!kkaempf
From: kkaempf@rmi.UUCP (Klaus Kaempf)
Newsgroups: comp.sys.amiga
Subject: Breaking the 54MB limit on HardDisks
Keywords: BitMap, Blocksize, filehandler.h
Message-ID: <821@rmi.UUCP>
Date: 12 Dec 87 12:19:32 GMT
Reply-To: kkaempf@rmi.UUCP (Klaus Kaempf)
Organization: RMI Net, Aachen, W.Germany
Lines: 19



Well, maybe that i've overlooked something really important, but i don't
see the 54MB limit with the AmigaDOS.
About a yaer ago, when there was no mount command, somebody from CATS
posted a sample device driver that mounted itself. It set up a device
structure which described the layout of the device. This structure is
now documented in dos/filehandler.h. One field in this structure holds
the number of longwords per block of this device. This is always set
to 128, giving 512 Bytes per Block.
Now, if i set this to 256 (1024 Bytes per Block), i should be able to
increase the disk limit to 108MB.
Apparently, AmigaDOS supports larger blocksizes. Just have a look into
the AmigaDOS Manual from Bantam. All block-layouts are described relative
to a 'SIZE', nowhere is said that SIZE is fixed to 128 !

So where is the problem ??? (Please, send no flames, only facts !)

Klaus
#! rnews 2545
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Getting rid of _cleanup (finally)
Message-ID: <1783@botter.cs.vu.nl>
Date: 13 Dec 87 11:56:59 GMT
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 97

There was a lot of discussion about how to get rid of my calls to _cleanup
earlier.  Here is the solution that I finally adopted.    The following commands
should do the job.
  cc -c -LIB exit.c putc.c
  ar r /usr/lib/libc.a exit.c putc.c
  ar x /usr/lib/libc.a cleanup.s
  ar d /usr/lib/libc.a cleanup.s
  ar bfork.s /usr/lib/libc.a cleanup.s

This requires the new archiver posted a while back (for the b option).
It also assumes that putting cleanup before fork.s will include cleanup.s
after exit.s and putc.s (check this).

Andy Tanenbaum (ast@cs.vu.nl)


: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
: --------------------------- cut here --------------------------
PATH=/bin:/usr/bin
echo Extracting \e\x\i\t\.\c
sed 's/^X//' > \e\x\i\t\.\c << '+ END-OF-FILE '\e\x\i\t\.\c
X#include "../include/lib.h"
X
XPUBLIC int (*__cleanup)();
X
XPUBLIC int exit(status)
Xint status;
X{
X  if (__cleanup) (*__cleanup)();
X  return callm1(MM, EXIT, status, 0, 0, NIL_PTR, NIL_PTR, NIL_PTR);
X}
+ END-OF-FILE exit.c
chmod 'u=rw,g=r,o=r' \e\x\i\t\.\c
set `sum \e\x\i\t\.\c`
sum=$1
case $sum in
11315)	:;;
*)	echo 'Bad sum in '\e\x\i\t\.\c >&2
esac
echo Extracting \p\u\t\c\.\c
sed 's/^X//' > \p\u\t\c\.\c << '+ END-OF-FILE '\p\u\t\c\.\c
X#include "../include/stdio.h"
X
Xextern int (*__cleanup)();
Xextern int _cleanup();
X
Xputc(ch, iop)
Xchar ch;
XFILE *iop;
X{
X	int n,
X	didwrite = 0;
X
X	if (testflag(iop, (_ERR | _EOF)))
X		return (EOF); 
X
X	if ( !testflag(iop,WRITEMODE))
X		return(EOF);
X
X	if ( testflag(iop,UNBUFF)){
X		n = write(iop->_fd,&ch,1);
X		iop->_count = 1;
X		didwrite++;
X	}
X	else{
X		__cleanup = _cleanup;
X		*iop->_ptr++ = ch;
X		if ((++iop->_count) >= BUFSIZ && !testflag(iop,STRINGS) ){
X			n = write(iop->_fd,iop->_buf,iop->_count);
X			iop->_ptr = iop->_buf;
X			didwrite++;
X		}
X	}
X
X	if (didwrite){
X		if (n<=0 || iop->_count != n){
X			if (n < 0)
X				iop->_flags |= _ERR;
X			else
X				iop->_flags |= _EOF;
X			return (EOF);
X		}
X		iop->_count=0;
X	}
X	return(ch & CMASK);
X}
X
+ END-OF-FILE putc.c
chmod 'u=rw,g=r,o=r' \p\u\t\c\.\c
set `sum \p\u\t\c\.\c`
sum=$1
case $sum in
49878)	:;;
*)	echo 'Bad sum in '\p\u\t\c\.\c >&2
esac
exit 0
#! rnews 1120
Path: alberta!mnetor!uunet!husc6!mit-eddie!uw-beaver!cornell!svax!beck
From: beck@svax.cs.cornell.edu (Micah Beck)
Newsgroups: comp.windows.x
Subject: Document previewing using Xps
Message-ID: <1898@svax.cs.cornell.edu>
Date: 14 Dec 87 13:25:54 GMT
Reply-To: beck@svax.cs.cornell.edu (Micah Beck)
Distribution: comp
Organization: Cornell Univ. CS Dept, Ithaca NY
Lines: 18

In article <6224@jade.BERKELEY.EDU> shipley@web1d.berkeley.edu () writes
on the subject of troff previewing under X:

>The other thing to try is some version of TROFF which can speak PostScript(tm)
>which you can then feed through one of the several Xps programs floating
>around -- these are PostScript(tm) interpreter/previewers for Xwindows.

I've not been very successful in getting Goswell's Xps to preview documents.
The Postscript file generated from TeX DVI files by dvi2ps and from Ditroff
files by the Transcript psdit program both cause it to choke, although in
different ways.

Is anyone using Xps successfully for TeX or Ditroff previewing?  Is there some
trick?

Micah Beck
Cornell Dept of Computer Science
beck@svax.cs.cornell.edu
#! rnews 1332
Path: alberta!mnetor!uunet!mcvax!botter!ast
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: Hard disk partitions?
Message-ID: <1784@botter.cs.vu.nl>
Date: 13 Dec 87 12:13:15 GMT
References: <5500001@ucf-cs.ucf.edu>
Reply-To: ast@cs.vu.nl (Andy Tanenbaum)
Organization: VU Informatica, Amsterdam
Lines: 21

In article <5500001@ucf-cs.ucf.edu> tony@ucf-cs.ucf.edu writes:
>If partition 1 is set up for DOS and 2 for Minix, with #2 mounted under
>/usr, Minix crashes unpredictably.  

One thing to remember is that the partition size for partition 1 is one
smaller than for partition 2.

Another possibility is that the MINIX fdisk and the DOS fdisk don't agree
on the meaning of the partition table.  If everyone would create their
partitions from lowest cylinder to highest there would be no ambiguity.
However, if the order in the partition table is different from the cylinder
order, there are at least three interpretations.
  1. Table slot 1 is partition 1
  2. Innermost cylinder is partition 1
  3. Outermost cylinder is partition 1
I believe that the combination of MINIX, DOS, XENIX and Microport together
exhaust the entire list of possibilities.  I don'know if this is related
to your problem (which I otherwise can't understand), but it is worth 
keeping in mind.

Andy Tanenbaum (ast@cs.vu.nl)
#! rnews 873
Path: alberta!mnetor!uunet!mcvax!lambert
From: lambert@cwi.nl (Lambert Meertens)
Newsgroups: sci.math
Subject: Re: Fixed Points
Message-ID: <146@piring.cwi.nl>
Date: 13 Dec 87 12:09:54 GMT
References: <2269@ihuxv.ATT.COM>
Organization: CWI, Amsterdam
Lines: 14

In article <2269@ihuxv.ATT.COM> eklhad@ihuxv.ATT.COM (K. A. Dahlke) writes:
) If a continuous function maps the unit square into itself, must it have a
) fixed point? [...]
) I seem to remember there is some theorem in topology,
) without resorting to snakes, that says there is always a fixed point
) whenever a closed region in a metric space is continuously mapped into itself.

Brouwer's Fixed Point Theorem states that a continuous mapping of an n-cube
into itself has a fixed point.  This extends, obviously, to any region
homeomorphic to an n-cube.

-- 

Lambert Meertens, CWI, Amsterdam; lambert@cwi.nl
#! rnews 1075
Path: alberta!mnetor!uunet!mcvax!unido!rmi!zentrale
From: zentrale@rmi.UUCP (RMI Net)
Newsgroups: rec.ham-radio
Subject: Re: My PC generates RFI
Message-ID: <822@rmi.UUCP>
Date: 13 Dec 87 10:03:45 GMT
References: <12354296992.20.QUALCOMM@A.ISI.EDU>
Reply-To: dl3no@rmi.UUCP (Rupert Mohr)
Organization: RMI Net, Aachen, W.Germany
Lines: 21

In article <12354296992.20.QUALCOMM@A.ISI.EDU> QUALCOMM@A.ISI.EDU (Franklin Antonio) writes:
: >  I'd like to know of some ways to reduce interference to my...
: 
: All PCs generate RFI to some degree.  In general, the "clones" are worse
: than the brand name "IBM", "COMPAQ", etc.  The Macintosh is relatively
: quiet.
: 

In general: I would not believe that... (But it may be, that some
IBM's are as quiet as a clone...)

We have a good mixture of various PCs here...

Regarding my recent posting on RFI of my PK-232:
The PK-232 was innocent. It was the old power supply which interfered
exactly on 80m and 40m with S9 and 20m with S6...

-rm

P.S. nevertheless: PC's nowadays are much more quiet than those times
of TRS-80 (sigh).
#! rnews 1629
Path: alberta!mnetor!uunet!mcvax!unido!rmi!zentrale
From: zentrale@rmi.UUCP (RMI Net)
Newsgroups: rec.ham-radio
Subject: Re: some SWL questions
Message-ID: <823@rmi.UUCP>
Date: 13 Dec 87 10:18:23 GMT
References: <38c9774f.44e6@apollo.uucp> <871201110223.1.ED@BLACK-BIRD.SCRC.Symbolics.COM>
Reply-To: dl3no@rmi.UUCP (Rupert Mohr)
Organization: RMI Net, Aachen, W.Germany
Lines: 38

In article <871201110223.1.ED@BLACK-BIRD.SCRC.Symbolics.COM> Ed@MEAD.SCRC.SYMBOLICS.COM (Ed Schwalenberg) writes:
: 
:     Date: 30 Nov 87 15:30:00 GMT
:     From: apollo!nelson_p%apollo.uucp@eddie.mit.edu
: 
:        Is there a detailed single-source of info on what I might 
:        hear as I tune around the bands?   The much vaunted World
:        Radio and TV Handbook just covers broadcasting, which I
:        have little interest in.
: 
: The second source is the Klingenfuss Guide to Utility Stations.
: This is harder to come by, but is advertised in RDI.

I just got the 6th edition (1988), which is VERY good. You can
get it directly :

Klingenfuss, Guide to Utility Stations, 6th Edition

Klningenfuss Publications
Hagenloher Str. 14
D-7400 Tuebingen
Fed.Rep.Germany
Tel. (+41) 7071 62830

Price: DM 60  (abt. $ 35) maybe plus handling.
They are very fast! I received it two days after ordering by telephone.
They also have an quarterly update Service.

You find a complete listing sorted by frequency an different listings
sorted by different services:
press by time,
fax  alphebetically with time schedule

addresses, codes, commercial call signs, telegram formats etc.

ALL in English, 500 pages with correct entries......

Rupert
#! rnews 1503
Path: alberta!mnetor!uunet!husc6!cmcl2!rutgers!orstcs!mist!koff
From: koff@mist.cs.orst.edu (Caroline N. Koff)
Newsgroups: rec.arts.startrek
Subject: Troi's outfit
Message-ID: <1501@orstcs.CS.ORST.EDU>
Date: 14 Dec 87 13:35:02 GMT
References: <1008@percival.UUCP> <275@hi3.aca.mcc.com.UUCP> <2032@charon.unm.edu> <2432@homxc.UUCP> <1987Dec12.230124.16416@gpu.utcs.toronto.edu> <2216@nicmad.UUCP>
Sender: netnews@orstcs.CS.ORST.EDU
Reply-To: koff@mist.UUCP (Caroline N. Koff)
Distribution: na
Organization: Oregon State Universtiy - CS - Corvallis, Oregon
Lines: 17

If people are noticing and mentioning about Yar's breasts, why not
also mention about Troi's low cut outfit!!  Why does it need to be
so low cut that it shows her crevice?  Who is she trying to impress?
Do you think that the women in the future, working with men, will be
trying to dress sexy?  If so, what about the men?  Why not let them
show off their body too to make things even?   I think that the
producers, or whoever is in charge of outfits, and character development 
is making a contemporary decision regarding the issue of how people 
will dress in the future.  I.e. he/she thinks that female will be 
trying to attract males' attention by bringing out her femininity, 
but not vice versa, which is the current social behavior.
Or, perhaps the producers are just being comformists with bunch of 
other tv shows + movie producers by keeping females attractive 
towards men...   

--Caroline Koff
koff!cs.orst.edu@cs.net.relay
#! rnews 1028
Path: alberta!mnetor!uunet!mcvax!hafro!krafla!frisk
From: frisk@rhi.is (Fridrik Skulason)
Newsgroups: comp.sys.ibm.pc
Subject: Identifying VGA
Message-ID: <100@krafla.rhi.is>
Date: 13 Dec 87 11:39:28 GMT
Reply-To: frisk@rhi.UUCP (Fridrik Skulason)
Organization: University of Iceland (RHI)
Lines: 19

In the november issue of Dr.Dobb's Journal there is an article on how to
identify the video adaptor in your PC. They cover EGA,CGA,MDA,Compaq and
Hercules(mono).

What I need is information on how to find out if a VGA (or a PGA) adaptor
is installed.

Also - can someone tell me how to obtain the current cursor position directly
from these adaptors. That is - I need the location of the 6845 registers.

The reason I can not use the INT10 function provided is that my program has
to work with some TSR programs that access the hardware directly.

Thanks... 
-- 
         Fridrik Skulason          University of Iceland
         UUCP  frisk@rhi.uucp      BIX  frisk

     This line intentionally left blank ...................
#! rnews 805
Path: alberta!mnetor!uunet!husc6!cmcl2!rutgers!orstcs!mist!koff
From: koff@mist.cs.orst.edu (Caroline N. Koff)
Newsgroups: rec.arts.startrek
Subject: Requesting ST:TOS episode directors and writers guide
Message-ID: <1502@orstcs.CS.ORST.EDU>
Date: 14 Dec 87 13:38:05 GMT
References: <1008@percival.UUCP> <275@hi3.aca.mcc.com.UUCP> <2032@charon.unm.edu> <2432@homxc.UUCP> <1987Dec12.230124.16416@gpu.utcs.toronto.edu> <2216@nicmad.UUCP>
Sender: netnews@orstcs.CS.ORST.EDU
Reply-To: koff@mist.UUCP (Caroline N. Koff)
Distribution: na
Organization: Oregon State Universtiy - CS - Corvallis, Oregon
Lines: 6

Has anybody ever posted or have a complete list of directors and writers
for each of the ST:TOS episodes?  If so, may I have a copy?  Thanks in
advance.

--Caroline Koff
koff!cs.orst.edu@cs.net.relay
#! rnews 1125
Path: alberta!mnetor!uunet!mcvax!enea!sems!olof
From: olof@sems.SE (Olof Backing)
Newsgroups: comp.emacs
Subject: Problems with uEmacs 3.9e and OS-9/68K C.
Message-ID: <207@sems.SE>
Date: 13 Dec 87 13:00:39 GMT
Organization: Sems AB, Stockholm, Sweden
Lines: 32

I have a problem when I try to compile the latest version of
microEmacs, ie. 3.9e. The problem occurs in file 'bind.c' at lines
602, 609 and 642, 650 respectively. 

It's the following lines that causes the error:

600: int (*getbind(c))()
601:
602: int c;
603:
604: {

The compiler reports an error at line 602 with 'not an argument'. The
same thing happens at line 642;

639: int (*fncmatch(fname))()
640:
641:
642: int fname;
643:
644: {

Since my experiences aren't the very best i C sofar, I would like to
get some hints on what to do. Maybe Kim Kempf at Microware has the
answer for me. Feel free to overwelm me with hints. Until then (when I
recieve the hints...), CU all!


-- 
            ADDRESS: Havrevagen 14, S-175 43  Jarfalla, Sweden
            PHONE  : (46) 758 33941, 35516 home
            UUCP   :  ...{uunet,mcvax,ukc,unido}!enea!sems!olof 
#! rnews 1708
Path: alberta!mnetor!uunet!husc6!yale!dwald
From: dwald@yale-zoo-suned..arpa (David Wald)
Newsgroups: rec.arts.startrek
Subject: Re: Hide & Q notes and comments and notes and comments and....<<S
Message-ID: <20252@yale-celray.yale.UUCP>
Date: 14 Dec 87 04:29:38 GMT
References: <19962@yale-celray.yale.UUCP> <17300072@silver> <1838@leadsv.UUCP>
Sender: root@yale.UUCP
Reply-To: dwald@yale-zoo-suned.UUCP (David Wald)
Distribution: na
Organization: Yale University Computer Science Dept, New Haven CT
Lines: 27

In article <1838@leadsv.UUCP> lilly@leadsv.UUCP (Harriette Lilly) writes:
>
>In article <17300072@silver>, sl131008@silver.bacs.indiana.edu writes:
>> /* Written  7:19 pm  Dec  7, 1987 by sl131008@silver.UUCP in silver:rec.arts.startrek */
>> /* ..ditto x 7.....
>> /* Written  9:12 pm  Dec  6, 1987 by dwald@yale in silver:rec.arts.startrek */
>> /* ---------- "Re: Hide & Q notes and comments <<S" ---------- */
>> In article <2328@homxc.UUCP> scott@homxc.UUCP (Scott Berry) writes:
...
>> David Wald                                                   dwald@yale.UUCP
...
>> /* End of text from silver:rec.arts.startrek */
>> /* ditto x 8
>
>
>       Ummm, are you lost?...

I was a bit puzzled by this too, since I didn't think my article so
brilliant that anyone would want to repost it eight times.  If anyone
finds out what happened, could they please send me mail?


We now return you to your regularly scheduled nonsense...
============================================================================
David Wald                                                   dwald@yale.UUCP
						      waldave@yalevmx.bitnet
============================================================================
#! rnews 761
Path: alberta!mnetor!uunet!mcvax!enea!sems!olof
From: olof@sems.SE (Olof Backing)
Newsgroups: rec.games.misc
Subject: Larn at dungeon level 10.
Message-ID: <208@sems.SE>
Date: 13 Dec 87 18:51:50 GMT
Organization: Sems AB, Stockholm, Sweden
Lines: 12

Well folks, I've reached to master warlord (lvl 17, ~550000 Exp). To
my great dis-something, I haven't found any ladder down to level 11.
Somewhere back in my human brain, I recall that I've read something
about how to further down in the dungeon. What do I do ?!. Please give
me a hint.


-- 
WHOAMI : Olof Backing                               !
WHERE  : Havrevagen 14, S-175 43  Jarfalla, Sweden  !
PHONE  : + (46) 758 33941, 35516                    !
UUCP   :  ...{uunet,mcvax,ukc,unido}!enea!sems!olof !
#! rnews 1631
Path: alberta!mnetor!uunet!husc6!yale!dwald
From: dwald@yale-zoo-suned..arpa (David Wald)
Newsgroups: rec.arts.startrek
Subject: Re: Terralian Ship in "Haven"
Keywords: ST:TNG
Message-ID: <20253@yale-celray.yale.UUCP>
Date: 14 Dec 87 04:36:39 GMT
References: <5243@zen.berkeley.edu> <9615@ufcsv.cis.ufl.EDU>
Sender: root@yale.UUCP
Reply-To: dwald@yale-zoo-suned.UUCP (David Wald)
Distribution: na
Organization: Yale University Computer Science Dept, New Haven CT
Lines: 19

In article <9615@ufcsv.cis.ufl.EDU> jco@beach.cis.ufl.edu () writes:
>In article <5243@zen.berkeley.edu> timlee@cory.Berkeley.EDU (Timothy J. Lee) writes:
>>Did anyone think that the Terralian ship was pretty big for something that
>>was built by a group of people whose technology approximated late 20th
>>century Earth?
>
>It was my understanding from the show that the people of 20th century
>earth could build a virus that could wipe out a planet.  This did NOT
>mean that they (the Terralians) where of the 20th century tech level.

There was more to the 20th century reference than that, however.
Dr. Crusher made the point that, since they were only at the technology
level of ~20th century Earth, it was easy for the disease to get out of
control and spread over the planet.  The implication was that if they
were more advanced the disease would not have wiped out the entire world.
============================================================================
David Wald                                                   dwald@yale.UUCP
						      waldave@yalevmx.bitnet
============================================================================
   @     <
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^ЮnPPՀPpPP?     P;      1*  mQ  }Q  }\	Q  n
PqP@p~#+  a?  RdRPbPnRnTdTfTR`RPfs?  P`t?  PpP1p~kPPЭЭP1 |1|1 n1 nPpP~*  f7?  PpP1 nPpP~*  f$?  PpP1 nx   PpP~}*  f
?  PpP1 n  PpP~^*  f>  PpP1 n  PpP~?*  f>  PpPbn  PpP~!*  f>  PpPDn PpP~*  f>  PpP&ݭh&  P 	"=XwpP}O      ^1d  ݬnPxQ(QoO  AЎPxQ(Q[O     1o(  mVO  }NO  }\EO  O  PP/O  P$O  PѠ쭜1 ݏP   Ï`   ]PPO  Pݠ#  N  PPN  QPݏT@  ݏ    Ï`   ]P~PRQQSQdPPPP-PPʭPÏ`   ]Q QQQQQPÏ`   ]P~W  oE  ݭЎQСPPݏd@  -  ݭЎQСPPݏP   Ï`   ]PP,  ݭЎQСPP
~	6  	P֡1}M  h   ^1  ݬnPxQ(QM  AЎPxQ(QM    1m'  mM  }M  }\M  ԭݏP   Ïl   ]PP|M  Pݠ"  kM  PP_M  QPÏl   ]PQQA`-Ïl   ]PQQA`+ݏx@  ݏ    Ïl   ]PQQA`~PRQQSQdPP
PPP瑭P敭}Ïl   ]PQQA`䑭 [ݏ@  ݏ    ~PRQQSQdPP-
PQQP0QQPP葭P
PPP1~歐ЭP1 C  ݭЎQСPPݏ@  *  ݭЎQСPP
~	4  	P֡9C  ݭЎQСPPݏP   Ïl   ]PP*  ݭЎQСPP
~	T4  	P֡    Q孌ЭPЭ"έPPݭ("  P Pݭ"  PP1ЭP}OK  t   ^1  ݬnPxQ(Q K  AЎPxQ(QK    1w$  mK  } K  }\J  ЭP` %PE  1  PE  1  PvE  1  PUJ  1  PZE  |ݭ0!  Pd   3PP   
PD   PS   PW   1wPp   1xPk   Ps   Pw   1C}J     ^1  ݬnPxQ(QI  AЎPxQ(QI     1;#  mI  }I  }\I  lD  iD  aD  JI  ZD   +@  ݭЎQСPPݏ@  @(  ݭЎQСPP
~	1  	P֡{@  ݭЎQСPPݏ@  '  H  ~ݏ@  ݭЎQСPP$  ݭЎQСPP
~	~1  	P֡@  ݭЎQСPPݏ@  '  lC  ~ݏ@  ݭЎQСPP#  ݭЎQСPP
~	1  	P֡?  ݭЎQСPPݏ@  "'  C  ݏA  ݭЎQСPP5#  ݭЎQСPP
~	0  	P֡>?  ݭЎQСPPݏA  &  B  ~ݏ(A  ݭЎQСPP"  ݭЎQСPP
~	A0  	P֡>  ݭЎQСPPݏ,A  O&  7B  ~ݏ>A  ݭЎQСPPa"  ݭЎQСPP
~	/  	P֡}(G     ^1L  ݬnPxQ(QG  AЎPxQ(QF     3X   mF  }F  }\F  ݬ  }F     ^  ݬnPxQ(QF  AЎPxQ(QF   1   mvF  }nF  }\eF  ݏQ  fПQ  VԦԦԦC  VԦE  VV-VVPPPN  PPWԧԧV	VPPV}E     ^1` ݬnPxQ(QE  AЎPxQ(QE     1   mE  }E  }\E  VE  PPNE  ݏ8H  a  PRݏ8H    P!ݏ8H    Pݭ'   <  ݭ  PPPP}E     ^1W  ݬnPxQ(QD  AЎPxQ(QD  @ 1E  mD  }D  }\D  w?  J;  ݭЎQСPPݏBA  i#  ݭЎQСPP
~	-  	P֡Լլ_?  J;  ݭЎQСPPݏNA  #  ݭЎQСPP
~	,  	P֡ԼԼ1WЬPՠY>  J(;  ݭЎQСPPݏVA  "  ݭЎQСPP
~	K,  	P֡1 ЬPРխ1 2PPPЭPPP'>  x]PP2~  :  ݭЎQСPPݏbA  "  ݭЎQСPP]PP!  ݭЎQСPP
~	+  	P֡ЭЭPР쑭17ЭP1 1 s=  J9  ݭЎQСPPݏkA  e!  ݭЎQСPP
~	
+  	P֡]PPgЭVfԦԦԦЬV2PPP2PPP&ݭ  P 1^P1SP1NژЭP$ЬPЭ*ЭPЭݭ  P PPЭVЦPPЭc<  J8  ݭЎQСPP
ݏ|A  U   ݭЎQСPP
~	)  	P֡}NA      ^1h@ ݬ nPxQ(Q'A  AЎPxQ(QA     1}  mA  }@  }\@  @  PP@  nPpP~  pPnPnRfRPpP~  fPrPRpRpԭax@  PpPp@  Z;  PPR@  m@  QQQQQP4;  S@  Q(;  QQD@  QQQQQQQP1 7  @  ݏA  ݭЎQСPP*  c?  PpP~ݏA  ݭЎQСPP  p?  ~ݏA  ݭЎQСPP  ݭЎQСPP
~	[(  	P֡n:  1]PP2P?  ~B  6  ݭЎQСPP]PPI  ݭЎQСPP ~	'  	P֡ݬݏA  ݭЎQСPP:  ݭЎQСPP ~	'  	P֡ݬݏA  ݭЎQСPP  '6  >  ݏA  ݭЎQСPP  p~ݏA  ݭЎQСPP  ps>  ~ݏA  ݭЎQСPP  k>  F>  aT>  PpPL>  1-K>  d   -=>  PnPPeP">  R`#>  Rn$>  PfPRpR	>  +d   PnPPeP=  R`=  Rnd   PfPRpR=  8  1 25  p=  ~ݏA  ݭЎQСPP  ݭЎQСPPݏA    =  ݏA  ݭЎQСPP  pn=  ~ݏA  ݭЎQСPP  ݭЎQСPP)~	%  	P֡=  ,=  p=  7  -m4  ݭЎQСPP
~	%  	P֡}<  ,   ^1  ݬnPxQ(Q<  AЎPxQ(Q<     >.  m<  }<  }\<  ݏ   2~2~w}<     ^  ݬnPxQ(Qa<  AЎPxQ(QM<     1G  m@<  }8<  }\/<  ,  PЬQ`a1	r,  PЬQ`a1  \,  PЬQ`a1 !PP QQQQQP2PPPЬP 1 PP QQQQQP42PP
P0QQPP2PP
PQ
QQPQ0PPQЬPQJ2  ݭЎQСPPݏA    ݭЎQСPP
~	#  	P֡};     ^1  ݬnPxQ(Q:  AЎPxQ(Q:  @ 17  m:  }:  }\:  q5  1bM:  \VVKV1  ݭЎQСPPÏL   h:  PVQQQQPP)  V	VPPV1 VPPPV8V`1  ݭЎQСPPݏA    V	VPPVȑ9&1  ݭЎQСPPÏL   9  PQQQQPP  0  ݭЎQСPP:~	-"  	P֡ЬPݠݏA  ݭЎQСPPr  ݭЎQСPP
~	!  	P֡ԭЬPРխ1IЭVÏ   "9  PQQQQP`PÏ   9  QRRRRQPaÏL   8  PQQQQQPP2f~zPPPݭf8  PPQQP1 nPpP~kpP8  Pc,P8  RpP,nPpP~  pPnPpP~  pPT8  PnRdRfRcR$P;8  RpP$nPpP~R  pPnPpP~@  fP8  R`P 8  RpPPPЦ17  PPQQP1 խ1 nPpP~7  R`,P7  RpP,nPpP~  pPnPpP~  pP|7  PnRdRfRaR$Pc7  RpP$W7  PPI7  QP}?7  ,   ^1_@ ݬnPxQ(Q7  AЎPxQ(Q6  @ 1hg  m6  }6  }\6  8V6  V(V7Ï   ]PVQQQP`V	VPPV|,|$| ݬ-  ݭЎQСPP
~	  	P֡-  ݭЎQСPP)ݏA    ݭЎQСPP
~	  	P֡V5  V1 V7Ï   ]PVQQQQP`1 -  V~ݏB  ݭЎQСPP  Ï   ]PVQQQP`ݏ!B  ݭЎQСPP  Ï   ]PVQQQP`PnPPÏ   ]RVSSSSRbRnRRfRPpP~ݏ%B  ݭЎQСPPD  ݭЎQСPP
~	  	P֡V
VPPV1Ï   ]P4  QQQP`",  ݭЎQСPP
ݏ,B    ݏ:B  ݭЎQСPP  ݭЎQСPPݏ>B  c  ݏSB  ݭЎQСPPx  ݭЎQСPP
~	  	P֡+  ݭЎQСPPݏWB    p,~ݏuB  ݭЎQСPP  ݭЎQСPP
~	  	P֡+  ݭЎQСPPݏ~B    p~ݏB  ݭЎQСPP  ݭЎQСPP
~	  	P֡*  ݭЎQСPPݏB  ,  n   PpP~o
  pPnPpP~]
  pP2  PPPnPPdPfPpP~ݏB  ݭЎQСPP
  ݭЎQСPP
~	u  	P֡*  ݭЎQСPPݏB    n   PpP~  pPnPpP~  pP-2  PPPnPPdPfPa,R`RPpP~ݏB  ݭЎQСPPK
  ݭЎQСPP
~	  	P֡T)  ݭЎQСPP
~	  	P֡n   PpP~
  pPl1  PdPpP~O  pP(  ݭЎQСPPݏB  q  nPcPRpR~XpPnPpP~DpPnP`PnRbRPpP~%bPbPpP~ݏ	C  ݭЎQСPP7  ݭЎQСPP
~	  	P֡@(  ݭЎQСPPݏC    p$~ݏ.C  ݭЎQСPP  ݭЎQСPP
~	E  	P֡}0    ^1@ ݬnPxQ(Qo0  AЎPxQ(Q[0      3	  Ь0  Ь0       	    1	  m0  }0  }\
0   8/  /  |/  /  |/   `*  
/  ݏQ  
(l,  *  ,  VPPVP/  VbV?/  VPPPN  PPWWPPWPPWPPWPPW2/  ~VPPPP8L  PݠcV	VPPV)  PP)  .  Q)  QQ.  QQQQQQQP)  QQQP
.  .  PPPN  PPVfr.  Цn.  Цj.  V.  PPPP8L  PPVA.  ЦG.  ?)  ЭP1W2.  2.  ~d.  8.  PP.  PP2-  PPP2-  ~V$-  PP-  -  2-  ~1 -  P2-  QPQ2-  ~o-  5-  2s-  ~z-  2f-  PPP2R-  ~1R-  G-  PP:-  P2/-  QQPP2#-  ~K[   -  PP-  PP2,  P,  PP2,  ~#ݭ  P 1P1Pݏ8H    P1 ,$  ݭЎQСPPݏ7C    ,  ݏCC  ݭЎQСPP  ݭЎQСPP
~	0  	P֡#  ݭЎQСPPݏGC  >  *,  ݏSC  ݭЎQСPPQ  ݭЎQСPP
~	  	P֡Z#  ݭЎQСPPݏWC  
  p+  ~ݏcC  ݭЎQСPP  n+  PgP+  RpR~ݏkC  ݭЎQСPP  ݭЎQСPP
~	2  	P֡1+  |}n+     ^18    Ь[ЬYѬ+  ݬo    xP+  P`ZY	j YPYP   Ь[ݫh  	ݫ    [          e$             ^ݬ  PP   :  ЭѭT   ЭJ   PPA   
PP2     ^Ь[ݫi  	ݫ     [)   P Ь[ <P@Q   [      P[   P   Ь[ <P@
   [ z  W   [   PP  Ь[ <P@  [ r  	ݫ     [P       "  
     Ѭݬ  "  %  ЬPݬݬݬ"  
   ^Ь[ݫ}  	ݫ  ݫݫ k+  ЫPݫx  ЫP<   kPPk֭ѭ 
	     ^ݏV    S    :߭-  nf"  p~A      t!    ݬ_       [1 ѫ1 իi@ݫX   ݫl  ݫ  ЫPݫ  ݫu  Pݫ  E   <P@  Ы[[1r[      ^u  Խѭ8H        3      
   E   s   ݬ  ݬ  P   [ 
ݫg  Ы[[    ЭP   ݼ   eZ  P pPpPqP+  r3  PqP"  "&  p  Pt+  .  PZVsP` VZb VeVVXuX  dPVuX  cVPR`VPfRPd  PPRRZZP    p~	   d  P pP!c&  pf<iPPZ   PqP     PZ   ZcPV`PfPVeVVXuXx  dPVuX  gPVPnZRd  R`RP     ׼ЬPРQ֠aaP
ݬݬ
      Ь[ЬZ!jЪP֪X``PZX
  PYXYP    ݬ\~ݬ  ЬPPP (  [a%  0  T%  P@X   [ݬ  PZZݬR    A  [  P[+       -  -  -  -  -  -  -  .  *.  <.  L.  X.  j.  z.  .  .  .  .  .  .  .  .  /  /  1/  E/  V/  e/  t/  /  /  /  /  /  /  Error 0 Not owner No such file or directory No such process Interrupted system call I/O error No such device or address Arg list too long Exec format error Bad file number No children No more processes Not enough core Permission denied Bad address Block device required Mount device busy File exists Cross-device link No such device Not a directory Is a directory Invalid argument File table overflow Too many open files Not a typewriter Text file busy File too large No space left on device Illegal seek Read-only file system Too many links Broken pipe Argument too large Result too large    ^Ь[ЬZԭլ05ЬjЪP֪`P	Zo   PYY׭֭ѭЭP  ^Ь[ЬZԭլ.3ЬYjЪP֪`Z~	  Y
֭ѭЭP    Ь[Pݏ     Pիߘ
P@;)  Ы[J  
  
  (
  P2 PPݫ
~  Pkkk k1aP֫    Ь[ի
ݫ  ЬЫk Ь[ZZZP  +    	

 !"#$ &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~T7RBdݭRN  P ֭S}TTPRPTSCRQSTP}TPRPPQR ЭP ^Ь[ЬЬ\ԭ<P[Q}TQURPRRP0rQ[Rܕ^U|Y|VPP X                                   y            $
          y  P11ȏ@   Z P11XPZPЌR: PbQURQ1'0123456789abcdef0123456789ABCDEFRSWRSWZWSVQUЌPRSPQAg VR|Ve;0Z1} լ1u SxPZXPPqW0qYʏ   ZlPP
n4
n 

n    
n 
nW8
n; WZ+qZ qWZXQUVWVVX&WQQH R]RRX(VaHa, a0X WQVSUQUXXYP ZZRWP	PXPY0)XYP7XYXP0RPR}TT0R֭}TYP1b1]0R RPYQPWP^, `RWnWP^Q0W^ЎQЌPP^Q1iȏ   Z1L Z1FZ1@Z1: ZZZZIiY>IY	HhX>HXZ1XZZ1Z
ЌYZYYЌXXXZX0XWWVWWWWPPnW# VWP֭WPH WxWP@QWVS00S, aVcc8Va0VUQnSW-WЭP0PVVPPVP(PacЭP, a0PcXPZ	Z.έPPXXPPX, a0PcXPPVVPPX(PacXP@ R]RRPPXPX, a0PcSUDeB+ XZX0 XWWWWPPnW֭WPP= WxWP@Z=Q&QVPPn8neVQZ1, 1%WVXЭ1P0PPX(WVPXQ0Z	Zu0e.UZ1Q0ZZXXXZ1.1+pU1 rUUURR;R RRƏ   R0 qPURRRRR
d   UR	R\   tPTUPUP		 t    UPUPXWюnWW	qU  P   pPT~M   SRRRR TRdcPSTRgPPRQRR(RSSA   QBb   T B      C      G @    M     [  u+pPB<   Vvӈb2>HQS'I[#,;
                         :ܒ X  ^Ь[PPYYX1 XX߭
~  PYj  ~  P    BЫZ֫   ZPѫPѬ
ZPPXPZ
~  PYZkn1mЫZ3[J  1xݏ     PZZYYX ZYYXZYZ
~%  PY2kZXY 1ЬP Ь[PʏPP@ЫZ:ZY3ZP2 PPkYZ
~  PY PP  V  [[   [[    Ь[Z<7[gPZ
~9   PZ
ݫ  ԫkZP     }   (  P   ^߭ݬ4   PPP            ݬݏ	t  ݬ     ݬݏt  ݬ     6       
  P    .(Z  z  $Z  r  l  o  ]  `  ~*  PYI  [N  k$jkkZjxYP[PZPxYP[PP[1 [Zk[[ZZ
  	[$Z  P     YPƏ   PxP   b  PZx  PZPPZx  ~@  PZZZ    PZP  x  PZPPjjs  $Z  g  1xYP[PT  ZM  E  H  k9  2  k[P Ь[[ZZZ  jPPj  ^Ь[	[[PPݬNPZZ[ZP[Z~   PYYYЭPЭQ`aЭP׭PZ[xYPZPP[xYPZP[PPy  @j   \
  ~\S^\_   A
  P8
    C   Ь#
  P  ЬPЬRRQ{RPPRPRPP         P  P                                                                                                                                                                                              @      1@rcϩ@cw1@rc1@rc1@rc1@rc1@rc1@rc1@rc        Unexpected option        (                        Error in numeric option: Options set for this run: k-length of strings: %0D d-trace option: %0D w-frequency of output: %0D p-prediction option: %0D s-display option: %0D Moveup call Ptr nil Ptr^.Up nil Scanned  New node created End MoveUp %10D  %11.4e  %6.3f %5D %5D %8D  %6.3f  %11.4e  %6.3f  ( %5D  %6.3f EF EL FF V ut of range in Decode    %0D Number of nodes at each level(and ratios) %3D %6D  %6.3f Total Counts: %0D   Total Transitions  %0D Enumeration of Sequence(bits)  %21.14e log2 c(s,b)                    %21.14e Escape characters              %21.14e TOTAL                          %21.14e Enumeration of Counts  %21.14e Fixed Frequency Enumeration  %21.14e Characters: %0D Codes Sent: %0D EntropySum:  %10.3e  %6.3f   @(#)ARGV.c 1.3 6/10/81  Argument to argv of %D is out of range
 @(#)GET.c 1.2 6/10/81   %s: Attempt to read, but open for writing
 %s: Tried to read past end of file
  @(#)HALT.c 1.3 6/10/81  Call to procedure halt
 @(#)NEW.c 1.3 6/10/81   Ran out of memory
  @(#)READC.c 1.2 6/10/81 %s: Attempt to read, but open for writing
 %s: Tried to read past end of file
  @(#)TEOF.c 1.3 6/10/81  Reference to an inactive file
  @(#)TEOLN.c 1.3 6/10/81 Reference to an inactive file
  @(#)UNIT.c 1.2 6/10/81  Reference to an inactive file
 %s: Reference to an inactive file
   @(#)ERROR.c 1.8 6/10/81 Label of %D not found in case
  @(#)IOSYNC.c 1.5 6/10/81    %s: Attempt to read, but open for writing
 %s: Tried to read past end of file
 %s: Tried to read past end of file
  @(#)PCEXIT.c 1.1 10/29/80   pC      
%1ld %s %04.2f seconds cpu time.
 statements executed in   @(#)PCLOSE.c 1.4 6/10/81    %s: Close failed
 Could not remove  @(#)PCSTART.c 1.5 6/10/81                                   8H                                                                                              8H  H  I                                                                                                                       R      J  H  I  T                                                                                  R      J  I  I  a                                                                                 R       K      I  a                                                                                 standard input standard output Message file @(#)PERROR.c 1.1 6/10/81    @(#)PFLUSH.c 1.1 10/29/80   @(#)UNWIND.c 1.2 3/7/81 =B.pBԝ`E=sM@      iD(/zCF:|+eVuCVuf<iA]ݬ@3e޸@;\)   glD)m݉	BвD(w@      2`AD~z|2D(w?[7r(5@3e1@rzUnknown error :  
  #       V  V                                                                                                                                                                                                                                                                                                                  L  <Z                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2kss0.make
#   Target:     kss0
#KSS0   APPLCDKS   A Q     n    APPLCDKS   A Q                 "                    GridLib.p
#               KSS0.p
#               KSS0.R
#               Library.p
#               PrinLib.p
#         KSS0  Version 21-Nov-87   ,CDKS   ICN#   L M NFREF   L M N   APPL      GRID     TEXT     #$19KSS0Knowledge Support SystemCopyright  1988 B R Gaines#$11V2B 24-Jan-88
#<10#1#= Heap#<10#1#= Largest Block#<10#1#= Stack,#@ KSS0 - Knowledge Support System - started/#@ KSS0 - Knowledge Support System - terminatedUntitledLogHelpWrap OffWrap OnZoom OffZoom On	Save TextSave Text As...
Print TextSave SelectionSave Selection As...Print SelectionSave PictureSave Picture As...
Print Picture   E Data name already in useSave Grid asSave Text asSave Picture as  - 'entityentities	attribute
attributesgridgridstitlepurposerangeUNB?LHPRHPE	anonymousnewusinguseroriginalsingularpluraltoforratingsDisplay#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P of #iAllNumbersTitleAutomatic saveBothNeither   b OKCancelPairTripleShow ##EShow ##ADoneQuitElicitFlipStatusNextMoreYesNoEditRate    xtest   &Elicitusing #1Elicitation using #1New elicitationUseSave grid asSave grid as#@ Elicit #i #p	#i-Elicit#p#pOK to delete #1?OK to delete #1 - #2?OK to flip #1 - #2?ACan you think of a relevant #a that distinguishes #1 from #2?FCan you think of a relevant #e that is #1 and #4 or #2 and #3?&Editing the evaluations of selected #e&Editing the evaluations on selected #aEntering #ENThink of about six #E that are relevant to your purpose of #p and press OK	Adding #e	Adding #aNew #eNew #aOpposite #a
#a of this #eopposite for this #e#Adding #a to distinguish pair of #E%Adding #a to distinguish triple of #ESimilarity between these twoDifference in this onefIn what way are two of the #E alike and different from the third. Click on the one which is different.Showing elicitation status)Click on a bold item to change or edit itBreaking match between #EBreaking match between #AUntitled#@ #i Terminated   q Welcome to KSS0Data#@ Session: #1Name and description0Please enter your name and a session descriptionOpen  / FOCUS#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@AllNumbersTitleEntity MatchesAttribute MatchesEntity LinksAttribute Links!#<3E#1#= linked to #>3E#2#= at #3)#<3#%1#4#1#= linked to #>3#%1#5#2#= at #3   ENTAIL#P: #i  Cutoff #1 #8 #93Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@Equivalence
EntailmentUsuallyProb.$#P Graph Structure (Cutoff #1) #8 #9-#P    Truth  #7 Information (Cutoff #1) #8 #9Information in #1)Entailments           #1 row -> #2 column)Information Reduction #1 row -> #2 column)Usually               #1 row -> #2 column    PRINCOM#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@AllTitleCorrelations)Percentage of variance for each componentAttribute LoadingsEntity Loadings   9SOCIO#9 Grids#@ #7#8-#P#8.#P#P Entity Analysis of #8#P Attribute Analysis of #8EXCHANGE Analysis of #8Attempted #P Analysis of #8#2 attributes in common#1 entities in common%#1 entities & #2 attributes in common
#7 with #6#7Calculating Mode EntitiesCalculating Mode AttributesShowing Mode EntitiesShowing Mode AttributesMode Entities at #1Mode Attributes at #1-Mode Entity #1: #2 entities in #3 grids at #42Mode Attribute #1: #2 attributes in #3 grids at #4#<6G#1E#2#=: #3#<6G#1A#2#=: #5#3 - #4
Listing GridsListing EntitiesListing Attributes
Showing LinksComparing Grids
Grid  Ent Att#1#<3G#2#=  #<3#3#= #<3#4#=  #52      #<3#1#= #<3#2#=  #3 Entities & #4 AttributesCommonTotalEntities
Attributes#<6G#1E#2#=: #3#<6G#1A#2#=: #3 - #4#<3E#1#=: #2#<3A#1#=: #2 - #3entity	attribute,G#1<:G#2 #3% over #4 (#5 #7-construed-by #6)!#<3#1#=: #2% >#3  #<6G#4A#5#=: #6(#<3#1#=: #2% >#3  #<6G#4A#5#=: #8#6 - #7#                    #<6G#1A#2#=: #3*                    #<6G#1A#2#=: #5#3 - #4construed-byconsistency-with<::Entity Links between GridsAttribute Links between Grids,#<3G#4#=#1#>3G#5#= #6% over #7 (#8 #3-#2 #9)/G#3:G#4 #5% over #6 (#1 #7-consistency-with #2)##<3#1#=: #2% >#3  #<3#%1##7#4#=: #5(#<3#1#=: #2% >#3  #<3#%1##7#4#=: #5 - #6   z OBJECT
#@ #P #i #p//#@ KSS0 #P #i Purpose: #p#i-#P#i.#P#P Analysis of #i(//ENTAIL Rules from #i (Cutoff #3) #1 #2    	TEXAN#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@    	ATOM#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@    	PRISM#P: #i3Entities: #n, ##A: #N, Range: #r to #R, Purpose: #p
#@ #P #i #p#i-#P#i.#P#P Analysis of #i#P Calculation #@#P Output      #@   )        
About KSS0...    -                File
New Window N  Open... O  Close Window W  	Save Data S  Save Data As...    Save    
Save As...    -    
Page Setup...    Print P  -    Quit Q      W        {EditUndo Z  -    Cut X  Copy C  Paste V  Clear    -    Font                View    G        ElicitElicit    -    Continue E  -    Exchange                {ProcessDisplay    -    FOCUS    PRINCOM    ENTAIL    OBJECT    -    SOCIO    -    TEXAN    -    ATOM    PRISM        y        DebugDebug 1  Debug 2  Debug 3  Debug 4  Debug 5  Debug 6  Debug 7  Debug 8  Debug 9  Debug 0       2 d        
About KSS0             :         4 4L        4L      4&L      &L      > ,       6 > F       J > Z       d > t        <         <         <       d d               	     2  F'OK     K  _'Cancel     d  x'B3     }  'B4         ,       
  * 4L     
  *L     
 < *       2 (        Z   #         ]            B      l  ~POpen     ; M        PCancel       "[      &  8PEject      ?  QPDrive                          ^  _T        ty        PMultiple        KData      P  Text        Grid      YGridText        KWindow      P  Text        Picture        ^                    MSave      MCancel      
          1[      8 JMEject      R dMDrive                           K       P                  Y      
 Z                   (Y <Status     ( <Cancel       % %L      2        2 %              %      *  <TCtl    ! 
                     OK      2Cancel     
 
 * *L     
 < *New Window Creation      <  L Picture     < LrText     <w LNo wrap     Z P j Title     Z  j     ! 
5             +      OK      2Cancel     
 
 * *L     
 5  N      
 S  Size     
   Bold     
  ;Italic     
@ 	Underline       2 0 Outline        0 Shadow        0;Condense      @ 0Extend     <  L       <  LE      <I L      P  `       P  `E      PI `      d  t       d  tE      dI t      x         x  E      xI                  E      I                  E      I                  E      I                  E      I                  E      I        
 g       l
        
7      :
      All    ! 
         L          OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L       <  L Cut off     Z  j 
Entailment     Z jrEquivalence     Zw jUsually     x   PText     x   Information      x rMatrix        Links        
Transitive      rIntransitive     w Graph       F  Window        Log             P  New            ! 
6         M    #      OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      < U L Cluster      <  L Edges      < LhInterior     Z  j PGraph     Z U j Cut off      Z  j       Z  j Entities     Z j      Z" jr
Attributes     Zw j      Z j
Tree scale     x <  Layout     x   Top     x rRight     xw No grid         Entities      r
Attributes      d  Grid        Numbers      rPatterns        PText      K  Matches         Entities      r
Attributes     w Links      F  Window        Log             P New           ! 
         N          OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L <Graph     U > e 	Component     U  e       U  e 
Horizontal     U e      U" erVertical     Uw e      U eScale     s   PText     s   Correlations     s r
Components      P  Loadings        Entities      r
Attributes      F  Window        Log             P  New            ! 
          O           OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L <Graph     Z  j PText      F  Window        Log             P  New               ^         P     
      MOK      2MCancel      
        O  c[      j |MEject      MDrive              O            K       P                  Y      
 < *      
 
 * *L    ! n          p            #OK     -  ACancel     
 
 * * L      2 ( xElicitation      x ( based on     2 2 Z       k    Use     i  } i      i n }       i  }Ratings        "Title         Ґ     ! 
         Q   f       OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      < F L Common     <  L Entities     < Lr
Attributes     <w LBoth     Z U j Match     Z  j       Z  j Level      Z j      Z" jrGrids     x   PText     x   Grids      x rEntities     xw 
Attributes      A  	Attribute        Matches       rLinks      w Mode      W  Entity        Matches       rLinks      w Mode      F  Window        Log             P  New            ! 
          R   J       OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L       <  L Cut off     < L      <" LrLinks      Z  j PText     Z  j A     Z jrB     Zw jC     x F  Window     x   Log     x        P  New            ! 
         S          OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L Links     < LStates     Z F j Measure      Z  j plogp      Z j	chisquare     x <  
Model size     x         x   Minimum      x       x" rMaximum         PText        Sequence      rModels     w Subsequences      F  Window        Log             P  New            ! 
         T          OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L Links     < LStates     Z F j Measure      Z  j plogp      Z j	chisquare     x <  
Model size     x         x   Minimum      x       x" rMaximum         PText        Sequence      rModels     w Subsequences      F  Window        Log             P  New            ! 
         U          OK      2Cancel     T Default      T 2Fonts      
 
 * *L     
 < :O      <  L Links     < LStates     Z F j Measure      Z  j plogp      Z j	chisquare     x <  
Model size     x         x   Minimum      x       x" rMaximum         PText        Sequence      rModels     w Subsequences      F  Window        Log             P  New            &  V         Untitled  *         4OK       - 4Cancel        Delete      n  Add      8  jEdit      8 - Att-Ent        Pair       -Triple     ^ r+     ( ZShow      $-      ,rCtl      8 TxtHi      8 *TxtLo       8 /Txt3      ; *Txt    &  V         Untitled           HOpen       ) HClose     ,  > H       L  New      L ) Continue     , L > Exchange        Display       ) FOCUS     ,  > PRINCOM        &ENTAIL       )&OBJECT     ,  >&SOCIO      * pTEXAN      * )pATOM     ,* >pPRISM     t       t )      ,t >       L        8 *        L /       O *    2            "  " """"UUUUwwww   D0`D"!!1G`0                                     D                                                 D                                                                 D                                                 UUUU O_SG)
	<(xP	@	 	  	@	P	|(>	
O)'QGS@PUUUU   UUUU O_SG)
	<(xP	@	 	  	@	P	|(>	
O)'QGS@PUUUU           @ 8 q        q  8 @       UG "  "  "  "  "        UP           @ 8 q        q  8 @       UG &8 8@  8  8   8  8   8  8   |       UP  __      
      " j O $
      T 
 A q   D 
  q   	UUUUH           -    
 +&(
Knowledge
           +
Support
         +System
         +Zero        f      z    ( + KSS0 is a tool for thought
       z   *!an aid to explore your thinking,
      z   *and that of others, and make
      z   *it more overt        f        
 0( LK    	#Q      f     ]   
 (  Conceptual framework       f          (  'Define
         +your
      $   (  	purposeӠ       f         (  Elicit
         (  	relevant
      #   (  
entitiesӠ       f      +   (  Distinguish
         +
	relevant
      ,   (  attributesӠ       f         ( Derive
      +   ( |conceptual
      -   ( z
frameworkӠ   	UUUUa  v    0"  a   a   
  0"     a `   0" K  	" oQ " O ?    "  ## ###### #### ####### # #### # # # # # ####### # ##### # ## ############     " l ## ## # #### ### ## # # ####### ## ## # # ## ## # ###### ## # # ########### # #        f      z   ( The KSS0 manual will be tucked       z   *away down here   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@A00@ J@jD@C30 RnQP.S.Sd ..RnQ.S.Sd .LN^ _PNNVH0$n &n J. g  /. /. N7| #(`  0+#(N  dHr A#(0  0N   <& 0+#(N  dHr A#)0  0N  H@0+#(N  dHr A#(0  0N   <( 0+#(N  dHr A#)0  0N  H@A00@ D@C30 0+#(R@7@#(=|=n 
Jn 
o  /p>@m  =@0.N   <& 0.N  H@A000 no  0.ng  --      
      " j O $
      T  6 x   D   p   	UUUUH           -    
 +%(
Knowledge
           +
Support
         +System
         +Zero        f          ( +  Now your purpose is defined you
          *"need to think of some entities tha)t
         ( Q "are important to itpeople, object)s,
         ( d  whatever needs consideration       f        
 0( LK    	#Q      f     ]   
 (  Conceptual framework       f          (  'Define
         +your
      $   (  	purposeӠ       f         (  Elicit
         (  	relevant
      #   (  
entitiesӠ       f      +   (  Distinguish
         +
	relevant
      ,   (  attributesӠ       f         ( Derive
      +   ( |conceptual
      -   ( z
frameworkӠ   	UUUUa  q    0"  ]   a     0"     a _   0" K  	" oQ " O ?    "  ## ###### #### ####### # #### # # # # # ####### # ##### # ## ############     " l ## ## # #### ### ## # # ####### ## ## # # ## ## # ###### ## # # ########### # #     @    Ԡ nN2 N   =@. HN   & 0. N   @0. 
N  @p A00 =@. HN   & 0. N   @0. 
N  @0. N   C0 /p ~ m  @/p>* @m =@.HN   & 0.N   @0. 
N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =nJn^D Jn ^Dg  0.n J@jD@=@`  =n.HN   & . HN   @0.N   <@0. N  H@.HN   ( . HN   @0.N   <@0. N  H@A  	      
      " j O $
      T  6 x   D   p   	UUUUH           -    
 +%(
Knowledge
           +
Support
         +System
         +Zero        n          ( +  Once you have some entities you           *can begin to make distinctions          *among them using the Triple,
         *and Break match keys       n        
 0( LK    	#Q      n     ]   
 (  Conceptual framework       n          (  'Define
         +your
      $   (  	purposeӠ       n         (  Elicit
         (  	relevant
      #   (  
entitiesӠ       n      +   (  Distinguish
         +
	relevant
      ,   (  attributesӠ       n         ( Derive
      +   ( |conceptual
      -   ( z
frameworkӠ   	UUUUa  q    0"  ]   a     0"     a b   0" N  	" oQ " O ?    "  ## ###### #### ####### # #### # # # # # ####### # ##### # ## ############     " l ## ## # #### ### ## # # ####### ## ## # # ## ## # ###### ## # # ########### # #     @   Q     n   4      ( "Click on the names of attributes t)o select them
    !      ( "The indicator shows the match betw(een selected attributes
          (1 "It shows the highest match when n(1"one are selected
         (D "Click on it to select the attribu)tes with highest match
         (W "Click on        to see lower matc)hes,        to go up again
         (j "Click on           to see the mat)ched attributes
         (} "Click on           to enter an en)tity that breaks the match   
 "  " 4 /% x  8
wwww4 /$ \                 
 (\ g-    @K bZ {               ++  @K"\?  @p \              
 (} aShow    @] ]n              (j bBreak      <2.RA( 0N  H@AC3@ 0 RnQ.0.N   42.RA& 0N   4AHp  AHp0 ?< 2NBRnQ./0. >@m  |=@/p>@m  b=@0.N   <& 0.N  H@0.R@N   <( 0.N  H@AC3@ 0 RnQ.RnQ./. NLN^ _O 
NNVH0$n &n 
/p ~ m  P@/p>@m  4=@/. /. 
.HN    ?. ?.BgNRnQ.R.Sd .0* S@5@ /0. >* @m =@/p ~ m @/p>@m  =@.HN   & 0.N   @0.N  @.H   <                                                           	      0     H                                                                                       `                                                                                                                                                                                                                                                                                          	                                   @&                                                                                              `  `  &                                                      H                @                         p8                        @@P 	  P( @B P                    H$0  <㟼  <0888ǏLf 0    `                &1` $&	 "E!0 B"I $	z   `   v  I4Af@ 6G3a  F 6°11;`\qph118`02    `,              X  3
p`                           `   `   dB0@ >0s6a11;0`^xxv10l135     `              X  s
x`                              0   Ӡ   ÀH@ 6`̓g6#0`003``0\xf00lc8s=3{1	L#X  \c~?|08Ϙ1cτ0} `  60n=>g03`0Nxf0p0lF0 38#18~F:uŎ3G3X 6Nf3c1ŋqY<x3

X$`0/ `  f @ 364<g`0a003`0Gg800 3C1F91cfL f3Gf3c1dɓ#0Ù<x1c@`30@   n   b @ #60<f30a003`0Cf00 3ƃ1?1y1AX?C3c1hѣC0<x1ca	0ƀ   s   dB @ c6a0<f00c223a`2Afa0[1>0 w93Y=XƱ
u9X	L3	Anw;sǋ,<xugLbaŞ<d0     f C62lg`#0e4432a4@	F30Ӟ`^0 6Z#5<֘1ٙk[X3@v]kbŋM46lٚ湮kY$0a    
l  g$ yǌ< 988>`98cc03<g1y11Xc1f3<x8Ǐ039pǏ?y   g                            0                        0            X    @                                                  `                                          @                                     @                                                  @                                   @                              @                                                                                                                                        0                                                                                                                           ' ( , 0 6 = ? F H N T X _ f n t z                   '2:CKW^gr{)3:BJPV\fn{#)07>EKQW]gnu|   
"0<CMRWY[[[cjt		 	

		   	 	 
 
   
 	 
     	   	 
 	   	  
 
 
 
 	 	 	   
    	   	   
  	     
 	  
 	  
 
  
  	  	 	 	 	 	 	          
      
 
 
 
 
  	  	

 
 
 	  	 	  
     0   4      &?< &?< &4?< %*?< %Z?< %2?< %:?< $?< $?< % ?< %?< %l?< &?< #?< #?< #?< #Z?< "h?< "t?< "~?< "?< F?< ?< ?< ?< ?< ?< !?< !|?< ?< P?< \?< f?< ?< ?< ?< D?< j?< z?< ?<  ?<  ?< !D?< ?< ?< ?< ?< "?< \?< ?< ?< L?< ?< ?< @?< ^?< 	?< 
T?< ?< ?< ?<   ?<  ?<  \?<  p?<  ?<  ?<  ?< ?< 4?< \?< ?< ?< ?< ?< ?< ?< 6?< N?< h?< ~?< ?< ?< ?< ?< ?< ?< P?< ?< ?< ?< 
?< z?< ?< p?< ?< ?< ?< ?< ?<  ?< Z?< ?< ~?< ?< 2J?< 4?< ?< !?< "8?< #?< $*?< %\?< &|?< '?< (z?< )?< *?< !
?< !R?< +"?< +?< , ?< -4?< .?< .P?< .?< .?< /D?< /?< 0l?< 5?< 6
?< 68?< 0?< 6?< 7?< 7P?< 7n?< 7?< 7?< 8(?< 8?< :?< :?< :?< ;H?< ;?< <?< >?< ?b?< B?< B?< C(?< C?< D`?< D?< E?< G<?< G?< IH?< I?< Jl?< J?< Kn?< K?< O?< O~?< PZ?< Qj?< T?< T?< U$?< Ux?< U?< V?< VV?< [?< ?< L<?< N?< N?<  0?<  V?<  ?<  ?< \?< t?< ?< ?< ?< |?< ?< \?< ?< ?< x?< ?< ?< 
T?< 
?< ?< ?< ?< :?< ?< 
?< 
z?< 	?<  ?<  *?<  ?< ?< ?< ?< f?< ?< ?< ?< ?< 	?<  ?< ?< ?< X?< ?< h?< ?< ?< ?< ?< ?< *b?< 1,?<  ?< (L?< ?< &l?< Jt?<  ?< (?< +D?< 0?< 7?< =T?< ??< AZ?< p?< 
X?< 
?< ?< *?< ?< 
?< 	f?<  ?< ?< `?< ?<  ?<  B?< H?< ?< ?< ?<  ?< ?< ?< #?<  ?<  >?< B?< ?< ?< j?< 
?< !?<  >?<  ?< *?< ?< 	\?< 
?< ?< ?< ?< R?< ?< H?< Y?<  ?< ":?<  ?< !l?< 1?< 4?< 5?< ;>?< 9p?< W?<  ?< ?< ?< j?< 
?< n?< ?< 4?< ?< h?< %?< 4?< D?< H?< Jv?< L?< M?< MP?< C ?< Q$?< Q?< T?< W.?< Wt?<   ?<  h?< ?< 2?< 	 ?< 
B?< ?< 
p?< 4?< ?< ?< ?< ?< .?< ?< .?< $?< 'L?< )?< ,?< 1?< 3?< 4f?< 5j?< 6>?< 7?< :?< <?< >?< ??< A?< A^?< D?< H?< L?< N?< P*?< P?< Mt?< 	 ?< 	 >?< 	P?< 	.?< 	?< 	J?< 	!?< 	$l?< 	*?< 	,?< 	.?< 	7?< 	<h?< 	>?< 	@?< 	D?< 	I?< 	?< 
 ?< 
 B?< 
 ?< 
P?< 
(?< 
?< 
?< 
?< 
?< 
	?< 
:?< 
?<  ?<  >?< $?< ?< "?< ?< 
X?< |?< ?< ~?< ?< ?< ?< ?<  ?<  B?< r?< 8?<  ?< 
 ?< 
 B?< 
L?< 
0?< 
 ?<  ?< ?< ?< l?< ?< ?< ?< 
`?< 
r?< ?< j?< \?< ?< ?< ^?< n?< ?< D?< x?< Z?< ?<  ?< ?< ?< 4?<  ?< !?< ":?< !?< %L?< %r?< '?< '?<   &   Z C$ HB&HCCHBBBЂ&Nu C"Dx JjDxJjDFD$v Ӂd҂рQFJDgDHDJDgD&(	Nua Nu / " a/@ Nu _Ho // ?<(PNUHW?<  o  VHz F/?<  Jg `
UHW?< ?<` HW?< T// Ho 
?<(HW?< TNu?       ""_ _/p H2QNu"0"_ _/`QNu"0 _"_/cR`QNu""_ _/ cB g
SBVf Nu""_ _/p r dPF C`QNu$02 _"_/t JAnrBnARBJ@oBo0S@QNuBNuH0L  p r tg gAeSA6$H&IVg
RBRQt ?B L _\NNV Hn /. ?< ?. SWa j/. Hn a 6Hn /. ?. ?< a JHn Hn a Hn /. ?. 
a N^ _O NNV Hn /. ?< ?. 
SWa 
Hn /. 0. 
n ? ?< a Hn Hn a Hn /. ?< a fN^ _PN$02"_ _/t @A`BQ`Q`BQNu _"_BBBBBBBBN _0"_r  I N _20"_ et  J   R fRpSdN$02 _"_/`QNu "_ _/ pVNu "_ _`  _"_/ p"VNu "_ _/ p""QNu "_ _/ p"F"QNu "_ _/ p""QNu _"_0@ d
2 I1 Np Np "0"_" AN"_ _ PN 80 xШ  W.N x0"x re" !"x"ѩ  8L W.N"0"_ _`Q AN"0"_ _` Q AN"_20 _`QN"_ _20gS@4 WB? N"_ _20gS@4 VB? N1 
JA !
LNu/. 0<ɡFpN _XmXnN _mnNYUU/0<ɡFpNJlD -C  r	TY"gt/RdЁ`Nu;    B@   '     d   
       p r t  +g -ftR : 
dd/ ПЁkR`JgDJ@NuD NuNVJ@lp @ HopH=@AHn/	Hn?< . ?f
-|   `CQ0fBnp B1  S@nJ.g -`
J.f   NfT N A N (.a2 I.aArda r
aa )N   0  
m_ @ NuH  0H@Nu If I N F`^J.f*aZ0.U@m
 .aLQ e0.Hm +a V`.0.2.l 0`a QS@m .RAl 0`aQN^NufS| 0NuNVBnBnJg~ +g -f| R Nf6R Af\ NfVp  (fRa &eF )f@Jf<"@ J f"p` If2R Nf  Fff"  @ J.g `"@N tr t   :  
d$JAfJ gA gRA`RnJgSn` .f
JftR`Af=|0 EfRa xenJfHn/	?< 	QgQfBi B N^Nu0< `0<("_Ho ? NLH@N&"_?< N"_// ?< 	N$ _"_0/R/N  _ NuO  O"o` ae
 zb  S dB O  g 	fR`"oNO .NuLN//	 @?< /	"A2NpNLHW"o /	Nt?< T @NpNnL"WNV Jj  @N0< `0< LQ/Ho ?< WQ/	Ho ?< WHWHo ?< WHW// ?< WO  ANL"WN/	/?<  @NpNpNp
NpN 2 _"WN?HW/	?<T @NL"WN//	?< @N0<`0<L"W///	?  ANpN  W?<  "WNZ @N0< `
0< `0<0 L Q/	Ho ?< WHWHo ?< WP` _Ho ?< 0jD@S@NL BWJjRWN _0fp"W"@ BYB@Np`p  _4B jN JgB`FBBN Np`p  _2A iN AVDNr
`r _B N x@BxN Nr
`r _N x@ N _0N NL N 2N _?< N _HW?< TNHo ?< NuHo ?< .Nu _p ?< e
ngR R R N""2QQNuL"Wa/	?  ANL"Wa/	?  ANUHW?< 0Nu? HW?< TNu o  P"o "?@ .Nu" "_ _/?@ Nu o  / ?@ "o " _ N o "o ?@  _PON / "o  o ?@  _ N"_ _WN 6,N 2"_ O N "/H N "_ _N "_ L.Nqp /	1 Nup `"_ MN/@ N"_ @N"_" _ .N"_ _KN"_ _-NJxj* x0C te"Q!"B"x" ѩ NucNu"_ _dNJxj"o H> 	g"@  @fpN|(IJjp`,I (&n  Q"(  ¸.Qp d JJ(  gj @ h Jk 4"¸ x  $<    Їm" pm     *O+A +x ! TQH+h     +@ T N Jf,"*   Qb gte T"J  . L+`p| N N*N "*   - A "J܀ .JgD 	g" Qegte T`%@  L 0#N #F  | @  /	N N aF"_H 0`QQ  	g%@  $I$   L$( ! p   L|.1 Nu g
 @QH`A 4"(  ¸J(  gj"h Jk
$He` cNu - m C  TǑ+@ " . L f+Nu PQH(  P!@  B  !A  Ӯ Nu <   LNu"_ .N0"_ _N&"_ _!.jBNN"_  _ N"_ _H.N"_ ".N"_ _#N"_ _%.jBNN"_  _$N"_ _&.N"_ _(.N"_ _+N"_  _'N"_ _)N"_ _*N"_ _INx"_ _JNn"_ _gN"_ _hNѠ6NZ" "_ _."ANH"_ _3>N"_ _4>N o pBgQ/H B/  O 2/  2 o 0?@  _PON0/  ?@  O ?@  _TONNVA1n 
 1|  1n  =@ N^"_XONNVA1n  1| 	 !n 
 1n   =@ N^"_PONNVA1n  1| 
 "n !Y !Q  =@ N^"_\ON0< NVA1n  1@ =@ 
N^"_TON0< NNVA1n  1|  =@ "n " N^"_\ONNVA1n  1|  =@ "n " 2  N^"_\ONNVA1| 1|  1n  =@ 
N^"_TONNVA1| 1|  !n  =@ N^"_XONNVA1| 1|  1n  =@ "n A p.N^"_\ONNVH00Bn 
Jxj  t. gtN"fXSBNfPJ( f  p(  f>N f8 8nFr xPH0  gHfZrYO/<SERD?&fXO08
`f0<@N t C !B8&x&SpSERD f. 8fN pNtACJ. gC!I Bh B(  fBAQLN^ _TON=@ 
`NVH00. N Jxj 8o @ PSERD fp NJ8f x#p!`A1B 1|  f h  P`pNup /8Jf
 gUgp`8Jf8 f
 gp$J@NupJgpA1@ Sh Jxj@ |  x 	> 
FNu.AIn.AOut.BIn.BOut"_0F.N"_0 _GN"_0/	JgFN F/H Nu"_0 _/	JgGN GNu/|   NuAp8?@ Nu"_ _/	9?@ Nu"_ _ N _ /:?@ Nu o Ǡ:L Np  o  8.Nu o L  ANL/  	Nu "_ _/ ;"NuNV   n "n p H@J. gJ. 
g<`<`J. 
g<`<
  @ N^ _   N"_ _p /	JgT`TNu"o  o o _PON"o  o n?@  _PON _"xPI0"_BQ  gXR @ H"_2N x 
N/|  ` Nu/|   Nu/|  V Nu/|  ` Nu/|  J NuNVA1n  1|  -h  
N^ _TON"_ _f ` >N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f	`	>N"_ _f
`
>N"_ _f`>N"_ _f`>N"_ _f
`
>N"_ _fA`A>N"_ _fB`B>N"_ _fC`C>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _f`>N"_ _fD`D>N"_ _fE`E>N"_ _>N"_ _>N"_ _>N"_ _5>N"_ _0H@0NNNVA!n  1n  B( B( B  "n 2 =@ N^ _   
NNVA1n  =@ 
N^ _TNQ`PNVA!n   1n  "n !Q $Bh ,B .Jf`=@ "n " (N^"_   
NNVA1n  1n  J gC  n p.AΠ=@ N^"_PNNVA1n  1n  =@ A"n p.N^"_PNNVA1n  =@ 
N^"_TNNVA!n  1n  Bh =@ "n 2  ( 0 >"n "N^"_   NNVA!n  1n  B( Bh =@ A  "n p.N^"_   
NNVA!n  =@ "n 2 N^"_PNNVA!n 
 1n  =@ N^"_\NNVA1n  !n 
 =@ N^"_\NNVA1n  !n 
 =@ N^"_\NNVA1n  !n 
 =@ N^"_\NNVA!n  1n  B( J@fBh  C  " " 
=@ N^"_   NNVA!n 
 1n  B( 	=@ N^"_\NNVA!n  1n  B( B( B 
=@ "n 2 N^"_   
NNVA!n  1n  B( !n  =@ N^"_   
NNVA!n  1n  B( Bh C   n p.A
=@ N^"_   
NNVA!n 
 1n  B( A=@ N^"_\NNVA!n 
 1n  B( B=@ N^"_\NNVA"n !Q $1n  =@ " (N^"_\NNVA1n  =@ "n " N^"_\NNVA1n  !n  =@ N^"_\NNVA1n  =@ "n " .N^"_\NNVA1n  1n  ,!n  .D=@ N^"_PN"_r 2/   xNPd p 0( Nr `p 2< W0\O>N"_ _fp``p`>N"_ _fp``p`>N"_ _f`>N"_ _f`>N"_ _fp``p`>N"_ _fp``p`>N"_ _fp``p`>N"_ _fp``p`>N o B( "_ _fp	``p	`>N"_ _fp
``p
`>N"_ _f`>N"_ _fp``p`>N"_ _fp``p`>N"_ _fp``p`>N"_ _f`>N"_ _f ` >N"_ _f
`
>N"_ _f`>N"_ _f	`	>N"_ _f`>N"_ _fB`B>N"_ _fA`A>N"_ _f`>N"_ _f
`
>N"_ _f`>N"_ 0_/>N""_ 0_//"?@ Nu"_ _00R@N"_ _01J@gB` NJxk$ _0/NVA1| 1|  1@ N^Nu _0/9  @ 	g$@ | 9 A @ `@ FNu@ `H9 ݁   ݁Nu _"_B`N x ep:"f  Ҡ)! "P#x< 4C!<"PJi o~"/ krP 92) 2$H` L J@f  p A 0$f  )! "P xz!I !I  B P( 8) 8 B#3A 2   8gBi N Q 9pA .`>0( n I1| : 2!o  $!o   1| "/ j`!A C X!I J@ga"_ N x d"P! 4<#1 NuNVA1| BxaN^Nua 8<o @NH x  PJ( 9gP 8`b0( 2"( g"AH瀀NL@ :gF"HA :#X #X $#X  3| rFAg2 H"H .A :`r: x  P1A 2C!I LNu"_P x d PJh _DN"o BQ x
%Jo P"o 2"o 2 _PONH 0"o B  x
%Jo&$PTJ2/ ZnSAm Jp( @P@.SA`L  _\ON x
%Jo( PTH2/ XnSAmgp( @P@SA`B  _TONРa/@ Nub"o ""o ""_PONѠe/@ Nuf/H Nu"_ _iN"_ _jNNV   n "n p H@J. gJ. 
gP`P`J. 
gP`P=@ N^ _   N"_ _2 /	/ ?? BNu"_ _2 /	/Bg/ ?Ho A0 _Nua.Nua`a
`a` o Jh k"_/( NLNB ?x
 Nu1 
.NuYO/8
/<TEXTB ?@ 1
jBx
Nu x
)YO08
H/ /<TEXT/TO?_  x
*Nu "_+_ "QA 
#H * @N/B' m N$J Nu "_+_ "QA 
#H & @NB'/?  m NJNuNV  YO/<STR#?. 
"n B g  @ P02. @np SAg`R@.N^ _PNNV  YO/<PAT#?. 
"n  g @ P02. o@nSAgPH`p.N^ _PN _"_2"_2N _Nt _?/tNtNtNt _?/tNt NtN4< N4< 
Nt _?/tNt NtNtNtNtN4< 
N 4<  _?/4< 
N 4< "o  o B@BA/H /I  _? ??/ o ?<  o  N  o  / ?<   _PONa4a2a0a.a,a*a(a&a$a"a aaaaaaaaaaa
aaaaNqC Ѐ _? / o  Pp( Dr8	F8	F"<   `"< `"<  `"<  p8	F`^"<   p`T"<  p`J"<  `6"< `."< `&"<  `"<  `"< `"< `"< p`"<  pA PH(&_Y/<PDEF?  g*(@  Tp /B _NJDj "KA LN1@	DHD`            pBgQA /H  O  21	DNu.Print  2 O1| ` _"_ "4/ 2?B /A /@  /I $?|  O`af6r `rYO/<STR ?<  g,"@UO /0 aJAg? aNu1
`	DgXONu1@	DNu?x	D Nu _1	DN    NV  NN"U?<HmpJg  HmN*`  J-g  N
J--g NN^NuNN *  [ w    NV /. Hn ?< NBJ-'g  Hn N^.Nu    NV  J. g  =|  
`  Bn 
N^ _TN    NV  Y/<    . N   ? \-_ Y/. /.  .  WD HN   @ N^ _PN    NV/. Hn ?< NBUHn  R/ /. p . H/ N =_N^ _PN    NV/. Hn ?< NBHz PHn?< NB| 
Hn HnN:HnHnNRHnHn ?< NB/. Hn NN^ _PN     NV  /. Hz NN^.Nu  NVH  $n Hz Hn?< NBHz Hn?< NBB.J f  | `  p RHN   =@n 
f  | `  :0.N   @HnHnN:HnHnNRHnHn?< NB R$ * S%@ J.g zHn/. ?< NBL N^.Nu       NV|  Hn/. N
XHn/. ?< NB/p  n r> Am  N=A0.N   r  n 0  ?HnNrHn?< 0?< 9NHnNf  B. RnQ.N^.Nu    NV/. Hn ?< NBHn /. Nb=_Jnf  &/. /. ?< NBHz t/. ?< NB`  \Hn/. ?< 0.S@? NZHn/. ?< NBHn/. 0.R@? p  n n? NZHn/. ?< NBN^ _PN      NV /. Hn ?< NBp . J@o  >p .@  f  0Hn Hn ?< p . S@? NZHn Hn ?< NB` Hn /. ?< NBN^.Nu    NV /. Hn ?< NBp . n l  .Hz BHn N:Hn Hn NRHn Hn ?< NB` Hn /. ?< NBN^ _\N     NV /. Hn ?< NBp . n l  .Hn Hn N:Hz 6Hn NRHn Hn ?< NB` Hn /. ?< NBN^ _\N     NV /. Hn ?< NBp . n o  &Hn Hn ?< ?. NZHn Hn ?< NBHn ?. Hn NXHn /. ?< NBN^ _\N    NV| Bn/.0. 
H/ HnN"HnHnNHn?. HnNXHn/. ?< NBN^.Nu    NV| Bn/./. 
HnN"HnHnNHn?. HnNXHn/. ?< NBN^ _\N    NV/. Hn?<| =n /.HnHn?<HnHnNHn?. 
HnNXHn/. ?< NBN^ _PN    NV/. Hn ?< NBHz zHn NJf  
Bn `  `HnHn NXAC""2Hn?< NXHnHn?< g   HnN2 N   =@ `  Bn N^.Nu      NV/. Hn ?< NBHnHn NXA"n ""2N^.NuNVH /p  n r> Am  j=A0.N   r  n 0  =An `^D n {]Dg  *0.N   2.A  & 0N   "n 0 RnQ.L N^.NuNVH  $n 0* @ f  HzHn?< NB` 2@ f  HzHn?< NB` @ f  HzHn?< NB`  @ f  HzlHn?< NB`  @ f  HzTHn?< NB`  @ f  Hz<Hn?< NB`  @ f  Hz$Hn?< NB`  @ f  HzHn?< NB`  n@ 	f  Hz Hn?< NB`  R@ 
f  Hz Hn?< NB`  6@ f  Hz Hn?< NB`  @ f  Hz Hn?< NBHn?* ?< N*XHz HnNRHnHnNRHz xHnNRHn0@l? ?< N*XHnHnNRHn/. ?< 	NBL N^.NuJanFebMarAprMayJunJulAugSepOctNovDec--    NVHn?. ?< N*XHnHn?< NBp .@ l  *Hz >HnN:HnHnNRHnHn?< NBHn/. ?< NBN^ _\N0    NV n C"""2Hn?./NXHz dHnNRHn?./NXHnHnNRHz >HnNRHn?./NXHnHnNRHn/. ?< NBN^.Nu::    NVHnNJHnHnNZXHn/. ?< NBN^Nu    NVHnNJHz Hn?< NB/p>. @m  6=@HnHnN:Hz HnNRHnHn?< NBRnQ.HnHnN:HnHnNRXHnHnNRHz @HnNRHnHnNZXHnHnNRHn/. 
?< NBN^ _TN        NV  0. 
n o  =n 
 `  =n  N^.Nu    NV  0. 
n l  =n 
 `  =n  N^.Nu    NVHnHm(NXHnN2 2. n 
RAHN2. 
HҀ N   =@ N^.Nu    NV/. Hn ?< NBHz \Hn NJc  :p .=@n @^D n []Dg  0.@  N   @Hn /. ?< NBN^.Nu      NV/. Hn ?< NBHz \Hn NJc  :p .=@n `^D n {]Dg  0.@  N   @Hn /. ?< NBN^.Nu      NVB-'HnNB/.HnN"AC(""2Hz .Hm$?< NB| 
%Hz Hm"?< NB| 	#N^Nu  NVH 8 n C""""-nHnt/.s$n&n(n/."Hl Hj {J f  /./* S`  /./* x/.N
?, N:?, N?, NB/.#/.sL N^.Nu    NVU?< @HmpJg  -m n=h ?.HnNrHn?< ?< NHnNg  (0.N  HA"0  f  
HmNUHmJg  UHmHnHnJg  ` jN^Nu    NVxBnBnn g  H?.HnHzhHnNJg  .0.N   HHnAxHp  ?< NB0.R@=@0.R@=@n WD n ^Dg /0.S@r > Am  =AHz Hn?< NB/0.S@r > Am  X=A0.N   HHnAxHp  NJc  *0.N   HAxHp  Hn?< NB=nRnQ.0.S@nN   HHnAHp  ?< NB0.N   HHz FAxHp  ?< NBRnQ6.0.N   HHz AHp  ?< NBN^Nu        NVH  m/QHz&Hn?< NBHnHnN:Hz*HnNRHnHn?< NBYB?</. HnN"n "=| 
Bn0.N   HAHp  Hn?< NBHz,HnNJc  " n /?./. HnN0.R@=@0.R@=@n WD Hz Hn& NJWD  g n 'n  , n /HnNrHn?.?< 'NHn/. N n /HmQL N^ _PNB1 2 44,S4 5,C6 7 8 9 10 11 12,bR13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39,R40 41 42 43,T-4     NVH  $n  n /HnNrHn?< 
?< 'NHnBg/. N n /HnNrHn?< ?< NHnBg/. N?Hn/p
~'@m  `=@Hn n /?./. NXHnHnNJf  , n /HnNrHn?.NzHn?< /. NRnQ. n /?< /. Hn?* BgN*XHnN/p ~@m  b=@0.H? Hj Hn/<   NjHnNg  0 n /HnNrHn0.\@? NzHn?< /. NRnQ.HmHnU n //. ?.NJg  ?.HnNrHn?< NzHn?< NzHn?< (?< ,NHnNg n g B$n UHn n /?< /. NXHnNB5_ /p
~'@m  \=@?. n Hh 2Hn/<   NjHnNg  *Hn n /?./. NXHnHn?< NBRnQ.HnHR HnNrHnHj /<   N/p ~@m  =@0.\@?  n Hh 2Hn/<   NjHnNg  JHnNrHn0.H? NzHj Hn/<   NjHnHnNHnHj /<   NRnQ.=n L N^ _O N    NV/. Hn ?< NBY/<PICTHn -_-nJg  UHnN 0J@g  B/.-n N^.NuNVH  U;_UHn HmN=_HmnY.0   N / N N
N:N:N:N:0B{N?<Bg 2UNr0R@;@n;| ^;| 	\HmVBgBg?<&?<ШACN""ENHmF?< 2?< 2?< ?< Hm>?* ?< ?* ?* Hm6?* ?< &?* ?* Hmf?< ?< 0* [@? 0* @ 
? Hm^?< 2?< ?* 0* @ 
? Hm2/-2sHm.?< lN/-.oBm`/p~@m  &=@0.N   A.B0  RnQ.N/p~@m  4=@0.N  HAHp  ?<0.S@? N RnQ.AC""AC""L N^Nu    NV/. Hn ?< NBB-B-YB?<HnHz N+_/-?< HnHn NHnNbXHnHm?< NB/-?< HnHmN/-?< HmRN/-HnNrHn?< NzHnHnN/-ΩN"N^.NuB1 2 8,S4 5 6 7    NV  /-ΩNN^Nu    NVU?< BHmpJg  zUHmJg  lUHmHnHnJg  V0.@ f  <J-WD HN   @J-g  /.?< (`  /.?< '`  @ f  | J-g  \HnNbXHnHn?< NBHmHnNJg  2HnHm?< NB/-?< HnHnHn쩍/.HmN^Nu    NV/. Hn ?< NBJ-g  "/-?< HnHnHn/.Hn N^.Nu    NV/. Hn?<N"J-g  4/-?< HnHn?<HnN2 N   ? NN^.Nu    NV/. Hn ?< NB/. Hn ?< NB/. Hn ?< NB/. Hn ?< NBYB?<HnHz.N-_Jn f  =| `  =| /.HnNrHn0. R@? ?.NHnHnN/p>. @m  T=@HnHn Hz NXHnHn?< NBHz HnNJg  /.?.HnHnNRnQ./.?< HnHn N/.?< 	HnHn N/.?< 
HnHn N/.HmHnU/.Hn?.NJg /.N=n N^ _O NB1 2 3 4 5,S8 9 10 ,      NVJn WD HN   @J.f  2UBgHz DHz THn0. D@? BgN*XHnHz :NJ=_.HN   @ 
N^ _TNInput/Output Error         NVHz Hn?< NB| 
U> =_HnN?< N2XHz HnNRHnHnNRHnYN?< N2XHnHnNRHz HnNRHnHnNRHnYN ?< N2XHnHnNRHz bHnNRHnHn?< NBUBgHz JHnHn?.BgN*XHnHz FNJ=_N^Nu  Heap Largest Block  Stack Memory Allocation Error      NVHnt/-@?. HnF/-H?< 9/-H?< 9/-H?< 9/-H?< 9UHn=_/.sN^ _TNNVH /. Hn ?< NB$n HnNrHnHj 2/<   NHnNrHnHj :/<   NHnNrHnHj B/<   NBR=| /p~0@m  "=@0.N  0A B0  RnQ.HnHnHn HzHNXHnN
XHnHn?< NBp .@ Bf  =| `  P@ Cf  =| d`  >@ Rf  =n0.R@=@`  "@ Sf  =| `  @ Tf  =| HnHn?< p .S@? NZHnHn?< NBHnHnN
XHnHn?< NBUHnHnHznNXHnNB=_Jnl  P0.D@=@HnNrHn?.NzHj 2Hn/<   NjHnHnNHnHj 2/<   N0.N  0& 0.N   C 0 U??.Nr4HnNrHn?.NzHj :Hn/<   NjHnHnNHnHj :/<   NHnNrHn?.NzHj BHn/<   NjHnHnNHnHj B/<   NHnHnN
XHnHn?< NBHz .HnNJf Hz  Hn NJf LN^ _PN,         NV/. ?. 
HnHnHnU/.`=_0. ng  /.?. cN^ _PN    NV/. ?. HnHnHnYBN"n"Q#_ "n"Q"i " /.Bgd/.?< deN^ _O 
NNVH  $n /p>@m  l=@0.N  0r A 0  A co  B?.Hj 2Hn/<   NjHnNg  =| `  Bn/. ?.?.NRnQ.L N^ _PNNVH  $n 
0. N  0r A 0  =An o  ~/p>@m  p=@0.N  0r A 0  nf  FHnNrHn?.NzHj 2Hn/<   NjHnHnNHnHj 2/<   NRnQ.?. Hj 2Hn/<   NjHnNg  JHnNrHn?. NzHj 2Hn/<   NjHnHnNHnHj 2/<   N`  FHnNrHn?. NzHj 2Hn/<   NjHnHnNHnHj 2/<   N/. /. 
Nn WD HN   @ L N^ _O 
N    NV/. Hn ?< NBY?. /. /<|-_/. Hn Nz/./. N"n"i "Q3| H-n N^ _O NNVH  /. Hn/<   N$n /p~0@m  =@?.HnHn/<   NjHnNg  0.N  0r A 0  A g  
A f  `  Jn f  JHnNrHn?.NzHj 2Hn/<   NjHnHnNHnHj 2/<   N`  FHnNrHn?.NzHj 2Hn/<   NjHnHnNHnHj 2/<   NRnQ./. /. NL N^ _O NNVH /. Hn/<   N$n /p~0@m  =@?.HnHn/<   NjHnNVD ?.Hj BHn/<   & NjHnNVD  g  HnNrHn?.NzHj BHn/<   NjHnHnNHnHj B/<   N/. ?.HnHnHn詍0.N  0r A 0  A g  
A f  `  /.?< ]RnQ .LN^ _O NNVH /. Hn/<   N$n /p~0@m  =@?.HnHn/<   NjHnNVD ?.Hj BHn/<   & NjHnNWD  g  HnNrHn?.NzHj BHn/<   NjHnHnNHnHj B/<   N/. ?.HnHnHn詍0.N  0r A 0  A g  
A f  `  
/.Bg]RnQ".LN^ _O NNVH /. Hn/<   N$n /p~0@m  =@?.HnHn/<   NjHnNVD ?.Hj :Hn/<   & NjHnNVD  g  PHnNrHn?.NzHj :Hn/<   NjHnHnNHnHj :/<   N/. ?.'RnQ`.LN^ _O NNVH /. Hn/<   N$n /p~0@m  =@?.HnHn/<   NjHnNVD ?.Hj :Hn/<   & NjHnNWD  g  HnNrHn?.NzHj :Hn/<   NjHnHnNHnHj :/<   N/. ?.(0.N  0r A 0  A f  4?.Hj 2Hn/<   NjHnNg  /. ?.Bg?<~RnQ.LN^ _O NNVH  /. Hn ?< NB/. ?. HnHnHn$n 0. N  0r A 0  A g  
A f  \/.HnHn HnNJg  /.Hn ?. Hj 2Hn/<   NjHnNg  /. ?. Bg?<~`  &/.Hn^Hn HnNJg  /.Hn _L N^ _O NNVH  /. ?. HnHnHn$n 0. N  0r A 0  A g  
A f  &/. ?. HnHnHn/.Hn`  /.Hn^Hn/. ?< NBL N^ _O 
NNVH   n BPB. $n 0@ g  
@ f  z * "<   N? HnNrHn?< 
NzHn?< NzHnNg  >/. ?< HnHnHnꩍ/.?< ]/<   HnNZ|  "n 2 L N^ _O N    NV/. Hn ?< NBHn/. ?<0.D@? UHn 0T@? ?.=n N^ _PNNVH  /. Hn ?< NB$mUHnHn N=_Hn?. ?. AC""Hn Hn ?< NB| =n =n 0. N   @0. N   @p . @@ =@0.d  0.R@=@=j DHj FHn/<   N=j J * LN   =@UHn/-t0.H/ N =_0-rR@;@rL N^ _O NNVH   n C""$mHnHn0. D@? 0. D@? AC""=n =n | =n =n 0. N   @0. N   @=n AC""""2=| *UHn/-t0.H/ N =_0-rR@;@rL N^ _O N    NV  BmrJ. g  YBN+_t`  BtJ. 
g  YHmV+_x`  BxN^.Nu    NVHn"n 20.nn"n 2"n 2N^ _O NNV  H  $n ??* Hj  _? /. /. /. N
L N^ _O N    NVJ g  hU/. `=_0. 
no  =n 
0. nl  =n /. ?. 
d/. ?. e0. 
n f  /. ?< ]`  
/. Bg]N^ _PNNVH  0. N  HE$r  J g  >J g  /* Bg j  P?( ^N`  /* 0* Đj ? 0* Ȑj ? NJ g  /* 0* Ɛj ? 0* ʐj ? NL N^ _TNNVH  0. N  HE$r  Bn0.R@N  >H j  P20 `n 
_D 2. j  Ph ^]Dg  0.R@=@` Jn o  0.j R@=@/* ?.cL N^ _\NNVH00. N  HE$r  /* N*&j &SBn0+ SU/* & `0 @=C/* N2?.?./* ةLN^ _TNNVH 0 n C""0. N  HE$r  AC ""J g  "p  j  P( @ f  0* @ 5@ J g  "p  j  P( @ f  0* @ 5@ J g  /* N*&j &SJ g   U/* `0N  >HA `=p  A C""HS?< ?< 0+ SH 5@ 0*  S7@ AC ""/* N2/* ة/* N*&j &SJ g  ?. ?.BgN*HSBgU/* `0D@ ? AC ""/* N2?. N"L N^ _\NNVH   n C""0. N  HA/0  sJnf   mA C""0. N  HE$r  5n  B B B B B* . 
HN   @ Bj Bj Bj B* B* |  J. g  . * g  =|`  =| Hn0.S@? 0.@ ? 0.n? 0.R@? Y0. N  HA/0  HnHz2< BgBgBg?< BT%_ `  B J. g  . * g  =|`  =| Hn0.@ ? 0.S@? 0.R@? 0.n? Y0. N  HA/0  HnHz < BgBgBg?< BT%_ `  B J. g  2?-^?-\YHnHn%_ < /* ب5|  `  5| 
 B ?. HnNRHnBgBg?<?<J f  ?. HnNNL N^ _O N    NVH  n C"" n C""UHnN*Jg  0-`N  HY& 0.N   AzHp  HnHn?< 
NXHn. HN    ?. /<. HN    BC#0 ?-`Hn. HN    . HN    . 
HN    . HN    Nj0.N   AB  |  `  B. L N^ _O NNVH  0. N  HE$r  A C""Hn?* ?* Hn{?* ?* xL N^ _TN    NV  BgBgx0. N  HA p  Hh {N^ _TNNV  H  0. N  HE$r  J g  </* ب?. N"/*  j  P0(  j  PPH j  P ? c|  L N^ _TNNV H  /. Hn ?< NB0. N  HE$r  J g  $Hn  R/ p . H/ /* ة?. NJL N^ _\N    NV /. Hn ?< NB?. Hn Hn N:Hm$Hn NRHn NZN^ _\N    NV  ?. Hz NbN^ _TN      NVY-_ n=h  N^Nu    NVUNr0-n_g  NYB/<TEXTHn-_Jm  "UN =_Jng  0.H-@`  BN UNr;_nN^Nu    NVJ-qg  &Y N   ;@nUN =_B-qN^NuNVH   n C""0. N  HE$r  AC ""0* Đj 5@ 0* Ɛj 5@ J g  /* ?* d/* ?* cJ g  /* ?* d/* ?* c?. N"L N^ _\NNVH 0. N  HE$r  J g  /* ̨J g  /* ШJ g  
/* NJ g  (J* g   j  PB > j  PBh </* ةB J g  
/* NJ f  0. N  HA/0  -`  "0. N  HA/0  /* NB* 0-`S@;@`/0. >-`@m  >=@0.N  H2.RA& 0N  HAC#  0 RnQ.N/-D?< 9/-TBg9LN^ _TNNVH  Hnt0. N  HA/0  s0. N  HE$r  Hj (J g  /* ̨J g  /* ШJ g  
/* NB B B |  /.sL N^ _TNNV  H  0. N  HE$r  ?. N%n  %n  L N^ _O 
NNV  H  0. N  HE$r  0* Đj 5@ 0* Ɛj 5@ J g  /* ?* cJ g  /* ?* cL N^ _TN    NV/. Hn ?< NBHnt/-.mYHmV-_?. ?< 
?< ?< 	Hn /.s-n N^ _\NNVH  p  n @ f  L$n ?< ?* Hj  _? ?* 0* H/ 0* T@? 0* 
j ? Hj `  |@ f  t$n Hj ?< 
A 
C""Hn?* &?* (0* $@ f  Hn`  4@ f  Hn`  "@ f  Hn`  @ f  HnL N^.NuNVH 0n WD HN   @$n 
J.WD HN   @YY0* H/ p * D@H? \/<    . N   =@0.@ f  Hj 
` @ f  ?< ?< Hm쨝Hj 
` r@ f  *?< ?< HnBg?< N HnHj 
` B@ f  <0* 
j H =@?* ?.?<Bg?* ?.?< Bg`  @ f  $A 
C""Hn?<BgHnꨤ`  @ f  X?< ?< Hm쨝A 
C""Hn?< ?< ?.?.ꨓ?.?.?.?.?.?.ꨑ`  x@ f  p&n 
Hk ?< 
A 
C""Hn?+ &?+ (AC""=n0.U@=@HnꨢAC""=n0.T@=@HnꨢJ.g  0. N   @ J.f L N^ _\N    NV/. N*Y n //<  .-_Y/. N" .П-@ .l  </.Np  n( J@o  /.?<N n0( HЮ-@` /. N2N^.NuNVH  HnN20. N  HE$r  J g  Hj /* ة` ^J* g "0* j 2* ʒj H/ HnN"H/HnN"HnHn?< HnHn?<0* j 2* Ȓj H/ HnN"H/HnN"HnHn?< HnHn?<HnHn?<HnHn?<
d  -n/<   HnN"HnHn?<HnHn?< 
o  /<   HnN"HnHn?<Hn0-Xj H/ HnN"HnHn?<HnN*0* HПN   ? 0-Vj H/ HnN"HnHn?<HnN*0* HПN   ? 0-\j H/ HnN"HnHn?<HnN*0* HПN   ? 0-Zj H/ HnN"HnHn?<HnN*0* HПN   ? Y?. N-_/.Hnب/.`  6J g  /* HmVJ g  
/* NJ g  /* HmVHnN:L N^ _TNNVH  0. N  HE$r  Hnt/-.mYHmV-_J g  /* HmVJ g  /* HmVJ g  
/* Nʨ/.s-n 
L N^ _TNNVH 80. N  HE$r  &n J f  
B `  Z/* N*(j (T-l >/.N* n&0, <H'@ 0,  l "l  0,  HГ&0, "l  H'@ /* N2L N^ _\NNVH  Hz N/. ?< NBBnY$-_Jg  $nJ g  /./. =j =n L N^.Nu  NVH  0. N  HE$r  J g  ?. N2`  -j J g  U/* ܩ`5_ J g  U/* `5_ 0.j =@0.j =@Y-_Hj ?.?./.?* ?* x n PHh ?* ?*  n PHh {?. N/.?. NBL N^ _TNNVH  Y$-_$nBn0. @ f  =j `  @ f  0* D@=@Jng   /. 
U/. 
`0n? c?* NL N^ _\NNVH  HnrU/. /.f0n 
f  Y$-_$n .  f  0* j =@`  *0* j =@J g  0.H j  P =@0.j =@J. g  0.D@=@/. U/. `0n? c?* NUsJf PL N^ _PNNVH  $n A C""J g  "p  j  P( @ f  0.@ =@J g  "p  j  P( @ f  0.@ =@Hn?<?<HnJ g  :p  j  P( @ f  &0.@ ? ?.0.@ ? 0.S@? J g  :p  j  P( @ f  &?.0.@ ? 0.S@? 0.@ ? *  n ( og  0.@ =@0.@ =@Hn0.W@? 0.W@? ?<BgBg?<?<BgBg?<?< BgBg?< ?<Bg0.W@? 0.W@? Bg?<?<BgL N^.Nu    NV /. Hn ?< NB0. N  HA/0  Hn /-L0. T@? Hn GN^ _\N    NV?< 6/-LY?<멿+_L/-L?< 5/-LHzz3/-LHzt3/p>-`@m Z=@0.N  HC"q  3n 0.N  HA/0  Hn0.@ f  .HnHnN:HzHnNRHnHn?< NB`  f@ f  .HnHnN:Hz HnNRHnHn?< NB`  2@ f  *HnHnN:Hz HnNRHnHn?< NB0.m`f  4n o  *HnHnN:Hz vHnNRHnHn?< NB/-LHn30.N  HA p  J( ng  /-L0.T@? < ERnQ.N^Nuxxx(- /H /L /D /T NV  H  0. 
N  HE$r  /-L0. 
T@? J. WD HN    EJ. g  0. 
N  HA/0  `  20. 
N  HA/0  0. 
N  HA/0  L N^.Nu    NV  m `f  
B. `  h|  0-`R@;@`"n 2  n 0N   A.0   f   n 0R@"n 2` m `f  /-D?< :/-TBg:N^.NuNV  H 0$n &mHR5k D Hk FHj /<   N5k H 5k J  + LN   5@ L N^.NuNVH   n Cp"Q$mHn䨙?.Hn _? ?.?.0.H/ L N^.Nu    NV  J. g  "0. N  HA</0  ?. 
9`  0. N  HA</0  ?. 
:N^ _\N    NVHnBgBgBgBgUHm6HnBg< < < < < B'NrHN   @ N^Nu    NVHnBgBgBgBgUHm6HnBg< < B'< < < NrHN   @ 
J. g  $0-`N  HC"q  "i "Q3| HN^ _TN    NVp  n  P( J@g V/. N* n  PA C""    g  HnHn?< ?< 0.nH/ HnN"/<   dHnN"HnHn?<  n  P0(  n  Ph  n  P2( H/HnN"H/ HnN"HnHn?< HnHn?< /<   dHnN"HnHn?< 0.H/ HnN"HnHn?<  HnN2 N   =@AC""0.W@=@AC""=n=nHnHmԨHnHmܨ0.n=@n dn  =| `  =| 
0.H/ HnN"0.H/ HnN"HnHn?< HnHn?<?.0.Y@? ?.Bg/0.S@r> Am  p=A0.H/ HnN"HnHn?<0.H/ HnN"HnHn?<  HnN2 N   ? ?.Bg?<RnQ./. N2N^ _O N    NVp  n  P( J@g  &U/.  n  PHh Jg  "n #|    N^ _O N    NV  /.  n  PHh N^ _O N    NV  B 0. @  f  /. /. /N`  2@ f  /. /. /N`  @ f  /. /. /NN^ _O NNVH  0. N  HE$r  Y N   =@Hnt/-.mYHmV-_J g  /* HmVJ g  /* HmVJ g  
/* Nʨ/.s/.N*-|PICTYY/.N"/. n/ N   =@/.N2/.L N^ _TNNVH  0. N  HE$r  ?. N-|PICTYB/.Hn-_Jm  ,YBN-_Y/./.Hn-_%n `  -|TEXTYB/.Hn-_Jm  rHnt/-.mYBN-_Y/./.Hn-_/.N*YHmV-_ n//.HmVBgΨ%n /.s/.N2/.NL N^ _TNNVH /-H?< :Jn f  j/-H?< :/-H?< :/-H?< :/-H?< :/-H?< :/-D?< :/-D?< 
:/-D?< :/-D?< :/-L?< :` 0. N  HE$r  /-D?< 9/-D?< 
9/-D?< 9/-D?< 9/-L?< 9J g p j  P0(   j  Ph "f  x/-H?< :/-H?< :/-H?< :/-D?< 
Hn?< NXHnG/-D?< Hn?< NXHnG/-D?< Hn?< NXHnG`  t/-H?< 9/-H?< 9/-H?< 9/-D?< 
Hn?< NXHnG/-D?< Hn?< NXHnG/-D?< Hn?< NXHnGYN  Jf  /-H?< :`  /-H?< 9 j  PJh Hl  =| `  =| 
/-L?< Hn?.NXHnG/-H?< 9` /-H?< 9/-H?< 9/-H?< 9YB/<PICTHn J^D YB/<TEXTHn&  J^D  g  /-H?< 9`  /-H?< :/-D?< 
Hn?< NXHnG/-D?< Hn?< NXHnG/-D?< Hn?< NXHnGJ* g  =| `  =| /-L?< Hn?.NXHnG/-H?< :LN^ _TN    NV  ?< N^NuNVH  Y$-_Jg  >$nJ g  /* ة?* NJ| q`  ?* NZ?* N?* NjL N^NuNVH  Y$-_Jg  6$nJ g  /* ة?* NJ| q`  
?* NZ?* NjL N^NuNVH  Y$-_Jg  0$nJ g  /* ة?* NJ`  
?* Nb?* NjL N^NuNVH  Y$-_Jg  0$nJ g  /* ة?* NJ`  
?* N?* NjL N^Nu    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV/. Hn ?< NBHzHn Nb0J@f  Hn /. ?< NB` tHn Hn ?< NBHzhHn ?< NB=|=| =| HzHHn Nb=_Jno =n0.R@N   r A 0  A #WD HN   @J.g  0.R@=@HnHn 0.R@? ?< NZHnHn?< NBHn HnN:HnHn ?< 0.S@? NZHnHnNRHnHn ?< NBHnHn 0.T@? p . nS@? NZHnHn ?< NBHnHmNb=_Jno  n f  "HnBgNjXHnHn ?< NB`  &0.N   4A<Hp  Hn ?< NBJ.g   HnHn NXHnHn ?< NBJno  *Hn?.Hn N"XHnHn ?< NB=|Hn HnN:Hn HnNRHnHn ?< NB` 2p .? HnNrHn?< <NzHn?< >NzHn?< =NzHn?< $NzHn?< %NzHnNg HzHn ?< NBp .? HnNrHn?< 0?< 9NHnNg  lHn HnN:HnHn ?< ?< NZHnHnNRHnHn ?< NBHnHn ?< p . S@? NZHnHn ?< NB` lUHn NB=_p .@ <f  p . =@0.D@=@`  @ >f  p . =@=n`  @ %f  =n`  @ $f  (Hn?.Hn NXHnHn ?< NB`  @ =f  Jno  .Hn0.n? Hn NXHnHn ?< NB`  hHnHn ?< ?.NZHn0.D@? HnHn 0.R@? p . n? NZHnNXHnHnNRHnHn ?< NBJnf Hn HnN:Hn HnNRHn/. ?< NBN^.Nu#  #      NV/. Hn?< NB/. Hn?< NBHnHmNb=_Jno  &0.N   4HnA<Hp  ?< 2NBN^ _PN  1x     NV  J. f  |  
`  B. 
N^ _TN    NV/. Hn ?< NBHz jHn?< NB/p>. @m  6=@HnHnN:Hn HnNRHnHn?< NBRnQ.Hn/. ?< NBN^ _\N      NV /. Hn ?< NBHn ?. Hn Hn N:Hn ?. BgN*XHn Hn NRHn NXHn /. ?< NBN^ _PN    NV n  o  0. @ =@ n c o  Hz jHn ?< NB`  Bn l  Hz PHn ?< NB`  $Hn ?. ?< N*XHn Hn ?< NBHn /. 
?< NBN^ _TN **-**    NV  0. S@H H@R@=@ n x o  "n  `   n BN^ _\N    NV  0. 
@ <=@ 
.  f  0. 
@ <=@ 
=n 
 N^.NuNV H  $n Hn Hn ?< N"XHn NXHzHn NRHn ?BgN*XHn Hn NRHzHn NRHn Hn ?< N"XHn NXHn Hn NRHzHn NRHn ?* BgN*XHn Hn NRHn Hn ?< NBHn Hn N:Hz^Hn NRHn Hn ?< 	N"XHn NXHn Hn NRHz.Hn NRHn 0* R@? BgN*XHn Hn NRHzHn NRHn Hn ?< N"XHn NXHn Hn NRHn Hn ?< NBHn Hn N:Hz Hn NRHn 0* j ? BgN*XHn Hn NRHz Hn NRHn Hn ?< N"XHn NXHn Hn NRHz \Hn NRHjHn NRHn Hn ?< NBHn /. ?< NBL N^.Nu:  ,  :  ,  :    ,  :      NV/. 
Hn ?< NBHn/. NXHnHn ?< NBHz jHn NJf  DHz \HnN:Hn?. BgN*XHnHnNRHnHn ?< NBp .@Hn /. ?< NBN^ _O 
N   NVH B.  n 
JPf  0-R@"n 
2/ n 
0S@r> Am  X=A0. >AJp  ^D Jn WD4. >A60  n WDg  "n 
2|  RnQ.L N^ _\NNVH  /. Hn?< NB| 0- >EE  HnHj 
?< NB5n  4 
5n  Bj B* L N^ _O 
NNVH  HzHn?<0. H =@ n 
0( S@2. SAH/ HnN"H/HnN"HnHn?< HnHn?<$n 
/p>* @m ,=@/p>@m =@/p ~ m  @.H2. A2.Ar A0  =AJno  0.nn  D0.S@H/ HnN"HnHn?<HnHn?<HnN2 R=@`  F0. nH/ HnN"HnHn?<HnHn?<HnN20* H=@.H2. A2.A2.C  R.Sd .RnQ.RnQ.L N^ _\N?ѷXe+NVH  $n HnNrHnHj/<   NHnNrHnHj/<   N| | | /p>* @m n=@/p>@m T=@0. 2.Ar Am0  =A0. 2.Ar A0  =A0.n2* RAAg  B*n WD n WDg  | `  0.j WD 2.j WDg  | `  JnWD JnWDg  B*HnNrHn?.NzHjHn/<   NjHnHnNHnHj/<   NHnNrHn?.NzHjHn/<   NjHnHnNHnHj/<   N`  B*RnQ.RnQ.L N^.NuNV H  $n HzJHjNJf   Hn ?< N"XHn Hj?< PNBHzHjNJf   Hn ?< N"XHn Hj?< PNBHz HjVNJf   Hn ?< N"XHn HjV?< PNBHz HjNJf   Hn ?< N"XHn Hj?< PNBHz HjNJf   Hn ?< N"XHn Hj?< PNBHz nHjLNJf   Hn ?< N"XHn HjL?< PNBHz BHjNJf   Hn ?< N"XHn Hj?< PNBL N^.Nu              NV H  $n Hz HjNHz HjVNHz HjNHz HjNHz HjNHz Hn ?BgN*XHn NHz rHn ?* BgN*XHn NHz XHn 0* R@? BgN*XHn NHz :Hn 0* j ? BgN*XHn NL N^.NueEaApnNrRNV  H  0.  >EE  Hz Hj 
NL N^ _TNiNV  H  0.  >EE  /* *N*?. N j */N
/* *N2L N^ _TN    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH B.0.  >EE  J *g  
/* *N-|   .d   .R-@Y/.N%_ */* *N* j *-P0.  >AJ  f  
NZ` $nBBHn/. 
NXHnHn?< NBHzHnNb0J@WD @J.g  VUHnNB4UHn/. 
NXHnNB5_ Bj UHn/. 
NXHnNB5_ B*B*`  UHnHnHzNXHnNB4UHnHnHzvNXHnNB5_ UHnHnHzXNXHnNB0S@5@ UHnHnHz6NXHnNB0j 5@ UHnHnHzNXHnNB=_U0.H/ BN_U0.H/ /<   N_U0.H/ /<   N_HnNrHn?NzHn?* NzHnNrHnBg?< NHnHnNf  Hn/. 
NXHnHj?< PNB/p>* @m H=@Hn/. 
NXHnHn?< NB/p>@m =@J.g  (HzHn?< NB0.r A0  A`  $HnHnHzNXHnHn?< NBHzHnNJf  BnBn`  dHzHnNJf  =| =| `  DHzHnNJf  =j =j `  $UHnNB0j =@0* R@n=@0. 2.A2.Cm  0. 2.A2.C  RnQ.RnQ./p>* @m  v=@/p ~ m  \@.H2. 4AHn/. 
.HIAHp ?.& NXHnAHp0 ?< 2NBR.Sd .RnQ./p>@m  P=@0. 4Hn/. 
Hn?< & N"XHn?.NXHnAHp0 ?< 2NBRnQ.Hn/. 
NXHnHj?< PNBHn/. 
NXHnHjV?< PNBHn/. 
NXHnHj?< PNBHn/. 
NXHnHj?< PNBHn/. 
NXHnHjL?< PNBHn/. 
NXHnHj?< PNB/.N/.N| 0.  >EE  /* *N2J.g  
4 `  J *g  /* *NB *n LN^ _\N,,,,,, ,UNB    NV0.  22. 
SA H/ HnN"H/HnN"HnHn?< A"n ""2N^ _\N    NV0.  d2. 
SA H/ HnN"H/HnN"HnHn?< A"n ""2N^ _\NNVH  $n Jj WD j 
 ]D@BnJ.g  0.R@=@J*g  0.T@=@J*g  0.X@=@/. Hn?BgN*XHzHnNRHn?* BgN*XHnHnNRHzHnNRHn0* R@? BgN*XHnHnNRHzHnNRHn0* j ? BgN*XHnHnNRHzHnNRHn?.BgN*XHnHnNRHnN/. HjN/p>* @m j=@/p>@m H=@0. 2.Ar Am0  =A0. 2.Ar A0  =A0.n2* RAAf  ,Hn0* n? BgN*XHnHn?< NB`  JnWD JnWDg  HzHn?< NB`  rn WD n WDg  HzHn?< NB`  D0.j WD 2.j WDg  HzVHn?< NB`  HzDHn?< NB/. HnNJ.f  0.Rl  /. HzNRnQ./. NRnQ./p>* @m  N=@/p ~ m  4@/. .H2. 4AAHp  NR.Sd .RnQ./p>@m  &=@/. 0. 4AHp  NRnQ./. HjN/. HjVN/. HjN/. HjN/. HjLN/. HjNL N^ _PN,,,,UNB?,NVH  $n Bn/p>* @m  0=@U?.0. 4r A0  ?Nr=_RnQ.?. Hn?< N"XHnNb?. Hn?< N"XHnNb?. NjHn0.X@? HzNXHzHnNRHnHn?< NB/p>@m  T=@HnHnN:Hn?.?< N*XHnHnNRHzHnNRHnHn?< NBRnQ.?. HnHnN:HztHnNRHnNb?. Hn0.X@? HzRNXHn0 V@? Hz<NXHnHnNRHnNb/p>* @m <=@0. 4AHp  Hn?< NBHnp .2.@?HzNXHnHnNRHn?.?< N*XHnHnNRHzHnNRHnHn?< NB/p>@m =@0. 2.Ar Am0  =A0. 2.Ar A0  =A0.n2* RAAf  .Hn0* n? ?< N*XHnHn?< NB` 4JnWD JnWDg  <HzHnN:Hn?< 
N"XHnHnNRHnHn?< NB`  n WD n WDg  <HzHnN:Hn?< N"XHnHnNRHnHn?< NB`  0.j WD 2.j WDg  <HzTHnN:Hn?< N"XHnHnNRHnHn?< NB`  8HzHnN:Hn?< 
N"XHnHnNRHnHn?< NBHnHnN:HnHnNRHnHn?< NBRnQ(.?. HnHnN:HzHnNRHn?.?< N*XHnHnNRHzHnNR0. 4AHp  HnNRHnNb?. Hn0.X@? HzJNXHzBHnNRHn0 R@? Hz*NXHnHnNRHzHnNRHnNbRnQ.?. Hn0.X@? Hz NXHn0 V@? Hz NXHnHnNRHnNb/0~@n  l=@DG?. Hn0.^@? Hz NXHn0.S@? Hz NXHnHnNR0. 4AHp  HnNRHnNbSnQ.L N^ _\N *   * *  *              *   * * * *      NV?. Hn?< HzNXHzHnNRHnNZ/p>. @m  ,=@?. Hn?.?< N*XHnNZRnQ.?. HzxNb?. Hn?< HzfNXHn0.  T@? HzNNXHnHnNRHnNb/p>. @m =@?. Hn?.?< N*XHz
HnNRHnNZ/p>. @m  >=@?. Hn0. 2.Ar  n 0 ?NXHnNZRnQ.?. Hz Nb0.n f  Hz Hn?< NB`  Hz Hn?< NB?. Hn?< Hz pNXHz hHnNRHn?. HnNXHnHnNRHz @HnNRHnNbRnQ.N^ _PN ** * * ****    **    NV/. Hn ?< NB/. Hn ?< NB?. Hnp . V@? HzNXHzHnNRHnNZ/p>. @m  0=@?. Hn?. ?.Hn NXHnNZRnQ.?. Nj?. Hn?< HzLNXHn0.  X@? Hz4NXHnHnNRHnNb/p>. @m  =@?. Hnp . T@? ?.Hn NXHz HnNRHnNZ/p>. @m  =@J. WD 2.nWDg  (Hn?. Hz NXHnHn?< NB`  JHn0. x2.IA n Hp Hn?<Hn?. ?. N:XHnHn?< NB?. HnNZRnQf.?. NjRnQ.N^ _O N * * *  NVH   n Cp"Q2Hnt/-.m< B'N$n HnHnHnHnN=nBg?.֨Hn?< N"XHnHn?< NBHnȨUHnȨ=_0.n=@Bg?.֨Hn?< N"XHnHn?< NBHnȨU?.UHnȨNr=_0.nn=@HnHnHnHnNHnHnHnHnNU?.?.Nr=_HnHnHnHnNU?.?.Nr=_0.H n=@BnBn0.H=@HnHnHnHnN/p>* @m  R=@U?.U0. 4AHp  Nr=_U?.U0. 4AHp  Nr=_RnQ./p>* @m  0=@U?.U0. 4AHp  Nr=_RnQ.=n0.n=@Hn0.H n? 0.H n? 0.n2.H A? 0* nn2.H A? Hm䨝HnHm쨝HnHnHnHnN/p>@m  V=@Hn?.BgN*XHnHn?< NB0.n=@UHnȨ0.Ԑ_? ?.֨HnȨRnQ.0.n2.H A=@/p>* @m =@HnHnHnHnN0. 4AHp  Hn?< NBUHnȨ0._? ?.֨HnȨHnHnHnHnN0.n=@Hn?.BgN*XHnHn?< NBUHnȨ0.Ԑ_? ?.֨HnȨ/p>@m ~=@0. 2.Ar Am0  =A0. 2.Ar A0  =A0.n2* RAAf  ,Hn0* n? BgN*XHnHn?< NB`  JnWD JnWDg  $Hn?< 
N"XHnHn?< NB`  n WD n WDg  $Hn?< N"XHnHn?< NB`  `0.ΰj WD 2.̲j WDg  $Hn?< N"XHnHn?< NB`   Hn?< 
N"XHnHn?< NB0.n=@UHnȨ0.Ԑ_? ?.֨HnȨRnQ.0.n=@Hn?.BgN*XHnHn?< NBUHnȨ0.Ԑ_? ?.֨HnȨHnHnHnHnN0. 4AHp  Hn?< NB0.n? ?.֨HnȨ0.n=@RnQ..0.nn=@0.H n=@0.n=@HnHnHnHnN/p>@m  V=@Hn?.BgN*XHnHn?< NB0.n=@UHnȨ0.Ԑ_? ?.֨HnȨRnQ.=n0.n=@0.n=@Hm䨝HnHnHnHnN/0~@n  =@DG0.n2.H A=@?.0.H n? ?.0.֐n2.H A? 0.H 2.Β@??.֨0. 4AHp  0.n=@SnQv.Hm쨝=nȨHm|?<?<?.?.Ȩ/.sL N^ _PN    NV n Cp"Q2HnHnN
/.?< ,HnHn?< "N"XHnN/.?< +HnHn?< #N"XHnN/.?< *HnHnHn?< N"XHnNXHnN/.?< )HnHnHn?< N"XHnNXHnN/.?< (HnHn?< $N"XHnN/.HnrNrHnr?< (NzHnr?< HnNHn-_UHnHn/.N=_0.@ (f  Hn-_`  v@ )f  Hn-_`  b@ *f  Hn-_`  N@ +f  Hn-_`  :@ ,f  2 nC"2 nC"2 nC"2 nC"2?.HnrNrHnr?< NzHnr?< NzHnrNg 0/.Nn f  A"n p"Q2N^.NuNVH ACp"Q2BnUHn?< NJg h?.NHzdHn?< N"XHnNUHnN=_YB?<OHnHz2N-_/.?< HnHn?< !N"XHnN/.?< 
HnHn?<  N"XHnNHndNrHndHn/<   NJ.g  FHndNrHnd?< NzHnHnD/<   NjHndHnDNHnDHn/<   NJ.g  FHndNrHnd?< NzHnHnD/<   NjHndHnDNHnDHn/<   N/.Hn?< HnNHz>HnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HndNrHnd?< NzHndHnN/.HndNrHnd?< NzHnd?< HnN`  >/.?< HnHnN/.HndNrHnd?< NzHnd?< HnNJ.f  */.HndNrHnd?< 	?< 
NHndHnN/.HmHnU/.Hn?.NJf ,?.HndNrHnd?< ?< NHndNg  n WD ?< HnHnd/<   & NjHndNWD  g  HndNrHnd?< ?< NHnHnD/<   NjHnDHndNHn$NrHn$HndNg  V/.HndNrHnd?< 	?< 
NHndHnN/.HndNrHnd?< NzHnd?< HnN`  */.HndNrHnd?< 	?< 
NHndHnN`  ?< HnHnd/<   NjHndNVD @?< HnHnd/<   NjHndNVD @n f  ACp"Q2`  n f  
HnNz?.HndNrHnd?< NzHnd?< NzHndNg n f  Hn/.?< 
HnNXHnHn?< NB?< 
HnHnd/<   NjHndNVD @?< HnHnd/<   NjHndNVD @?< HnHnd/<   NjHndNVD @/.Nn f `0. >EE  /* *N* m/Q?< Hn?< N"XHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.HA/0  0.HA/0  ?.Nj?. j */NJ?.NjJ.g  RUNBJg  F j */HnNr?-`Hm|N?-`/-x/-tN?-`Hn?< N"XHnNHmQ/* *N2LN^NuP!B1 2 3 4,R10 11 12,C7 8,S6 9,T-13      NV Hn ?< N"XHn Hm?< NBHn ?< N"XHn Hm?< NBB-N^Nu  Wx`      NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV/. 
Hn ?< NBUUHn ?. HnNzNRJg  UU?.HnNNRJg  Y/.N-_Jg  /.N*UU?.Hn n/NNRJg  P n-P-n0-R@;@UHn?-N*Jg  Hn ?. ?< ?< N`  0-S@;@/.N2/.NUU?.NNRJg  N^ _\NNV H /. 
Hn ?< NB0-@ g  
@ f  Hn ?. NB`  @ 
f  L0-R@;@0-N   >YHn ?. & NC#0 Hn ?. ?< ?< N`  @ f  bUB'NJJg  P0-`N  HA/0  Hn 0-`N  HC"q  3n  ?-`YHn ?. NN`  f@ f  ^UNBJg  R0-`N  HA/0  Hn 0-`N  HC"q  3n  ?-`YHn ?. NBNL N^ _\NNVH 0. @ f  XJ-cWD -b?-HnNrHn?< 
?< & NHnNVD  g  EdHj 
?* NJ=| e `  @ f  </. ?< HnHnHnU/.`0@ WD HN   @c`  b@ f  +|GRID`  N@ 
g  @ g  
@ f  +|TEXT`  *@ f  +|PICT`  @ fg  
@ gf  B-b?. HnNrHn?< 
?< NHnNg  ;n =| e /. ?< HnHnHnJ-cg  /.Bgc`  /.?< c/p~@m  =@?.HnNrHn?< 
?< NHn?< ?< NHnNg  <0-രnf  =| `  Bn/. ?.HnHnHn/.?.cRnQ.=n  LN^ _\N    NV n  (  f  |B.?-HnNrHn?< 
?< NHnNg  L/p>-媞@m  <=@0.N   >AHp   n /( NJf  | RnQ.`  | .HN   @ N^.NuNVH  Hn?< U?< (+|GRID;| | cB-b/.Hz VHmZ?<HnHmRHmd?<BN EdJg  Hj 
?* NJ| b`  | cJ-cg L N^Nu      NV/. Hn ?< NB n /( ?.  n Hh n Hh n Hh?. HnNrHn?< 	NzHn?< 
NzHnNg   n /(Hn `  .Hz 4Hn NJg   n /(Hn _`   n /(XN^ _O 
N      NVJ-ag  \B-aHz/-LNJg  ?< 
/-L/Nj?< 	/-\/Nj?< 
/-X/Nj?< /-T/Nj?< /-P/Nj?. HnNrHn?< 
?< NHnNg  ~Y/<   0. @ 
? \ N   =@Y0-H/ /<    . Jf  BmY0-H/ 0.H/  . N   ;@=| d `  n  f  Y0-H/ /<    .    f  /. ?< HnHnHn/.Hn/-HHnNJg  /p>-媞@m  =@0.N   >AHp  Hn?< NBHnHnNJf  NU?< Hn?< N:XHnHnHz Hz NJ=_/./-H/. ?< Bg?<~=| d RnQz./p ~@m  =@Y/<   ?.\ N   =@Y0-H/ 0.H/  . 2.Hf  =| `  Bn/. 0.@ 
? HnHnHn/.?.cRnQ.=n  N^ _\N          NV/.  Hn ?< NB/. Hn ?< NB/. Hn ?< NB/. Hn ?< NB/. Hn ?< NB/. Hn ?< NB/. Hn ?< NB;n &;n $| aHn +_HHn +_LHn +_\Hn +_XHn +_THn +_PHn?< U?< (/.Hn Hn Hmb/. *?. (BN =m .N^ _O &NNV  H 00. N  HE$r  /* N*&j &S'n  >Y/. N" N   7@ </* N2/* ة/<  /<  /* ة?. NJB* L N^ _\N    NV/. 
Hn ?< NBBUUHn ?. HnNzNRJg  UU?.HnNNRJg  Y/.N-_Jg  d-|    .-@/.N*UU?.?< /.NNRJg  UU?.Hn n/NNRJg  /.N2UU?.NNRJg  -n N^ _\N    NV/. 
Hn ?< NBUUHn ?. HnNzNRJg  UU?.HnNNRJg  bY/.N-_Jg  2/.N*UU?.Hn n/NNRJg  /.N2UU?.NNRJg  `  B-n N^ _\NNVH 0/. Hn ?< NBUUHn ?. 
HnNzNRJg  UU?.HnNNRJg  Y/.N-_Jg  /.N*UU?.Hn n/NNRJg  x0. N  HE$r  /.N2/* N*&j &S'n > .N   7@ </* N2/* ة/<  /<  /* ة/* بB* 5n 
 UU?.NNRJg  L N^ _PNNVH  /. Hn ?< NB0. N   >EE  /* *N* j *-PUHn ?. 
N=_UUHn ?. 
/. /. NNRJg  UUHn ?. 
HnNzNRJg  YBN-_/./.NB/.N*Y/.N"-_UU?.Hn n/NNRJg   $n%jHn ?. 
?< ?< N/.N2/.NUU?.NNRJg  UUB?. 
NNRJg  0. N   >EE  /* *N2L N^ _O NNVH 0Jn f  =m=| `  =n =n /0.>.@n =@ DG0. N   >EE  /* *N* j *-P&n +g  Jj g  <UUHj 
?* HnNNRJg  /./.Hj 
?* ?. N
`  UHn?<?< ?< Hn?< N:XHnHj 
Hz tHz vHz xHz ~Hz |N0@ f  +|GRID`  
+|TEXTJ.g  /<CDKS/-Hn?.?. N
/* *N2Sn Q.L N^ _TNData Grid GridText         NVBn| UHn?< NJg  B.0.N   >AHp  Hn?< NBUHn?<?< ?< Hn?< N:XHnHnHz bHz dHz fHz lHz jN0@ f  +|GRID`  
+|TEXTJ.g  /<CDKS/-Hn?.?.N
J.g 8N^NuData Grid GridText     NVH  /. 
Hn ?< NBUHn ?. N=_Y$-_Jg $nUUHn ?. /. /. NNRJg lUUHn ?. HnNzNRJg NJ f  /p>< @m  $=@0.N  HABp  RnQ.UHnHn/<   N =_Y?* N-_/.N*U/./.N =_/.N2/./.N*Y/.N"-_UU?.Hn n/NNRJg  /.N2/.N`  :?* HnNUU?.Hn/.NNRJg   j  P/( >N2/.Hn 5n  B* UU?.NNRJg  UUB?. NNRJg  L N^ _O NNVH  Y$-_Jg r$n* . g b/.HnJj WD . g J f  l-|PICTUHn?<?< ?< Hn?< N:XHnHnHzHzHzHz"Hz N0@ f  +|CDKS`  
+|MDRW`  -|TEXTUHn?<?< ?< Hn?< N:XHnHnHz Hz Hz Hz Hz N0@ f  +|CDKS`  &@ f  +|MACA`  @ f  
+|MSWDJ.g  /-/.Hn?.Nz`  4UUHn?* HnNNRJg  /./.Hn?* NzL N^ _TNPictureKSS0 McDraw     Text KSS0 McWriteWord   NVH0Y$-_Jg `$nJ f  Y?* N-_`  >?* HnN j  P=h J j  PHh LHn/<   N j  P=h P/-N*U/-N RJg &m&SY/-BBN Z-_?.Hn _? ?.HnHnHnN
0.H n=@B./.BN jUN 0J@f  J f |0* ʐj H/ HnN"0+ H/ HnN"HnHn?< HnHn?<0* Ȑj H/ HnN"0+ H/ HnN"HnHn?< HnHn?<HnHn?<HnHn?<
o  -n/<   HnN"HnHn?<HnHn?< 
d  /<   HnN"HnHn?<HnBgBg0-\H/ HnN"HnHn?<HnN* N   ? 0-ZH/ HnN"HnHn?<HnN* N   ? /.Hnʨ| `  ~Bn=nJo  ZHnHnNXHnHn?< NB?.?.Hn0.n=@0.k ^D HN   @`  | ..g /.N rUN 0J@VD .g /.N b+  DWD U& N 0J@WD  g  /-BBBHnN z/-N2J g   j  P/( >N2`  /.ڨLN^Nu    NVU/-N BHN   @U/-N JHN   @N^Nu    NVHnHnNbn f  `  Jnf  `  /p>.@m  =@?.HnNjGRIDf  Hn?.NB`  rTEXTf  Tp .@ o  BHnHn?< ?< NZHz VHnNJf  ?< HnNHn?.?< Nr`  HnHz &Hz $Hz "?.NrRnQZ.N^NuLog          NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH 00.  >EE  J :f  ,-|  -( .(d   .(R-@(Y/.(N%_ :/* *N* j *-P$/* :N* j :-P $n$&n n 
-n -'j-/<   dHnN"0H/ HnN"HnHn?< HnHn?<0* H/ HnN"Hn?<  HnHn?<HnHn?< HnHn?<J. g >/0S@r > Am  ^=A0.H2nH/HnN"2H/HnN"HnHn?< Hn?<  HnA,Hp  ?<RnQ./p >@m  =@/p>@m  =@0. x2.IA2.H/HnN"2.H/HnN"HnHn?< 2nH/HnN"2H/HnN"HnHn?< HnHn?<  Hn?<  HnAHp  ?<RnQd.RnQJ.`  j/p>@m  \=@0.H2H/HnN"2.H/HnN"HnHn?< Hn?<  HnA,Hp  ?<RnQ./p ~ m 	^@/p>* @m 	@=@J-f 	,/p>* @m  =@0.A	B0  RnQ./p>@m  j=@.H2. A2.Ar A0  .H4. B4.Bt A0  p A	0  R@C	 RnQ.BnBHnN"HnHn?</0* ~@n  =@DG0.r A	0  =A0.n=@0.2.Cm  Jno  d0.H/ HnN"Hn?<  0.H/ HnN"HnHn?< HnHn?<HnHn?< HnHn?<SnQb..H x2.IA2H/HnN"Hn?<  2H/HnN"HnHn?<HnHn?< HnHn?<  HnAHp  ?</p ~ m :@/p>* @m =@J-f BnJ. g |/0* S@r > Am  =A0.HA@Bp  RnQ./p>@m  =@.H2. A2.Ar A0  .H4. B4.Bt A0  B=AJ. 
g  U?.0.D@? Nr=_`  UBg?.Nr=_0.H2.IA@40 RBC@3  U?.?.Nr=_RnQJ.HzXHn?<Bn/p >.@m ^=@0.H2.A@p  =ABHnN"HnHn?</p>@m =@.H2. A2.Ar A0  =A0.nR@=@U?< 0.n? Nr=_.H2. A2.Ar A0  =AJ. 
g  0.j o  
Bn`  0.r Am0  =A0.n]D 2.n\Dg  :0.HHnHn?<A,Hp  Hn?< HnHn?<`  N0. x2.t Am0 nJBHnHn?<AHp  Hn?< HnHn?<`  0.nl  :0.HHnHn?<A,Hp  Hn?< HnHn?<`  J0. x2.t Am0 JBHnHn?<AHp  Hn?< HnHn?<RnQ$.HnHn?<HnHn?<
o  -n=n=nRnQ.` /p>@m  =@.H2. A2.Ar A0  .H4. B4.Bt A0  B=AJ. 
g  U?.0.D@? Nr=_U?.?.Nr=_RnQ|.BHnN"HnHn?</p>@m @=@.H2. A2.Ar A0  =A0.nR@=@U?< 0.n? Nr=_.H2. A2.Ar A0  =AJ. 
g  n0.j o  
Bn`  0.r Am0  =A0.r Am0  nIHnHn?<A,Hp Hn?< HnHn?<`  @0.r Am0  IHnHn?<A,Hp Hn?< HnHn?<=n=RRnQ..H.HA2. A2.A2* nC   HnHn?<HnHn?<HnHn?<0. x2.IAC#  .H.HA2. A2.AHnHn?<HnN2"C  .H.HA2. A2.A2.H/HnN"HnHn?<HnHn?< HnN2"C  0* H.H n.H An 2*  H/ HnN"H/HnN"HnHn?< HnNBRnQ.R.Sd .RnQ.R.Sd .0.  >EE  /* *N2/* :N2L N^ _\N      NVH00.  >EE  /* *N* j *-P/* :N* j :-P$n&n=j /p ~ m  @/p ~ m  h@/p>.@m  J=@.H .H xA2.IAHnNrHnA+Hp  /<   NRnQ.R.Sd .R.Sd ./p ~ m :@/p ~ m @/p>.@m  =@/p>.@m  =@0.nVD .H.HB4. B4.Bt A0 k- \Dg  .H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   NRnQ$.RnQ.R.Sd .R.Sd .0.  >EE  /* *N2/* :N2LN^ _TNNVH00.  >EE  /* *N* j *-P/* :N* j :-P$n&n=j | /p ~ m @/p>.@m =@/p ~ m @/p>.@m =@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg ^/p ~ m P@/p>.@m 2=@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg  0.ng  ?..H .H xA2.IAA+Hp  Hn/<   NjHnNf  .H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   NB.RnQ.R.Sd .RnQZ.R.Sd <.RnQ".R.Sd .J.g 0.  >EE  /* *N2/* :N2LN^ _TNNVH00.  >EE  /* *N* j *-P/* :N* j :-P
$n&n
=j /p ~ m @/p>.@m d=@/.~ m H@..f  0.R@=@`  =| /0.>.@m =@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg ?..H .H xA2.IAA+Hp  Hn/<   NjHnNg t.H .H xA2.IAHnNrHn?.& NzHnA+Hp0 /<   N.H U.& NH x@0.H@HnNrHnA+Hp0 /<   N/p ~ m  @/p>.@m  =@..VD 2.nVDg  .H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   NRnQP.R.Sd 2.RnQ .R.Sd .RnQ.R.Sd .A+ Cpw"Q| /p ~ m H@/p>.@m *=@/p ~ m @/p>.@m =@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg /p ~ m @/p>.@m v=@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg &0.ng ?..H .H xA2.IAAHp  Hn/<   NjHnNg  ?..H .H xA2.IAAHp  Hn/<   NjHnNf  .H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzAHp@ Hn/<   NjHnHnNHnAHp0 /<   NB.RnQ.R.Sd t.RnQ.R.Sd .RnQ.R.Sd .J.g AC+ pw"Q0.  >EE  /* *N2/* :N2LN^ _TNNVH00.  >EE  /* *N* j *-P/* :N* j :-P$n&n?. 
NjHzZHn0+- H/ HnN"/<   dHnN"HnHn?< Hn?< ?< N:XHnN?. 
Hn?< NXHnNb=j /p ~ m P@/p>.@m 2=@/.~ m @..f  0.R@=@`  =| /0.>.@m =@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg ?..H .H xA2.IAA+Hp  Hn/<   NjHnNg B.H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   N.H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   NHzHn?< NBHzHn?< NBHzHn?< NB.HHr A0  A.HHr A0  A?. 
HnHnN:Hn?.?< N*XHnHnNRHnHnNRHnHnNRHn?.?< N*XHnHnNRHz.HnNR.H2. 4AAHp  HnNRHnHnNR.H2. 4AAHp  HnNRHnNbRnQ2.R.Sd .RnQ.R.Sd ./p ~ m \@/p>.@m >=@/p ~ m $@/p>.@m =@?..H .H xA2.IAA+Hp  Hn/<   NjHnNg .H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   NHzHn?< NBHz~Hn?< NBHzpHn?< NB.HHr A0  A.HHr A0  A?. 
HnHnN:Hn?.?< N*XHnHnNRHnHnNRHnHnNRHn?.?< N*XHnHnNRHz HnNR.H2. 4AAHp  HnNRHnHnNR.H2. 4AAHp  HnNRHnNbRnQ.R.Sd .RnQ.R.Sd .0.  >EE  /* *N2/* :N2LN^.Nu1 =       >      NVH00.  >EE  /* *N* j *-P/* :N* j :-P$n&n?. 
NjHzhHn0+- H/ HnN"/<   dHnN"HnHn?< Hn?< ?< N:XHnN?. 
Hn?< NXHnNb=j | Bn/p>.@m .=@/p>.@m =@/p ~ m  @/p ~ m  @?..H .H xA2.IAA+Hp  Hn/<   NjHnNg  .H.HA2. A2.Ar A0  no  Rnn=n=n.H.HA2. A2.Ar A0  =AB.R.Sd ,.R.Sd .RnQ.RnQ.J.f ~.H .H xA2.IA.H .H xB4.JBHnNrHn?.& (NzA+Hp@ Hn/<   NjHnHnNHnA+Hp0 /<   N.H.HA2. A2.Ar A 0  =AJ+-g  HzHn?< NB`  HzHn?< NBHzHn?< NBHzHn?< NB.HHr A0  A.HHr A0  A?. 
HnHnN:Hn?.?< N*XHnHnNRHnHnNRHnHnNRHn?.?< N*XHnHnNRHnNZ?. 
HzHnN:Hn0.S@2* SAH/ HnN"H/HnN"HnHn?< Hn?< ?< N:XHnHnNRHnNZJ+-g  ?. 
HzHnN:Hn.H.HA2. A2.Ar A0  H/HnN"/<   dHnN"HnHn?< Hn?< ?< N:XHnHnNRHnNZ?. 
HzHnN:Hn0.H/ HnN"/<   dHnN"HnHn?< Hn?< ?< N:XHnHnNRHnNZ?. 
Hz HnN:.H2. 4AAHp  HnNRHnHnNR.H2. 4AAHp  HnNRHnNbJ.g 00.  >EE  /* *N2/* :N2LN^.Nu1 =  >               NVH 00.  >EE  /* *N* j *-P/* :N* j :-P$n&n=j /p ~ m @?. 
NjHz.HHAHp  N?. 
Hn?< NXHnNb?. 
HzNZ/p>.@m  8=@?. 
Hn?.?< N*XHzfHnNRHnNZRnQ.?. 
Nj?. 
Hn?< Hz6NXHn0. T@? HzNXHnHnNRHnNb?. 
Hz NZ/p>.@m  =@?. 
Hn.H x2.IA/<   dHnN"AHp  Hn?<0* H/ HnN"Hn?<  HnHn?< HnN2 ? ?< N*XHz rHnNRHnNZRnQn.?. 
Hz RNbR.Sd `.0.  >EE  /* *N2/* :N2L N^.Nu1    *  *    * *NVH 00. 
 >EE  /* *N* j *-P/* :N* j :-P$n&n=j /p ~ m H@/p ~ m ,@?. NjHzV.HHAHp  NHz@.HHAHp  N?. Hn?< NXHnNb?. ?..H.HAA Hp  NR?. Nj?. Hn?< NXHnNb?. ?..H.HAA Hp  NRJ. g  N?. Nj?. Hn?< NXHnNb?. ?..H.HAAHp  NRR.Sd .R.Sd .0. 
 >EE  /* *N2/* :N2L N^ _\N12NV`H00.  >EE  /* *N* j *-Pd/* :N* j :-P`Hnt/-.m< B'NHzHn ?.訇?< 	HnHnHnN
0.H n=@=n0.H=@$nd&n`HzhHn`0+- H/ HnVN"/<   dHnLN"HnLHnV?< HnV?< ?< N:XHn`NHn`?< NXHn`Hn?< NBJ+-g  <HnHn`N:Hn`?< 
NXHn`Hn`NRHn`Hn?< NB`  8HnHn`N:Hn`?< NXHn`Hn`NRHn`Hn?< NBJ+-g  8HnHn`N:Hn`?< NXHn`Hn`NRHn`Hn?< NBBg?.HnꨄUHnꨌ=_0.n=@Bg?.Hn`?< NXHn`U?.UHnꨌNr=_0.n=@=n=j /p ~ m  D@/p>.@m  &=@.H 2.AAB0  RnQ.R.Sd ./p ~ m v@/p>.@m X=@n=n/.~ m 0@..f  0.R@=@`  =| /0.>.@m =@?..H .H xA2.IAA+Hp  Hn@/<   NjHn@Ng ?..H .H xA2.IAA+Hp  Hn@/<   NjHn@Ng \.H .H xA2.IA.H .H xB4.JBHn@NrHn@?.& (NzA+Hp@ Hn /<   NjHn@Hn NHn A+Hp0 /<   N.H .H xA2.IA.H .H xB4.JBHn@NrHn@?.& (NzA+Hp@ Hn /<   NjHn@Hn NHn A+Hp0 /<   N.H 2.ACg  .H 2.A2.C  n=nRnQ.R.Sd .RnQ.R.Sd ./p ~ m 0@/p>.@m =@.H 2.Ar A0  JAg  n=nJno  HzHn?< NB.HHr A0  A?. 
HnHn`N:Hn`?.?< N*XHn`Hn`NRHz^Hn`NRHn`NZ.H 2.AAgp  .H 2.Ar A0  =A.H 2.AAB0  n=n` 2?. 
NjRnQ.R.Sd ./p ~ m h@/p>.@m J=@/p ~ m 0@/p>.@m =@?..H .H xA2.IAA+Hp  Hn@/<   NjHn@Ng .H .H xA2.IA.H .H xB4.JBHn@NrHn@?.& (NzA+Hp@ Hn /<   NjHn@Hn NHn A+Hp0 /<   NHzHn?< NBHzHn?< NBHzHn?< NB.HHr A0  A.HHr A0  A?. 
HnHn`N:Hn`?.?< N*XHn`Hn`NRHnHn`NRHnHn`NRHn`?.?< N*XHn`Hn`NRHn`NZ?. 
Hz Hn`N:.H2. 4AAHp  Hn`NRHnHn`NR.H2. 4AAHp  Hn`NRHn`NbRnQ.R.Sd .RnQ.R.Sd .?. 
NjHm|?<?<?.?./.s0.  >EE  /* *N2/* :N2LN^.NuTimes1   >      NVH8A<C"""BnUHn?< NJg r?.NHznHn?< NXHnNUHnN=_YB?<LHnHz<N-_/.?< HnHn?< NXHnN/.?< HnHn?< NXHnN/.?< HnHn?.BgN*XHnNHnrNrHnrHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  JHnrNrHnr?< 
NzHnHnR/<   NjHnrHnRNHnRHn/<   N`  FHnrNrHnr?< 	NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< 
NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   NJ.g  FHnrNrHnr?< NzHnHnR/<   NjHnrHnRNHnRHn/<   N/.Hn?< HnNHzHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnrNrHnr?< NzHnrHnN/.HnrNrHnr?< NzHnr?< HnN`  >/.?< HnHnN/.HnrNrHnr?< NzHnr?< HnN/.HnrNrHnr?< NzHnrHnN/.HmHnU/.Hn?.NJf V?.HnrNrHnr?< ?< NHnrNg *n WD ?< HnHnr/<   & NjHnrNWD  g  ,/.HnrNrHnr?< ?< NHnrBgHnNHnrNrHnr?< ?< NHnHnR/<   NjHnRHnrNHn2NrHn2HnrNg  V/.HnrNrHnr?< ?< NHnrHnN/.HnrNrHnr?< NzHnr?< HnN`  */.HnrNrHnr?< ?< NHnrHnN` UHn/.?< HnNXHnNB=_?< 
HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< 
HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @n f  AC<"""n WD n WDg n f Hn/.?< HnNXHnHn?< NB?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @?< HnHnr/<   NjHnrNVD @| 0. >EE  J :g  ^/* *N*/* :N*&j *&S(j :(T ,-WD ,-.WD,-.WDg  B./* *N2/* :N2/.Nn f TJ.g   HzHn?< 
NXHnN`  Hz~Hn?< NXHnNJ.g  :Hz^Hn?< NXHnNHzFHn?< 
NXHnN`  Hz*Hz(NHz"Hz N?< Hn?< NXHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.HA/0  0.HA/0  ?.NjJ.g  ?.Hn?< NXHnNbJ.g  NHn?< NXHnN*?...NN2J.g  ?.Hn?< 	NXHnNb0. >C"q  "Q3n- J-f HJ.g  J.g  ?.?.NJ.g  ?.?..NJ.g  ?.N?.?.NJ.g  ?.N?.N?.?.NJ.g  &?.N?.N?.N?.?.NJ.g  &?.N?.N?.N?.?.N?.NjJ.g  hUNBJg  \?-`Hn?< NXHnN?.N?.N?.N?.?.N?-`Hm|N?-`/-x/-tN`  0. >EE  /* :NB :LN^NuPEB1 2 3 4,R-9 10,R20 21 22,C11 -12 -13 14 -15 16 17 -18,S6 8 19,T7 -23  88979  7    .v` 	    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH 80.  >EE  &j *&S0.  >I(t  (T)k| 8 /p>+ @m  =@BHnN"HnHn?</p>@m  h=@.H2. A2.Ar A0  H/HnN"HnHn?<HnHn?<  HnHn?<RnQ.0.H2H/HnN"HnHn?<HnHn?< HnAHp  ?<RnQ,./p>+ @m =@/p>+ @m =@BHnN"HnHn?</p>@m  =@.H2. A2.Ar A0  .H4. B4.Bt A0  H/HnN"HnHn?<HnHn?<  HnHn?<RnQz.0. x2.IA2.I4H/HnN"AHp Hn?<2.IAHp Hn?<HnHn?<HnHn?< HnAHp  ?<0. x2.IA2. x4.JBAC#   0. 
H/ HnN"0+ H/ HnN"HnHn?< HnNBRnQd.RnQH.L N^ _TNNV^H  0.  >EE  J 6f  ,-|   .d   .R-@Y/.N%_ 6/* *N*/* 6N*0.  >E$r  $R?. N/p>@m  V=@/p>@m  <=@0. x2.IA2. x4.JBAC#   RnQ.RnQ./p>@m  =@/p>@m  z=@0.nf  60. x2.IA/<   HnN"HnAHp  ?<`  .0. x2.IABHnN"HnAHp  ?<RnQ.RnQt.BHnN"HnHn?</p>@m  =@/0S@r> Am  f=A0. x2.IAAHp  Hn?<Hn/?< HnHn|?<HnHn|?<  Hn|Hn?<RnQ.RnQ./<   HnN"HnHn?<Hn?< HnHn?<HnHn?<HzBHn?< 
d  Hz:Hn?<HnHn?<Hz(Hn?< 0H/ Hn|N"Hn|Hn?< HnHn?<-n=|0H/ HnN"HnHn|?<HnHn|?< Hn|Hn?<| 0.R@=@/0S@r> Am h=AJ-f T/0.R@>@m =@0. x2.IAAHp  Hn?<Hn?< HnHn?<
o B.0. x2.IA2. x4.JBAHp  Hn?<AHp Hn?<A	C|""2HnHn|?< Hn|Hn?<0. x2.IAA-p  HnHn?<Hn?< 
HnHn|?<Hn|/?< HnHnr?<Hnr/?< HnrHn|?<  Hn|?< Hn|Hn?< HnHn?<BHnN"HnHn|?<HnHn|?< 
d  (HnHn?<Hn?< 
HnHn?<HnHn?<Hn/?< /<   Hn|N"HnHn|?< Hn|?< Hn|?< /<   HnrN"Hn|Hnr?<  /<   HnhN"HnrHnh?< Hnh?< HnHn^?<HnhHn^?< Hn^Hn?<HnHn?<Hn/?< HnHn?</<   HnN"HnHn?<Hn?< HnHn?<HnHn?<Hn/?< HnHn?<HnHn?<HnHn?<HnHn?</p>@m t=@0.nVD 2.nVDg F0. x2.IAA-p  0. x2.IAA-p  HnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?< HnHn?<HnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?<  HnHn?<0. x2.IAC#  0. x2.IAC#  0. x2.IAC#  0. x2.IAC#  0. x2.IAA-p  0. x2.IAA-p  0. x2.IAHnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?< HnAHp  ?<0. x2.IAHnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?<  HnAHp  ?<RnQ.0. x2.IAA-p  0. x2.IAA-p  0. x2.IAA-p  0. x2.IAHnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?<  /<   HnrN"HnHnr?<HnHnr?<HnrHn?< HnAHp  ?<0. x2.IAHnHn?<HnHn?<HnHn|?<HnHn|?<Hn|Hn?<  /<   HnrN"HnHnr?<HnHnr?<HnrHn?<  HnAHp  ?<HnHn?<HnHn?<HnHn?<HnHn|?<HnHn|?<HnHnr?<Hn|Hnr?< HnrHn?<  HnHn?<0. x2.IAC#  0. x2.IAC#  RnQ<.0S@nH/ HnN"AC|""2HnHn|?< 0S@H/ HnrN"HnrHn|?< /<   
HnhN"Hn|Hnh?<  HnhNBRnQ..-g nHnHn?<HnHn?<
]D -g J-f /p>@m *=@/<HnN"HnHn?</p>@m  b=@0. x2.IAAHp  Hn?<HnHn?<
o  "0. x2.IAA-p  =nRnQ.BHnN"HnHn|?<HnHn|?< 
d  BHnN"HnHn?<0.HC#  0.2.C  0. x2.IA/<HnN"HnAHp  ?<RnQ./p>@m  h=@0.r A0  =A/p>@m  <=@0. x2.IA2. x4.JBAC#   RnQ.RnQ.0.  >EE  /* *N2/* 6N2L N^ _TN?7li?7li?7li?       @ffffffgNVH  0.  >EE  /* 6N*0.  >E$r  $R?. 
Nj?. 
Hn?< NXHnNb/p>@m =@/p>@m  =@0. x2.IA2. x4.JBAHp  Hn?<AHp Hn?<HnHn?<BHnN"HnHn?<HnHn?< 
o  X0. x2.IAHnHn?<Hn?< AHp  Hn?<HnHn?< HnHn?<0. x2.IACt#  RnQ.RnQ.?. 
?< ?< ??Hz <Hz :< HnNZ?. 
Nj0.  >EE  /* 6N2L N^.Nu    NVH 8Hn?<N0.  >EE  /* *N*/* 6N*0.  >EE  &j *&S0.  >I(t  (T=k BHnN"HnHn?</p>.@m  B=@0.HHnHn?<AHp  Hn?< HnHn?<RnQ./p>.@m  =@0.H/<   dHnN"AHp  Hn?<HnHn?<HnHn?<0.H"n# HnHn?<Hz8Hn?< 
m  =nRnQ.J. g  L?. Nj?. Hn?< 
NXHnNb?. ?< ?< ?< ?.HzHz< /.NZJ. g ?. Nj?. Hn?< NXHnNb/p>.@m  =@0.HAHp  Hn?<Hn?< HnHn?</p>.@m  `=@0. x2.IA2. x4.JBAHp Hn?<HnHn?<Hn nHp ?<RnQ.RnQ\.?. ?< ?< ?.?.HzHz< /.NZ?. NjJ. 
g v?. Nj?. Hn?< NXHnNb| /p>.@m =@/p>@m  =@BHnN"HnHn?</p>.@m  =@0. x2.IA.H4. B4.Bt A0 2.IH/HnN"AHp Hn?<AHp  Hn?<HnHn?< HnHn?<HnHn?<  HnHn?<RnQX.0. x2.IA"n# RnQ
.RnQ.?. ?< ?< ??.Hz ZHz X< /.NZ0.  >EE  /* 6N2/* *N2HnNL N^ _O 
N?
=p            NV  H  E|U?* ?. Nz5_ U?* ?. 
Nz5_ U?* ?. Nr5_ U?* ?. 
Nr5_ U??. Nz4U??. Nz4U?* ?. Nr5_ U?* ?. Nr5_ L N^ _PNNVH 8 n Cp"Q2Hn?<NHn?<N0.  >EE  /* *N*/* 6N*Hm|?<'?<'?<?<Hnިt/-.m< < N0.  >EE  &j *&S0.  >I(t  (T=k BHnN"HnHn?<=| /p>.@m  =@0.HAHp  Hn?<Hn?< HnHn?</p>.@m  `=@0. x2.IA2. x4.JBAHp Hn?<HnHn?<Hn nHp ?<RnQ.RnQ\./p>.@m  =@0. x2. IA nHp Hn?<Hn?< HnHn?<HnHn?<HnHn?<
o  -n0. x2. IA nHp Hn?<Hn?< HnHn?<HnHn?<HnHn?<
o  -nRnQ:.| /p>.@m =@/p>@m  =@BHnN"HnHn?</p>.@m  =@0. x2.IA.H4. B4.Bt A0 2.IH/HnN"AHp Hn?<AHp  Hn?<HnHn?< HnHn?<HnHn?<  HnHn?<RnQX.0. x2.IA"n# RnQ
.RnQ./p>@m  =@0. x2. IA nHp Hn?<Hn?< HnHn?<HnHn?<HnHn?<
o  -n0. x2. IA nHp Hn?<Hn?< HnHn?<HnHn?<HnHn?<
o  -nRnQ:.HnHnHnHnN/p>.@m $=@0. x2. IA2. H/HnN" nHp Hn?<HnHn?<HnN2 =@0. x2. IA2. H/HnN" nHp Hn?<HnHn?<HnN2 =@?.0.D@? 0.D@? ?.?.0.D@? 0.D@? ?.N0. 4AHp  Hn?< NBUHnҨ=_Jnl  =n`  Bn0.n=@0.D@2.H A=@0.Y@? 0.n? 0.nX@? ?.N?.?.?<0Bg?< BgHnN0. 4AHp  Hn?< NBUHnҨ=_Jnm  =n`  Bn0.D@n=@0.H n=@0.Y@? 0.n? 0.nX@? ?.N?.?.?<0Bg?< BgHnNRnQ.HnHnHnHnN/p>@m =@0. x2. IA2. H/HnN" nHp Hn?<HnHn?<HnN2 =@0. x2. IA2. H/HnN" nHp Hn?<HnHn?<HnN2 =@0.n? 0.D@n? 0.n? 0.D@n? 0.n? 0.D@n? 0.n? 0.D@n? 0. 4AHp  Hn?< NBUHnҨ=_Jnl  0.n=@`  0.D@=@0.n=@0.D@2.H A=@0.Y@? 0.n? 0.nX@? ?.N?.?.?<0Bg?< BgHnNRnQP.Hm䨝0. D@? Bg?. BgBg0. D@? Bg?. 0. D@Y@? 0. D@Y@? 0. X@? 0. X@? NHm쨝A|-HJno  HnHnHnHnN0.H n2@"n2 n0( X@?  n0n? ?<0Bg?< BgHn?< NXHnN n0( X@? 0.H nP? ?<0Bg?< BgHn?< NXHnN/.ިs0.  >EE  /* 6N2/* *N2HnNHnNL N^ _O N    NV n Cp"Q2HnHnN
/.?< ,HnHn?< 
NXHnN/.?< +HnHnHn?< N"XHnNXHnN/.?< *HnHnHn?< N"XHnNXHnN/.?< )HnHn?< NXHnN/.HnnNrHnn?< )NzHnn?< HnN/.HnnNrHnn?< (NzHnnHnNHn-_UHnHn/.N=_0.@ )f  Hn-_`  V@ *f  Hn-_`  B@ +f  Hn-_`  .@ ,f  & nC"2 nC"2 nC"2?.HnnNrHnn?< NzHnn?< NzHnnNg P/.Nn f  A"n p"Q2N^.NuNVH ACp"Q2BnUHn?< NJg 
?.NHz
Hn?< NXHnNUHnN=_YB?<NHnHz	N-_/.?< HnHn?< NXHnN/.?< HnHn?< NXHnN/.?< 	HnHn?.BgN*XHnN/.?< HnHn?.BgN*XHnN/.?< 
HnHn?.BgN*XHnNHnbNrHnbHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   NJ.g  FHnbNrHnb?< NzHnHnB/<   NjHnbHnBNHnBHn/<   N/.Hn?< HnNHzrHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnbNrHnb?< NzHnbHnN/.HnbNrHnb?< NzHnb?< HnN`  >/.?< HnHnN/.HnbNrHnb?< NzHnb?< HnNJ.f  */.HnbNrHnb?< ?< NHnbHnN/.HmHnU/.Hn?.NJf R?.HnbNrHnb?< ?< NHnbNg *n WD ?< HnHnb/<   & NjHnbNWD  g  ,/.HnbNrHnb?< ?< NHnbBgHnNHnbNrHnb?< ?< NHnHnB/<   NjHnBHnbNHn"NrHn"HnbNg  V/.HnbNrHnb?< ?< NHnbHnN/.HnbNrHnb?< NzHnb?< HnN`  */.HnbNrHnb?< ?< NHnbHnNUHn/.?< 	HnNXHnNB=_UHn/.?< HnNXHnNB=_UHn/.?< 
HnNXHnNB=_?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @n f  ACp"Q2`  n f  
HnN?.HnbNrHnb?< NzHnb?< NzHnbNg n f  Hn/.?< HnNXHnHn?< NB?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @?< HnHnb/<   NjHnbNVD @/.Nn f F?< Hn?< NXHnNbB.0. >EE  J 6f  | `    j 6 P ( j * Pg  | J.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.HA/0  0.HA/0  ?.NjJ.g  ?.Hn?< NXHnNbJ.g  $Hn?< NXHnN*?.NN2J-f  J.g  P?.Hn?< 	NXHnNbJ.g  ?.?.N?.?....N?.NjJ.g  nUNBJg  b m/Q?-`Hn?< NXHnN?.?.?.0.H? HnN?-`Hm|N?-`/-x/-tNHmQ`  0. >EE  /* 6NB 6LN^NuPEB1 2 3 4,R22 23 24,C7 15 16 17 19 20,S6 8 10 12 14 18 21,T9 11 13 -25    i     NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH0$n &n /p>@m  =@/0.R@>@m  h=@0.N   <& 0.N  H@0.N   <( 0.N  H@A00@ J@jD@C30 RnQ.RnQ.LN^ _PNNVH0$n &n /p~  n @D/p>* @m  =@/p~  n  @D/0.R@>* @m  =@.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@A00@ J@jD@C30 RnQP.S.Sd ..RnQ.S.Sd .LN^ _PNNVH0$n &n J. g  /. /. N7| #(`  0+#(N  dHr A#(0  0N   <& 0+#(N  dHr A#)0  0N  H@0+#(N  dHr A#(0  0N   <( 0+#(N  dHr A#)0  0N  H@A00@ D@C30 0+#(R@7@#(=|=n 
Jn 
o  /p>@m  =@0.N   <& 0.N  H@A000 no  0.ng  v0.N   <& 0.N  H@A=p0 0+#(N  dH& 0.N   C#(0 0+#(N  dH& 0.N   C#)0 RnQH.`  /p>@m  =@/0.R@>@m  =@0.N   <& 0.N  H@A000 no  v0.N   <& 0.N  H@A=p0 0+#(N  dH& 0.N   C#(0 0+#(N  dH& 0.N   C#)0 RnQT.RnQ6.LN^ _O NNVH0$n &n J. g  /. /. N7| #(` U0+#(N  dHr A#(0  ?HnN=_U0+#(N  dHr A#)0  ?HnN=_.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@A00@ D@C30 0+#(R@7@#(=|U?. 
HnN=_Jn 
o /p~  n r@D/p>* @m R=@.HN   & .HN   @0.N   <@0.N  H@A000 no  0.nVD ..VDg  .HN   & .HN   @0.N   <@0.N  H@A=p0 0+#(N  dHU?.& .HN    N0N   C#(0 0+#(N  dHU?.& .HN    N0N   C#)0 RnQ.S.Sd .` /p~  n @D/p>* @m r=@/p~  n X@D/0.R@>* @m 4=@.HN   & .HN   @0.N   <@0.N  H@A000 no  .HN   & .HN   @0.N   <@0.N  H@A=p0 0+#(N  dHU?.& .HN    N0N   C#(0 0+#(N  dHU?.& .HN    N0N   C#)0 RnQ.S.Sd .RnQ.S.Sd x.LN^ _O NNVH0$n &n  *R%@0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@. HN   & 0. N   @0. 
N  @p A00 =@. HN   & 0. N   @0. 
N  @0. N   C0 /p ~ m  @/p>* @m =@.HN   & 0.N   @0. 
N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =nJn^D Jn ^Dg  0.n J@jD@=@`  =n.HN   & . HN   @0.N   <@0. N  H@.HN   ( . HN   @0.N   <@0. N  H@A00@ nnC30 . HN   & .HN   @0. N   <@0.N  H@.HN   ( . HN   @0.N   <@0. N  H@AC3@ 0 RnQ.R.Sd ./p>@m b=@. HN   & 0. N   @0.N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =nJn^D Jn ^Dg  0.n J@jD@=@`  =n0.N   <& 0. 
N  H@0.N   <( 0. 
N  H@A00@ nnC30 0. 
N   <& 0.N  H@0.N   <( 0. 
N  H@AC3@ 0 RnQ.LN^ _O N    NV  /. /. N/. /. N/. /. . HN    ?. ?. ?. 
N/. /. U. HN    NHN    ?. ?. ?. N/. NN^ _O NNVH0$n &n /. /. N *R%@0* S@2* RAH/HnN"/<   HnN"HnHn?< HnN2HN   =@0R@4/p ~ m  f@/p>* @m  H=@.HN   & 0.N   @0N  @AB00 RnQ.R.Sd ./p ~ m @/p ~ m  @/p>* @m  =@/p>* @m  =@.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@A00@ nC30 RnQR.RnQ6.R.Sd .R.Sd ./p>@m  r=@0.N   <& 0N  H@0* HC30 0N   <& 0.N  H@0* HC30 RnQ./. NLN^ _PNNVH0$n &n /. /. N *R%@0* S@2* RAH/HnN"/<   HnN"HnHn?< HnN2HN   =@0* R@5@ /p ~ m  f@/p>@m  J=@.HN   & 0* N   @0.N  @AB00 RnQ.R.Sd ./p ~ m  @/p ~ m  @/p>* @m  =@.HN   & .HN   @0.N   <@0* N  H@0C30 .HN   & .HN   @0* N   <@0.N  H@0C30 RnQJ.R.Sd ,.R.Sd ./p>@m  =@/p>@m  f=@0.N   <& 0.N  H@0.N   <( 0.N  H@A00@ nC30 RnQ.RnQ./. NLN^ _PNNVH0$n &n 
/p ~ m  R@/p>* @m  4=@/. /. 
.HN    ?.?. BgNRnQ.R.Sd .0S@4/0. >@m |=@/p ~ m  @/p>* @m  =@.HN   & 0.N   @0.N  @.HN   ( 0.N   @0.R@N  @p A0@ N   C0 RnQv.R.Sd X./0R@r> Am  d=A0.N   <& 0.N  H@0.N   <2.RA( 0N  H@AC3@ 0 RnQ.0.N   42.RA& 0N   4AHp  AHp0 ?< 2NBRnQ./0. >@m  |=@/p>@m  b=@0.N   <& 0.N  H@0.R@N   <( 0.N  H@AC3@ 0 RnQ.RnQ./. NLN^ _O 
NNVH0$n &n 
/p ~ m  P@/p>@m  4=@/. /. 
.HN    ?. ?.BgNRnQ.R.Sd .0* S@5@ /0. >* @m =@/p ~ m @/p>@m  =@.HN   & 0.N   @0.N  @.HN   2.RA( 0N   @0.N  @p A0@ N   C0 RnQt./p ~ m  @/0* R@r> Am  =A.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.R@N   <@0.N  H@AC3@ 0 RnQV.R.Sd 4..HN   & 0.N   4@.HN   2.RA( 0N   4@AHp@ AHp0 ?< 2NBR.Sd .RnQ./0. >* @m =@/p ~ m  @/p ~ m  @/p>* @m  =@.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.R@N  H@AC3@ 0 RnQV.R.Sd 8.R.Sd .RnQ./. NLN^ _O 
NNVH $n /p>@m  =@0. N   & 0.N  @p A00 =@0. N   & 0.N  @p Am00 =@/. /. 
< ?. ?.?.?.NRnQ~.0. N   4AHp  Hn?< NB0. N   4& 0. N   4AHp  AHp0 ?< 2NB0. N   4HnAHp  ?< 2NBLN^ _O 
NNVH00. 
N   >EE  J .f  ,-|  # .d   .R-@Y/.N%_ ./* *N* j *-P/* .N* j .-P$n&n0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@7| #(/p>* @m =@/0.>* @m &=@/p ~ m @/p ~ m @Bn/p>@m  =@.HN   & 0.N   @0.N  @p A00 =@.HN   & 0.N   @0.N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ8..HN   & .HN   @0.N   <@0.N  H@0* S@ҐnC30 .HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@AC3@ 0 R.Sd .R.Sd .RnQ.J. g  >0. 22* RH/ HnN"H/HnN"HnHn?< HnNBRnQ./p>@m =@/0.>@m =@Bn/p ~ m  @/p>* @m  =@.HN   & 0.N   @0.N  @p A00 =@.HN   & 0.N   @0.N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ8.R.Sd .0.N   <& 0.N  H@0* H2* SAnC30 0.N   <& 0.N  H@0.N   <( 0.N  H@AC3@ 0 RnQn.J. g  B0* n 22* RH/ HnN"H/HnN"HnHn?< HnNBRnQ
.0. 
N   >EE  /* *N2/* .N2LN^.Nu    NV n 0N    n AF=p  0. n Pf  " n 0N    n AH=p   n "n 2"n 2 n JPWD HN   @ N^ _O NNVH   n 0N   $n EFE  Jj ^D Jj ^Dg  =| n =PBn0.R@=@UHnHn/. N	BJg =R n =PBn0.R@=@UHnHn/. N	BJg 0.no  "n 2`  
"n 2L N^ _PNNVH80. 
N   >EE  J 2f  ,-|  N .d   .R-@Y/.N%_ 2/* *N* j *-P/* .N* j .-P/* 2N* j 2-P$n&n(n/p>, @m  B=@(0.(N   AFA  -H"n|   nBP nBh Rn(Q.=| "Bn/p~  n @-D/p>, @m r=@(0.(N   AHJp  WD . g B/p~  n 4@,D/0.(R@>, @m =@&0.&N   AHJp  WD . g  .-HN   & .,HN   @0.(N   <@0.&N  H@A000 no  .-HN   & .,HN   @0.(N   <@0.&N  H@A=p0 =n( =n&.-HN   @+.,HN   @*Rn&Q.S.,Sd .Rn(Q.S.-Sd x.7nJ.+HN   & .*HN   @0. N   <@0.N  H@.+HN   ( .*HN   @0. N   <@0.N  H@A00@ D@C30 0. N   AJ0  .+g  NU.+HN    NHN   @+U.*HN    NHN   @*0.N   AJ0  .*VD HN   @J. g  Hn /N	JHn/N	J=|(=n &0.&ng  &UHn(Hn&/N	B2.&nWDg Jn&f \0. N   AFA  -H nJPf  "n2`  "n3n J.g  v=|(=n&0.&N   U& 0.&N   ( AJ0@ HN    NHN   CJ0 UHn(Hn&/N	BJg 0.N   AFA  -H nJPf  "n2 `  "n3n  0."N  & 0. N   C ;0 0."N  & 0.N   C Y0 0."N  HC v3  0."R@=@"0." 22, TH/ HnN"H/HnN"HnHn?< /<   2HnN"HnHn?<  HnNB0."l WD -g Bn&0.&R@=@&0.&N   AHJp  f =|(=| $0.$N  & 0.&N   ( AJ0@ HN   C0 0.$N  & 0.&N   C 0 0.&N  & 0.$N   C-0 0.$R@=@$UHn(Hn&/N	BJg d/0, S@r> Am  =A(0.(N  & 0.(N  r A ;0  0N  r A-0  0N   C ;0 0.(N  & 0.(N  r A Y0  0N  r A-0  0N   C Y0 Rn(Qf./p~  n @-D/p>, @m  =@(/p~  n  @,D/0.(R@>, @m  =@&.-HN   & .,HN   @0.(N   <@0.&N  H@.-HN   ( .,HN   @0.(N   <@0.&N  H@A00@ J@jD@C30 Rn&QP.S.,Sd ..Rn(Q.S.-Sd ./p>@m  8=@(0.(N   AFA  -H nBP nBh Rn(Q.=| "Bn/p>@m  =@(0.(N   AHJp  f  /0.(R@>@m  =@&0.&N   AHJp  WD . g  l0.(N   <& 0.&N  H@A000 no  :0.(N   <& 0.&N  H@A=p0 =n( =n&Rn&Ql.Rn(Q2.7nL0. N   <& 0.N  H@0. N   <( 0.N  H@A00@ D@C30 J. g  Hn /N	JHn/N	J=|(=n &0.&ng  &UHn(Hn&/N	B2.&nWDg Jn&f  0. N   AFA  -H nJPf  "n2`  "n3n 0.N   AFA  -H nJPf  "n2 `  "n3n  0."N  & 0. N   C 0 0."N  & 0.N   C 0 0."N  HC3  0."R@=@"0, n" 22, TH/ HnN"H/HnN"HnHn?< /<   2HnN"HnHn?<  HnNB0."TWD -g Bn&0.&R@=@&0.&N   AHJp  f =|(=| $0.$N  & 0.&N   C 0 0.&N  & 0.$N   C-0 0.$R@=@$UHn(Hn&/N	BJg /0S@r> Am  =A(0.(N  & 0.(N  r A 0  0N  r A-0  0N   C 0 0.(N  & 0.(N  r A 0  0N  r A-0  0N   C 0 Rn(Qf./p>@m  =@(/0.(R@>@m  h=@&0.(N   <& 0.&N  H@0.(N   <( 0.&N  H@A00@ J@jD@C30 Rn&Q.Rn(Q.p + =@&0N  r A 0  =A$BnBn/p>, @m  =@(0.(N  & A00 HN   @-0.(N  r A 0  =A .-HN   & 0. N   @0.&N  @p A00 n=@.-HN   & 0. N   @0.$N  @p A00 n=@Rn(Q0.0.no  h/p>, @m  X=@(0.(N  U& 0.(N  ( A0@ HN    NHN   C0 Rn(Q.0. 
N   >EE  /* *N2/* .N2/* 2N2LN^.NuNVH00. N   >EE  /* *N* j *-P/* .N* j .-P$n&n?. 
Nj?. 
Hn?< N	2XHnNbJ+g  | `  B./.HN   r> n AD/p~  n ~@D/p>+ @m  =@/p>+ @m  =@0.N   x& 0.N  H@Hn.HN   ( .HN   @0.N   <@0.N  H@A?0@ ?+ ?N:XHnApHp0 ?<RnQd.RnQH.Hz Hn?< NBHz Hn?< NB.HN   Hr A0  0N   @.HN   Hr A0  0N   @?. 
Nj?. 
?< Bg?+ ?+ HnHn< HnNZS.Sd .S.Sd n.0. N   >EE  /* *N2/* .N2LN^.Nu  NVH00. N   >EE  /* *N* j *-P/* .N* j .-P$n&n?. 
Nj?. 
Hn?< 
N	2XHnNb/p>@m  =@/p>@m  ~=@0.N   x& 0.N  H@Hn0.N   <( 0.N  H@A?0@ ?+ ?+ N2XHnAtHp0 ?<RnQ.RnQp.?. 
Nj?. 
?< Bg??Hn?< N"XHnHn?< N"XHn< HnNZ0. N   >EE  /* *N2/* .N2LN^.NuNVH80. N   >EE  /* *N* j *-P/* .N* j .-P/* 2N* j 2-P$n&n(n?. 
Nj?. 
Hn?< N	2XHnNb?. 
Nj/0S@r> Am =A0.N  r A 0  =A0.N  r A 0  =A0.N  r A 0  =A0.N  r A 0  =A0.N  HA=p  HzHn?.BgN*XHnNHzHn?.BgN*XHnNHzrHnHn?.?, ?, N2XHn?< ?< N:XHnN?. 
Hn?< N	2XHnNbRnQ.?. 
Nj?. 
Hn?< N	2XHnNb?. 
Nj/0, S@r> Am =A0.N  r A ;0  =A0.N  & A00 HN   @0.N  r A 0  =A0.N  r A Y0  =A0.N  & A00 HN   @0.N  r A 0  =A0.N  HA v=p  HzHn?.BgN*XHnNHz Hn?.BgN*XHnNHz HnHn?.?, ?N:XHn?< ?< N:XHnNHz .HN   HAHp  NHz .HN   HAHp  N?. 
Hn?< N	2XHnNbRnQj.0. N   >EE  /* *N2/* .N2/* 2N2LN^.Nu12312345    NV=| 0. H n m  j0. S@2.SA2. SAH/ HnN"H/HnN"HnHn?< HzbHn?< HnN2 RN   =@`  l0. n 2.SA2. SAH/ HnN"H/HnN"HnHn?< HzHn?< HnN20.HN   =@0.@ f  AC""`  .@ f  AC""`  @ f  AC""Hn n 0(H  n h?  n 0( n h n hR@?  n 0( n h n 2(H A?  n 0( n hR@? HnHnN^ _O 
N?ѷXe+?ѷXe+NVH8 n Cp	"Q20. N   >EE  /* *N* j *-P/* .N* j .-P/* 2N* j 2-PHnҨt/-.m< B'N$n&n(n0.HH/ HnN"HnHn?<Hn?*J?, ?N:XHnN2 N   =@0.nl  =n0.H/ HnN"/<   
HnN"HnHn?< HnN* N   =@0.H/ HnN"HnHn?</<   dHnN"HnHn?< HnN2 N   =@Hn?*L?, ?, N2XHnN* N   =@0.nl  =n0.H/ HnN"/<   
HnN"HnHn?< HnN* N   =@0.H/ HnN"HnHn?</<   dHnN"HnHn?< HnN2 N   =@HnHnHnHnN=nBg?.ĨHn?< N	2XHnHn?< NBHnUHn=_0.n=@Bg?.ĨHn?< N	2XHnHn?< NBHnU?.UHnNr=_0.nn=@HnHnHnHnNHnHnHnHnNU?.?.Nr=_U?.?.Nr=_HnHnHnHnNU?.?.Nr=_U?.?.Nr=_0.X@=@BnBn0.H=@J.g HnHnHnHnN/p>, @m  =@U?.UU0.N  & A00 HN    NHN   & 0.N  r A 0  0N   4@AHp0 Nr=_U?.U0.N  & A00 HN   & 0.N  r A 0  0N   4@AHp0 Nr=_RnQ.J.WD .g  ZHnHnHnHnN/p>@m  8=@U?.U0.N   4AHp  Nr=_RnQ.0.n=@0.T@=@J.g  0.nn=@J.g  0T@n=@J.g  vp
nH/ HnN"HnHn?</<   
HnN"HnHn?< 0.H/ Hn|N"HnHn|?<  Hn|N2 N   =@=n=nJ.g  HnHnHnHnN/p>@m  j=@Hn0.N  r A 0  ?BgN*XHnHn?< NB0.n=@UHn0._? ?.ĨHnRnQ.0.Đn2.H A=@0.n2.H A=@Hn0.n2.H A? 0.ĐnnR@? 0.n2.A2.H A? 0, nĐnnR@? J.g 	>Hmܨ/p>, @m =@HnHnHnHnN0.N  & A00 HN   @0.N  r A 0  =A=nU.HN    NHN   & 0.N   4@AHp0 Hn?< NBUHn0._? ?.ĨHnHnHnHnHnNJ.g 0.n=@Hn?.BgN*XHnHn?< NBUHn0.̐_? BgHn/p>@m =@0.N  r A 0  =A.HN   & 0.N   @0.N  @p A00 =@U.HN    NHN   & 0.N   @0.N  @p A00 =@0.n2, RAAf  ,Hn0, n? BgN*XHnHn?< NB`  JnWD JnWDg  $Hn?< 
N"XHnHn?< NB`  n WD n WDg  $Hn?< N"XHnHn?< NB`  `0.l WD 2.l WDg  $Hn?< N"XHnHn?< NB`   Hn?< 
N"XHnHn?< NBJ.g  ?.?.?, /N	r0.n=@J.g  UHn0._? ?.ĨHnRnQ.0.n=@Hn?.BgN*XHnHn?< NBUHn0._? ?.ĨHn`  JHm쨝0.T@? 0.H 2.Ē@?0.nY@? 0.H 2.Ē@?HmܨHnHnHnHnN.HN   & 0.N   4@AHp0 Hn?< NB0.n? ?.ĨHn0.H 2.Ē@=A0.N  HC3  0.nUHn& _TC??.?.?.0.n=@RnQX.J.g  Hm䨝HnHm쨝HnHnHnHnNAC^p"Q/p>, @m  <=@0.N  HABp  0.N  HC 3  RnQ./0, S@r> Am n=A0.N  r A ;0  =A0.N  r A Y0  =A0.N  H& 0.N  HA\200 A\p  H =AHn0.N  HA v?0  ?, ?N:XHnHn?<HnHn?< /<   dHn|N"Hn|Hn?< HnN2 N   =@0.nm r0.H/ HnN"HnHn?< 0.H/ HnN"HnHn?< HnN2 N   =@0.N  HAJp  o  0.N  HA=p  ` 0.N  HAJp  o  0.N  HA=p  ` 0.N  HA ?0  0.N  HA?0  ?.?.0.N  HA ?0  0.N  HA?0  0.N  HC 3  0.N  HC3  0.N  HC3  RnQ./p
nr > Am  =A0.H/ HnN"HnHn?</<   
HnN"HnHn?< 0.H/ Hn|N"HnHn|?<  Hn|N2 N   ? ?.Bg?<Hnp
n 
? BgN*XHnHn?< NBUHn0D@2.H A? ?<HnRnQ..p
nH/ HnN"HnHn?</<   
HnN"HnHn?< HnN2 N   =@?.?.?.BgU?.0.nn? Nr=_J.g  0.H n=@J.g  HnHnHnHnN0.n=@/p>@m  =@Hn0.N  r A 0  ?BgN*XHnHn?< NB0.n=@0.N  H2.H 4.AC 3  UHn0._? ?.ĨHnRnQx.J.f  0.H n=@=n=n0.n=@0.n=@/0~@n =@DGHm䨝0.N  r A 0  0N   4AHp  Hn?< NB0.n2.H A=@0.Đn2.H A=@J.f  ,0.H n=@0.N  HC3  J.g  "?.0.H n? ?.?.J.g  0.H 2.@=A`  0.nU@=@J.g  $0.nn̐n2.H A? BgHmܨUHn0._T@? ?.?.?.J.g  lHnHnHnHnNHn0.N  r A 0  ?BgN*XHnHn?< NB0.nUHn& _??.ĨHnHnHnHnHnN?.?.ĨHn0.n=@SnQ.=nJ.g Hm쨝HnHnHnHnNJ.g ,A"C^p"Q/p>@m  <=@0.N  HABp  0.N  HC3  RnQ./0S@r> Am p=A0.N  r A 0  =A0.N  r A 0  =A0.N  H& 0.N  HA\200 A\p  H =AHn0.N  HA?0  ?, ?, N2XHnHn?<HnHn?< /<   dHn|N"Hn|Hn?< HnN2 N   =@0.nm r0.H/ HnN"HnHn?<0.H/ HnN"HnHn?<  HnN2 N   =@0.N  HAJp  o  0.N  HA=p  ` 0.N  HAJp  o  0.N  HA=p  ` 0.N  HA ?0  0.N  HA?0  ?.?.0.N  HA ?0  0.N  HA?0  0.N  HC 3  0.N  HC3  0.N  HC3  RnQ./p
nr > Am  =A?.0.H/ HnN"HnHn?</<   
HnN"HnHn?< 0.H/ Hn|N"HnHn|?< Hn|N2 N   ? ?<BgHnp
n 
? BgN*XHnHn?< NBUHn0D@U@? 0.H ? HnRnQ0.?.?.Bgp
nH/ HnN"HnHn?</<   
HnN"HnHn?< HnN2 DN   ? ` JAC^p"Q/p>@m  <=@0.N  HABp  0.N  HC 3  RnQ./0S@r> Am p=A0.N  r A 0  =A0.N  r A 0  =A0.N  H& 0.N  HA\200 A\p  H =AHn0.N  HA?0  ?, ?, N2XHnHn?<HnHn?< /<   dHn|N"Hn|Hn?< HnN2 N   =@0.nm r0.H/ HnN"HnHn?< 0.H/ HnN"HnHn?< HnN2 N   =@0.N  HAJp  o  0.N  HA=p  ` 0.N  HAJp  o  0.N  HA=p  ` 0.N  HA ?0  0.N  HA?0  ?.?.0.N  HA ?0  0.N  HA?0  0.N  HC 3  0.N  HC3  0.N  HC3  RnQ./p
nr > Am  =A0.H/ HnN"HnHn?</<   
HnN"HnHn?< 0.H/ Hn|N"HnHn|?<  Hn|N2 N   ? ?.Bg?<Hnp
n 
? BgN*XHnHn?< NBUHn0D@2.H A? ?<HnRnQ..p
nH/ HnN"HnHn?</<   
HnN"HnHn?< HnN2 N   =@?.?.?.BgU?.0.nn? Nr=_Hm|?<?<?.?./.Ҩs0. N   >EE  /* *N2/* .N2/* 2N2LN^ _\N    NV n Cp	"Q2HnHnN
/.?< ,HnHn?< 
N	2XHnN/.?< +HnHn?< N	2XHnN/.?< *HnHnHn?< N"XHnNXHnN/.?< )HnHnHn?< N"XHnNXHnN/.?< (HnHn?< N	2XHnN/.HnbNrHnb?< (NzHnb?< HnNHn-_UHnHn/.N=_0.@ (f  Hn-_`  v@ )f  Hn-_`  b@ *f  Hn-_`  N@ +f  Hn-_`  :@ ,f  2 nC"2 nC"2 nC"2 nC"2?.HnbNrHnb?< NzHnb?< NzHnbNg 0/.Nn f  A"n p	"Q2N^.NuNVvH AC~p	"Q2BnUHn?< NJg @?.NHz<Hnv?< N	2XHnvNUHnN=_YB?<MHnHz
N-_/.?< HnHnv?< N	2XHnvN/.?< $HnHnv?< N	2XHnvN/.?< HnHnv?.BgN*XHnvN/.?< HnHnv?.BgN*XHnvN/.?< HnHnv?.BgN*XHnvNHnVNrHnVHnv/<   NJ.g  FHnVNrHnV?< 
NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  JHnVNrHnV?< 	NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   N`  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.WD .g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.WD ..g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.f  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.f  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   NJ.g  FHnVNrHnV?< NzHnvHn6/<   NjHnVHn6NHn6Hnv/<   N/.Hnv?< HnNHz
RHnNJWD HnvHnv?< & NXHnvNXHnvHnNJWD  g  R/.HnVNrHnV?< "NzHnVHnN/.HnVNrHnV?< #NzHnV?< HnN`  >/.?< "HnHnN/.HnVNrHnV?< "NzHnV?< HnNJ.f  */.HnVNrHnV?<  ?< $NHnVHnN/.HmHnU/.Hn?.NJf n 
f  |?< 
HnHnV/<   NjHnVNg  ./.HnVNrHnV?< ?< NHnVHnN`  */.HnVNrHnV?< ?< NHnVHnN` (?.HnVNrHnV?< ?< NHnVNg .n WD ?< HnHnV/<   & NjHnVNWD  g  ,/.HnVNrHnV?< ?< NHnVBgHnNHnVNrHnV?< ?< NHnHn6/<   NjHn6HnVNHnNrHnHnVNg  V/.HnVNrHnV?<  ?< $NHnVHnN/.HnVNrHnV?< NzHnV?< HnN`  */.HnVNrHnV?<  ?< $NHnVHnN`  ?.HnVNrHnV?< ?< NHnVNg  HnVNrHnV?< NzHnV?< NzHnHn6/<   NjHn6HnVNHnNrHnHnVNg  ./.HnVNrHnV?< ?< NHnVHnN`  */.HnVNrHnV?< ?< NHnVHnN` UHnv/.?< HnNXHnvNB=_UHnv/.?< HnNXHnvNB=_UHnv/.?< HnNXHnvNB=_?< 	HnHnV/<   NjHnVNVD HN   @?< 
HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD .HN   @?< HnHnV/<   NjHnVNWD HN   @?< HnHnV/<   NjHnVNWD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @?< HnHnV/<   NjHnVNVD HN   @n f  A~Cp	"Q2`  n f  
Hn~N	z?.HnVNrHnV?< NzHnV?< NzHnVNg  n f  Hnv/.?< $HnNXHnvHn?< NB?< !HnHnV/<   NjHnVNVD HN   @?< "HnHnV/<   NjHnVNVD HN   @?< #HnHnV/<   NjHnVNVD HN   @/.Nn f &?< Hnv?< N	2XHnvNbJ.g  J.g  8=| HnvHnv?< NXHnvNXHnvHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.N  HA/0  0.N  HA/0  ?.Nj?.Hnv?< N	2XHnvNbHnv?< N	2XHnvN*?.< N	"?..HN    N	:N2J-f  J.g  `?.Hnv?< 	N	2XHnvNbJ.g  ?.?.N	ZJ.g  ?.?.N	RJ.g  ?.?.N	b?.NjJ.g  ^UNBJg  R m/Q?-`Hnv?< N	2XHnvN?.Hn~N	j?-`Hm|N?-`/-x/-tNHmQ`  &0.N   >EE  /* 2NB 2LN^NuPhB1 2 3 4,R8 9,R19 20 21 22 23,R33 34 35,C10 25 26 27 29 30 31,S6 7 11 13 15 17 18 24 28 32,T12 14 16 -36     M	`     NVHnNrHn?< ?< NHnHm/<   NHnNrHn?< ?< NHnHm/<   NHnNrHn?< 	?< NHnHm/<   NHnNrHn?< NzHn?< NzHn?< NzHn?< NzHn?< NzHn?< NzHn?< 	NzHn?< 
NzHn?< NzHn?< NzHnHm/<   NHnNrHn?< NzHn?< NzHn?< NzHn?< NzHn?< NzHn?< NzHn?< 	NzHn?< 
NzHn?< NzHn?< NzHnHm/<   NN^NuNVH 0Bn0. N  HE$r  J g "/* N*Y j //<  .-_Y/* N" .П-@ .Ю -@ &n p @ f  B0+ 
k H =@Hn0+ @ ? 0.Y@? 0+ @ ? 0.X@? `  A 
C""U nHh 
HnHn쨪Jg  ,0+  nh g   n=h  nA 
"n "" n0( HЮ-@ .谮\D Jn^Dg A 
"n ""/* N2=n L N^ _O NNVH8$n &j &S0+ N   >I(t  (T ,R)@Hn/. ?< Hk NXHnHn ?< NBk  l  T0+ N   4Hn AHp  NJg  7|  0+ N   4Hn AHp  ?< 2NB` Zk  o  nk  f  =k `  =k 0.N   4Hn AHp  NJg  7|  0.N   4Hn AHp  ?< 2NB`  U?+ HnN=_.HN   & 0.N   4@Hn AHp0 NJg  ^J.f  .Y0+ H/ /<    . N       7@ `  *Y0+ H/ /<    . N       7@ .HN   & 0.N   4@Hn AHp0 ?< 2NBHnNrHn?+ NzHk PHn/<    NjHnHnNHnHk P/<    NLN^.NuNVH 8$n &j &S0+ N   >I(t  (T ,R)@Hn/. ?< Hk NXHnHn ?< NB0+ @ f  &Hz$Hn NJc  Hn Hl?< PNB` @ f  &HzHn NJc  Hn HlL?< PNB` @ f  &HzHn NJc  Hn Hl?< PNB` ^@ f  THzHn NJc  @UHn NB0S@9@ l l  9| 0, l 9@ l  l  9|  ` @ f  PHzNHn NJc  <UHn NB9_ l c o  9| c 0, l 9@ l  l  9|  `  @ f  &Hz Hn NJc  Hn Hl?< PNB`  @ f  &Hz Hn NJc  Hn HlV?< PNB`  V@ f  &Hz Hn NJc  Hn Hl?< PNB`  *@ f  "Hz |Hn NJc  Hn Hl?< PNBHnNrHn?+ NzHk PHn/<    NjHnHnNHnHk P/<    NL N^.Nu                  NVH80. N  HE$r  &j &S0+ N   >I(t  (T0+ N   >A p   P-HBnBn0.R@=@?.Hk PHn/<    NjHnNg  =n=n0.R@=@0.T\D n WDg T ^D Jl ^Dg  n g  Jno  =n`  Bn0.N   7@ 0+ N   >A p  /0+ N   >A p  /?.< N n0(#(N  dHr  nA#(0  =A n0(#(N  dHr  nA#)0  =AHn0.N   <& 0.N  H@ nA000 J@jD@? ?, ?, N2XHnN2 N   =@`  Bn0. N  HA/0  ?< 0.H@ d? NHnNrHnHn/<   NHnNrHnHn/<   N n0(#(N  dHr  nA#(0  nWD &  n0(#(N  dHr  nA#)0  nWD   n0(#(N  dHr  nA#)0  nWD (  n0(#(N  dHr  nA#(0  nWD  HN   @ nh #(^D .g  JHnNrHn?< 	NzHnHn/<   NjHnHnNHnHn/<   N`  FHnNrHn?< 	NzHnHn/<   NjHnHnNHnHn/<   N nh d#(]D . n2(#(I4SBԲB]DJk WD4SB nh#(^Dg  JHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   N`  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NJnf HnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NJ,g  ~HnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   N0. N  HA/0  ?< Hk Hn?< N	XHnN`  60. N  HA/0  ?< Hk Hn?< N	XHnN`  HnNrHn?< NzHn?< NzHnHn/<   NjHnHnNHnHn/<   N0. N  HA/0  ?< Hk Hn?< N	XHnN0. N  HA/0  HnHk N0. N  HA/0  HnHk NLN^ _TNNVH80. N  HE$r  &j &S0+ N   >I(t  (T0+ N   >A p   P-HBnBn0.R@=@/p~  n  x@DU?..HN    NHk PHn/<    NjHnNg  0=nU?..HN    N=_0.R@=@S.Sd .0.l \D n WDg XJT^D l  ^Dg fn g  Jno  =n`  Bn0.N   7@ 0+ N   >A p  /0+ N   >A p  /?.< N n0(#(N  dHr  nA#(0  =A n0(#(N  dHr  nA#)0  =AU?.HnN=_U?.HnN=_Hn.HN   & .HN   @0.N   <@0.N  H@ n000J@jD@? ?, ?N:XHnN2 N   =@`  Bn0. N  HA/0  ?< 0.H@ d? NHnNrHnHn/<   NHnNrHnHn/<   N n0(#(N  dHr  nA#(0  nWD &  n0(#(N  dHr  nA#)0  nWD   n0(#(N  dHr  nA#)0  nWD (  n0(#(N  dHr  nA#(0  nWD  HN   @ nh #(^D .g  JHnNrHn?< 	NzHnHn/<   NjHnHnNHnHn/<   N`  FHnNrHn?< 	NzHnHn/<   NjHnHnNHnHn/<   N nh d#(]D .2, ISA  n޲h#(^DJk WD4, JSB n޴h#(^Dg  JHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   N`  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NJnf HnNrHn?< NzHn?< NzHnHn/<   NjHnHnNHnHn/<   NJ,g  ~HnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   N0. N  HA/0  ?< Hk Hn?< N	XHnN`  60. N  HA/0  ?< Hk Hn?< N	XHnN`  HnNrHn?< NzHn?< NzHn?< NzHnHn/<   NjHnHnNHnHn/<   N0. N  HA/0  ?< Hk Hn?< N	XHnN0. N  HA/0  HnHk N0. N  HA/0  HnHk NLN^ _TNNVzH  n Cp"Q=n z/p>. @m  &=@0.N  HC3  RnQ.=| | /0.zS@r> Am  =A0.N  HA=p  0.N  HA20  n 0.R@N  HAp  o  60.N  H2.RA& 0N  HAC3  0 `  $0.N  HC3  0.R@=@RnQV.0.N  HC3   0.nzl FB.=nz=| /p>.z@m &=@0.N  HA=p  0.N  H& 0.N  HA200 Ap  0.n @H =A~0.~n ]D HN   @J.g  =n ~0.n n~=@~0.~n 
o  &J.g  0.~n 
H =@~`  =n 
~/0.>.@n  4=@|DG0.|N  HC3~  0.~n =@~Sn|Q.0.R@=@RnQ.J.g A"n p"QL N^ _O NNVH 8Hnt/-.m< < NHz`Hn ?.?< 	HnHnHnN
0. N  HE$r  &j &S0+ N   >I(t  (T0* j H =@=n0.D@H n=@/p>, @m =@0.N   4AHp  Hn?< NBU?.B'N=_UHn0._]@? ?.?<?.BgU?. j  PHh PHn/<    NjHnNVD HN    NHnN0.N   4AHp  Hn?< NBU?.< N=_0.^@? ?.?<?.BgU?.Hk PHn/<    NjHnNVD HN    NHnN?.HlHn/<   NjHnNg  Hz Hn?< NB| `  Hz vHn?< NBUHn0H 2.@??.Hn0.n=@RnQ`./.s?. /-x/-tNL N^ _TNMonaco  -NVH8Hnt/-.m< < NHztHn ?.쨇Jn f  *HnNrHnBgNzHn _? =| `  =| 	?.쨊HnHnHnN
0. 
N  HE$r  &j &S0+ N   >I(t  (TJn f  :U?.U0* j H ? 0. ? NzNr=_=n`  =n0* j H =@/p>@m ^=@Jn ^D ?.Hk PHn/<    & NjHnNVD  g  0.N   4AHp  Hn?< NB?.HlHn/<   NjHnNVD Jn ^Dg  <Hz HnN:HnHnNRHz HnNRHnHn?< NB| Jn f  
B.`  2?.Hk PHn/<    NjHnNVD HN   @UHn0H 2.@??.?<?.BgU.HN    NHnN0.n=@RnQ./.s?. 
/-x/-tNLN^.NuMonaco       NVH8Hnt/-.m< < NHz~Hn ?.?< 	HnHnHnN
0. N  HE$r  &j &S0+ N   >I(t  (TJk ^D HN   @?< 	HnHnHnN
0.D@H n=@0.H=@0* j 2.IA=@0.nH=@0.l l  =l 0.n=@0* j H =@0.D@H n=@HnNrHnBgNzHn _? 0.H n=@0+ N   4AHp  Hn?< NBUHn0H 2.̒@??.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? =n/p>, @m =@=| =| =| F0.ΐn=@0.n=@0.̐nS@=@0.nR@=@0.H=@HmHn0.nn? ?.0.n? ?.Bg?<Bg?< Bg?< ?< HnNHm䨝J,g  LHn?.?.0.n? ?.Bg?<Bg?< Bg?< ?< HnN0.nn=@Hm쨝J,g  LHn0.n? ?.?.?.Bg?<Bg?< Bg?< ?< HnN0.nn=@Hn?.?.?.?.Bg?<Bg?< Bg?< ?< HnN.HN   @J.g  &=k 0.R@=@0.X@=@=| `   =k 0.Y@=@0.S@=@Bn0.N   & 0.N  @p Am00 =@0.N   & 0.N  @p A00 =@0.n2, RAAf  .0.R@2.SA4.nUB4, SBHA=@`  vJnWD JnWDg  0.R@=@`  R0.l WD 2.l WDg  0.R@=@`  &n WD n WDg  0.R@=@Hn0.S@? ?.0.R@? ?.?<p0.n? ?< Bg?< ?< ?< HnNJ.WD HN   @J.g D0.N   4AHp  Hn?< NBU?.B'N=_UHn0.̐_n@ 	? 0.ΐn? ?<" ?.BgU?.Hk PHn/<    NjHnNVD HN    NHnN0.N   4AHp  Hn?< NBU?.< N=_0.n@ 	? 0.ΐn? ?<" ?.BgU?.Hk PHn/<    NjHnNVD HN    NHnN0.n=@RnQp.J.g  HnNrHnBgNzHn _? 0.H n=@0+ N   4AHp  Hn?< NBUHn0H 2.̒@??.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? /.s?. /-x/-tNLN^ _TNMonaco NVH8Hnt/-.m< < NHzZHnƩ ?.ƨ0. N  HE$r  &j &S0+ N   >I(t  (TJk ^D HN   @?< 	HnHnHnN
0.D@H n=@0.H=@0* j 2.IA=@0.nH=@0.Tl  =T0.n=@0* j H =@=| Hn0.Ɛn? ?.0.n? 0.R@? Bg?<Bg?< BgBg?< HnN.HN   @HnNrHnBgNzHn?< NzHn _? 0.nH =@=| 0.n=@0.n=@J.WD .g  0.H2* @=A`  0.H=@J.g  =|=|=|`  =|=|=|HmHn0.n? 0.̐n? 0.n? 0.n? Bg?.Bg?< BgBg?< HnNHmܨHn0.n? 0.Ȑn? 0.n? 0.n? J,g  HBg?.Bg?< BgBg?< HnNJ.f  $?.0.n2.H A? HzHm쨝Hn0.n? 0.ʐn? 0.n? 0.n? J,g  BBg?.Bg?< BgBg?< HnNJ.f  ?.0.H n? Hz*HnNrHnBgNzHn _? J.g  =k `  =k 0.H n=@U?.HnN=_.HN   & 0.N   4@AHp0 Hn?< NBJ.g  &0.@ =@UHn訌0._U@=@`  6J.g  0.T@=@`   0.nUHn& _HÇ =C?.?.?<" ?.BgU?.Hk PHn/<    NjHnNVD HN    NHnN0.n2.H A=@U.HN    NHN   & 0.N   4@AHp0 Hn?< NBU?.U.HN    NHN    N=_J.g  &0.@ =@UHn訌0._U@=@`  6J.g  0.T@=@`   0.nUHn& _HÇ =C?.?.?<" ?.BgU?.Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? HnNrHnHn/<   NHnNrHnHn/<   NBn/p>@m =@.HN   & 0.N   @0.N  @p A00 =@U.HN    NHN   & 0.N   @0.N  @p A00 =@0.n2, RAAf  D0.N  H2.SA4.n4, SBHnC3  0.R@=@`  HnNrHn?.NzHnHnz/<   NjHnHnzNHnzHn/<   NJnWD JnWDg  0.N  HC3  `  nn WD n WDg  0.N  HC3  `  80.°l WD 2.l WDg  0.N  HC3  J.g  0.R@=@RnQ./p>.@m .=@=|/p>@m  =@?.HnHn/<   NjHnNWD ?.HnHnz/<   & NjHnzNWD . g  >0.N  HA20  nl   0.N  HA=p  =nRnQn.0.N  HC3  0.N  HCL3  HnNrHn?.NzHnHnz/<   NjHnHnzNHnzHn/<   NRnQ.ANCp"QHn?.?.?.?.N	=| /p>.@m =@0.N  HA=p  0.N  H& A000 N   4AHp  Hn?< NBp .@ #o  &HnHn?< ?< #NZHnHn?< NB0.N  HA?0  HnHn/<   NjHnNVD .g FJ.g  =n0.n? ?.¨0.N  HAL20  ng  ?.0.N  HAL?0  0.nT@? 0.n? ?<@0.N  HA20  A ??< BgHnN`  =n0.nS@? ?.¨0.N  HAL20  ng  "0.S@? 0.N  HAL?0  0.nS@UHn& _?0.n? ?<@0.N  HA?0  ?< BgHnN` J.g  =n0.nS@? ?.¨0.S@? 0.N  HAL?0  0.nS@UHn& _?0.n? ?<@0.N  HA20  A ??< BgHnN`  r=n0.n? ?.¨?.0.N  HAL?0  0.nT@? 0.n? ?<@0.N  HA?0  ?< BgHnNRnQ.0.Tn p/0nr> Am  =A=|/p>@m  l=@?.HnHn/<   NjHnNf  >0.N  HA20  nl   0.N  HA=p  =nRnQ.0.N  HC3  0.N  HCL3  HnNrHn?.NzHnHnz/<   NjHnHnzNHnzHn/<   NRnQ.ANCp"QHn0n? ?.?.?.N	=n/0nr> Am =A0.N  H& A000 N   4AHp  Hn?< NBp .@ #o  &HnHn?< ?< #NZHnHn?< NB0.N  HA=p  0.n? ?.¨0.N  HAL20  ng  ?.0.N  HAL?0  0.nT@? 0.n? ?<@0.N  HA?0  ?< BgHnNRnQ.J.WD HN   @J.g 
/.s?. /-x/-tNLN^ _TNMonaco NeitherBoth NVH 8Hnt/-.m< < NHzRHn ?.?< HnHnHnN
0. N  HE$r  &j &S0+ N   >I(t  (T=| =n0.D@H n=@?.?.HnHn?< N"XHnNXHzHnNR0+ N   >AHp  HnNRHn쨄=| 0.n=@?.?.HnHn?< N"XHnNXHzRHnNRHn?BgN*XHnHnNRHn쨄=| 0.n=@?.?.HnHn?< N"XHnNXHz
HnNRHn?, BgN*XHnHnNRHn쨄=| 0.n=@?.?.HnHn?< N"XHnNXHz
HnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlLNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlNHnNrHn _? =| 0.n=@?.?.HnHn?< 	N"XHnNXHz
HnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? Hn0, R@? BgN*XHnHn?< NB?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNUHn0._=@HnNrHn _? ?.?.Hz	HnN:HnHn?< N"XHnNXHnHnNRHz	HnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? Hn0, l ? BgN*XHnHn?< NB?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzHnNRHnHn?< N"XHnNXHnHnNRHztHnNRHnHn?< N"XHnNXHnHnNRHzBHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzZHnNRHnHn?< N"XHnNXHnHnNRHz(HnNRHnHn?< N"XHnNXHnHnNRHzHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlVNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzHnNRHnHn?< N"XHnNXHnHnNRHzHnNRHnHn?< N"XHnNXHnHnNRHzHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlNHnNrHn _? =| 0.n=@?.?.HnHn?< N"XHnNXHzHnNRHnHn?< N"XHnNXHnHnNRHzHnNRHnHn?< N"XHnNXHnHnNRHz^HnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? ?.?.?<" ?< BgU?< Hk PHn/<    NjHnNVD HN    NHlNHnNrHn _? =| 0.n=@?.?.Hn?< %N"XHzHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? 0+ N   >AJ0  g  HzHn?< NB`  Hz
Hn?< NB?.?.?<?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? =| 0.n=@?.?.Hn?< &N"XHzrHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? J,g  HzHn?< NB`  HzHn?< NB?.?.?<?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? =| 0.n=@?.?.Hn?< 'N"XHztHnNRHnHn?< NBHnUHn0._=@HnNrHnBgNzHn _? J,g  HzHn?< NB`  HzHn?< NB?.?.?<?< BgU?< Hk PHn/<    NjHnNVD HN    NHnNHnNrHn _? =| 0.n=@/.s?. /-x/-tNL N^ _TNChicago:  :  :  :  :  :  :      :    :    :    :  :  ON OFF:  ON OFF:  ON OFFNV H80. N  HE$r  &j &S0+ N   >I(t  (TJk f  0. N  HA/0  N	Jn o X0. 
@ f  HlHn ?< NB` @ f  HlLHn ?< NB` |@ f  HlHn ?< NB` `@ f  *Hn 0, R@? BgN*XHn Hn ?< NB` 0@ f  ,Hn 0, l ? BgN*XHn Hn ?< NB`  @ f  HlHn ?< NB`  @ f  HlVHn ?< NB`  @ f  HlHn ?< NB`  @ f  HlHn ?< NB`  @ f  F0+ N   >& 0+ N   >AJ0  WD HN   C0 `  B@ f  J,WD HN   @`   @ f  J,WD HN   @?. 
HnNrHn?< NzHn?< NzHn?< NzHnNf  0. 
N   7@ Bk 0. N  HA/0  HnNrHn?< NzHnHk N0. N  HA/0  ?< Hk Hn N0. N  HA/0  HnNrHn?< NzHnHk N`  HnNrHn?. 
NzHk PHn/<    NjHnHnNHnHk P/<    N7|  0. N  HA/0  HnNrHn?< NzHnHk N0. N  HA/0  HnNrHn?< NzHnHk N`  t7|  0. N  HA/0  HnNrHn?< NzHnHk N0. N  HA/0  HnNrHn?< NzHnHk N?. N	LN^ _\NNVH 8Hnt/-.m< < NHzHn ?.?< HnHnHnN
0. N  HE$r  &j &S=| 
=n0.D@H n=@/p>-媞@m  =@0.N   >II  0@ f  2Jl f  Hz Hn?< NB`  Hz Hn?< NB`  @ f  Hz Hn?< NBHnNrHn?< NzHn _? ?.?.HnHnNrHn _? 0.Hn? ?.?<3?.Bg?, Hl 
N0.n=@RnQ./.s?. /-x/-tNL N^ _TNChicagoGETNVH 0$n &j &SBnUHnBgNJg  */. HnNrHn?< NzHnHk N`  &/. HnNrHn?< NzHnHk NBnUHn?< NJg  /. HnNrHn?< ?< NHn?< NzHnHk N/-T?< 9/-T?< 9/-T?< 9/-T?< 9/-T?< 9/-T?< 9/-T?< 
9/-P?< 9/-P?< 9`  /. HnNrHn?< ?< NHn?< NzHnHk N/-T?< :/-T?< :/-T?< :/-T?< :/-T?< :/-T?< :/-T?< 
:/-P?< :/-P?< :BnUHn?< NJg  J/. HnNrHn?< 
NzHn?< NzHnHk N/-T?< 
9/-T?< 9`  F/. HnNrHn?< 
NzHn?< NzHnHk N/-T?< 
:/-T?< :L N^.Nu    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN  _(	 ,NV  H 8$n &j &S0+ N   >I(t  (TJTf  ?-`YHz &NBN`  ?* ?< N	L N^.NuKSS0-2 NVH 8$n &j &S0+ N   >I(t  (T0+ N   >AJ0  g  
?+ N/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNJ,g  (/. ?< Hk Hn?< N	XHnN`  $/. ?< Hk Hn?< N	XHnNBk HnNrHnHk P/<    NHnNrHn?< NzHnHn/<   NJTWD ,g  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NT f  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NJl f  DHnHn/<   NjHmHn/<   NjHnHnNHnHn/<   NT l  dHnHn/<   NjHmHn/<   NjHnHnNHnNrHn?< NzHnHnNHnHn/<   NT l  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   N/. HmHn/<   NjHmHn/<   NjHnHnNHnHn/<   NjHnHnNHnHk N/. HnHk N/. HmHn/<   NjHmHn/<   NjHnHnNHnHk N/. HmHn/<   NjHmHn/<   NjHnHnNHnHk N/. ?< 
Hk Hn?< 
N
XHnN?* N	7|  /. N
B?* NL N^.NuNV  H 8$n &j &S0+ N   >I(t  (TJl f  ?-`YHz "NBN`  
?* N	L N^.NuKSS0-3 NVH 8$n &j &S0+ N   >I(t  (T0+ N   >AJ0  g  
?+ N/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< 
N	XHnN/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNJ,g  (/. ?< Hk Hn?< N	XHnN`  $/. ?< Hk Hn?< N	XHnN7|  HnNrHnHk P/<    NHnNrHn?< NzHn?< NzHnHn/<   NJl WD ,g  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   Nl  f  FHnNrHn?< NzHnHn/<   NjHnHnNHnHn/<   NJTWD l  ]Dg  DHnHn/<   NjHmHn/<   NjHnHnNHnHn/<   N/. HmHn/<   NjHmHn/<   NjHnHnNHnHn/<   NjHnHnNHnHk N/. HnHk N/. HmHn/<   NjHmHn/<   NjHnHnNHnHk N/. HmHn/<   NjHmHn/<   NjHnHnNHnHk N/. ?< 
Hk Hn?< N
XHnN?* N	7|  /. N
R?* NL N^.NuNV H 8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn ?< N	XHn N/. ?< Hk Hn ?< N	XHn N7|  7|  0, N   7@ ?* N	?* N/. HmHk N/. ?< 
Hk Hn ?< !N
XHn N/. HnNrHn?< 
NzHnHk N/. ?< Hk Hn ?< "N
XHn N/. HnNrHn?< NzHnHk NL N^.NuNV H 8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn ?< N	XHn N/. ?< Hk Hn ?< N	XHn NBk 0+ R@N   7@ ?+ Hk PHn/<    NjHnNVD 2+ T^Dg 0+ Tn  ?* ?< N	?* N/. HmHk NHz 0+ N   4AHp  N/. ?< Hk Hn ?< N
XHn N/. HnNrHn?< NzHnHk N7|  `  
/. N
JL N^.Nu1NV H8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn ?< N	XHn N/. ?< Hk Hn ?< N	XHn NBk 0+ R@N   7@ U?+ B'NHk PHn/<    NjHnNVD U?+ < & NHk PHn/<    NjHnNVD  0+ l ^D  g 0+ l n  ?* N	?* N/. HmHk NHz 0+ N   4AHp  NHz 0+ N   4AHp  N/. ?< Hk Hn ?< 
N
XHn N/. HnNrHn?< NzHnHk N7|  `  
/. N
ZLN^.Nu12NV H8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn ?< N	XHn N/. ?< Hk Hn ?< N	XHn NBk 0+ R@N   7@ U?+ B'NHk PHn/<    NjHnNVD U?+ < & NHk PHn/<    NjHnNVD  0+ l ^D  g 0+ l n  ?* N	?* N/. HmHk NHz 0+ N   4AHp  NHz 0+ N   4AHp  N/. ?< Hk Hn ?< N
XHn N/. HnNrHn?< NzHnHk N7| 
 `  
/. N
ZLN^.Nu12NVH 0$n &j &S/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNHnNrHn?< ?< NHnHn/<   NHnNrHn?< NzHn?< 
NzHn?< NzHnHn/<   N/. HnHn/<   NjHnHn/<   NjHnHnNHnHk NHnNrHnHk P/<    Nk  f  N/. HnNrHn?< 
NzHnHk N/. HnNrHn?< NzHnHk N`  2/. HnNrHn?< NzHn?< 
NzHnHk N?* N	?* N7|  L N^.NuNVH 0$n &j &S/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNHnNrHn?< ?< NHnHn/<   NHnNrHn?< NzHn?< 
NzHn?< NzHnHn/<   N/. HnHn/<   NjHnHn/<   NjHnHnNHnHk NHnNrHnHk P/<    Nk  f  N/. HnNrHn?< 
NzHnHk N/. HnNrHn?< NzHnHk N`  2/. HnNrHn?< 
NzHn?< NzHnHk N?* N	?* N7|  L N^.NuNVH 8$n &j &S0+ N   >I(t  (T0+ N   >A p   P-H/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNBnBn/p>@m  F=@?.Hk PHn/<    NjHnNg  =n=n0.R@=@RnQ.n f  &0.N   7@ 0.N   7@ `  ^ n0(#(N  dHr  nA#(0  0N   7@  n0(#(N  dHr  nA#)0  0N   7@ Hz x0+ N   4AHp  NHz Z0+ N   4AHp  N/. ?< Hk Hn?< N
XHnN7|  /. N
L N^.Nu12NVH8$n &j &S0+ N   >I(t  (T0+ N   >A p   P-H/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNBn/p>, @m  =@/p~  n  x@DU?..HN    NHk PHn/<    NjHnNg  0=nU?..HN    N=_0.R@=@S.Sd .RnQv.n f  *0.N   7@ 0.@ N   7@ `  b n0(#(N  dHr  nA#(0  0N   7@  n0(#(N  dHr  nA#)0  A 0N   7@ U?+ HnN=_U?+ HnN=_Hz8.HN   & 0.N   4@AHp0 NHzU.HN    NHN   & 0.N   4@AHp0 NHz .HN   & 0.N   4@AHp0 NHz U.HN    NHN   & 0.N   4@AHp0 N/. ?< Hk Hn?< N
XHnN7|  /. N
LN^.Nu1234NVH 8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNBk /p>@m  @=@?.Hk PHn/<    NjHnNg  0.N   7@ RnQ.Jk f  P/0~@n  B=@DG?.HlHn/<   NjHnNg  0.N   7@ SnQ.Jk o  >Bk 7|  /. N
/. ?< Hk Hn?< N
XHnN/. N
L N^.NuNVH 8$n &j &S0+ N   >I(t  (T/. ?< Hk Hn?< N	XHnN/. ?< Hk Hn?< N	XHnNBk /p>, @m  =@/p ~ m  p@U?..HN    NHk PHn/<    NjHnNg  *U?..HN    N0N   7@ R.Sd .RnQ~.Jk f  ^/0, ~@n  N=@DG?.HlHn/<   NjHnNg  U?.< N0N   7@ SnQ.Jk o  4Bk Bk /. ?< Hk Hn?< N
XHnN/. N
L N^.NuNVH8$n 
&j &S0+ N   >I(t  (T/. 
HnNrHn?< ?< NHnHk NBk JTWD k 	 VDg  /. 
?< Hk Hn?< N	XHnN/. 
?< Hk Hn?< N	XHnN7| 	 7|  /. 
?< Hk Hn?< N
XHnN/. 
?< Hk Hn?< N
XHnN/. 
HnNrHn?< NzHnHk N` 0+ N   >A p  /0+ N   >A p  /Nn  f  U?+ HnN=_0+ N   >A p  /0+ N   >A p  /.HN    ?.??< ?, NU?+ HnN=_0+ N   >A p  /0+ N   >A p  /.HN    ?.??, ?< N0N   7@ 7|  Bk 0N   4Hn?< & N
XHnAHp0 ?< 2NB/. 
?< Hk 0N   4AHp  N/. 
HnNrHn?< NzHn?< 
NzHnHk Nk 	 f  /. 
?< Hk Hn?< 
N	XHnN/. 
?< Hk Hn?< N	XHnNBk HnNrHn?NzHnHk P/<    N?* ?< N	?* N`  /. 
?< Hk Hn?< N	XHnN/. 
?< Hk Hn?< N	XHnNHnNrHn?< NzHnHk P/<    N?* N	?* NJn f  (/. 
?< Hk Hn?< N
XHnN`  $/. 
?< Hk Hn?< $N
XHnN7|  7|  LN^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T/. 
?< Hk Hn?< N	XHnN/. 
?< Hk Hn?< N	XHnN0+ N   >A p  /0+ N   >A p  /N	0. @g  
@f (=l Hn?< N
XHnHn?< NBHn?< N
XHnHn?< NBn f  $Hn?< N
XHnHn?< NB`   Hn?< #N
XHnHn?< NB/p>@m  =@?.Hk PHn/<    NjHnNg  \0+ N   >A p  /0+ N   >A p  /< ?, ?.?.0, R@n? N=| RnQ~.` @  f  `Hn?< N
XHnHn?< NBHn?< N
XHnHn?< NBHn?< N
XHnHn?< NB` B/p>@m  =@?.Hk PHn/<    NjHnNVD 2.n VDg  N0+ N   >A p  /0+ N   >A p  /< ?, ?.?< ?, NRnQz.0+ N   >A p  /0+ N   >A p  /< ?, ?. ?, ?< NHn?< N
XHnHn?< NBHn?< N
XHnHn?< NBHn?< N
XHnHn?< NB0, N   4HnAHp  ?< 2NB0, N   4HnAHp  ?< 2NBU?, < N0N   7@ 0+ N   7@ Bk HnNrHn?+ NzHnHk P/<    N?* N	?* N/. 
?< Hk 0, N   4AHp  N/. 
?< Hk HnN/. 
HnNrHn?< ?< NHnHk N/. 
HnNrHn?< NzHn?< 
NzHnHk N7|  7|  Bk L N^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T/. 
?< Hk Hn?< N	XHnN/. 
?< Hk Hn?< N	XHnNBn/p>@m  =@0.n f  FHnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    N?.Hk PHn/<    NjHnNg  P0.R@=@HnNrHn?.NzHk pHn/<    NjHnHnNHnHk p/<    NRnQ:.0.n l LU?< ?N=_?.Hk PHn/<    NjHnNf ?.Hk pHn/<    NjHnNf  HnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    NHnNrHn?.NzHk pHn/<    NjHnHnNHnHk p/<    N0.R@=@`  ^U?< ?< N0@ f  FHnNrHn?.NzHk pHn/<    NjHnHnNHnHk p/<    N` n  f  /. 
?<N
`  p?* BgN	?* N/. 
HmHk N/. 
?< Hk Hn?<  N
XHnN/. 
HnNrHn?< NzHnHk N7|  L N^ _\NNVH8$n 
&j &S0+ N   >I(t  (T0+ N   >A p   P-Hn  f 
 nh #(f  ?< `   n0(#(S@"n3@#( n0(#(N  dHr  nA#(0  0N   <&  n0(#(N  dHr  nA#)0  0N  H@ n0(#(N  dHr  nA#(0  0N   <(  n0(#(N  dHr  nA#)0  0N  H@ nA00@ J@jD@"nC30 `  n f   nh d#(WD  n2(#(I4SBԲBWDJk ^D4SB nh#(WDg  ?< `  @0+ N   >A p  /0+ N   >A p  /?+ B'NHnNrHn n0(#(N  dHr  nA#(0  ?NzHn n0(#(N  dHr  nA#)0  ?NzHnHk P/<    N?* N	?* ?< N	LN^ _\NNVH8$n 
&j &S0+ N   >I(t  (T0+ N   >A p   P-Hn  f : nh #(f  ?< ` U n0(#(N  dHr  nA#(0  ?HnN=_U n0(#(N  dHr  nA#)0  ?HnN=_ n0(#(S@"n3@#(.HN   & .HN   @0.N   <@0.N  H@.HN   ( .HN   @0.N   <@0.N  H@ n00@J@jD@"n30`  n f   nh d#(WD 2, ISA  nh#(WDJk ^D4, JSB nh#(WDg  ?< `  @0+ N   >A p  /0+ N   >A p  /?+ B'NHnNrHn n0(#(N  dHr  nA#(0  ?NzHn n0(#(N  dHr  nA#)0  ?NzHnHk P/<    N?* N	?* N	LN^ _\NNVH8$n &j &S0+ N   >I(t  (T0+ N   >A p   P-HHnNrHnHk P/<    NB.T l  /. BgN
` J,f  /. N
` tJ.f lU?< ?< N=_0.@ f  /. ?< N
| ` 4@ f rl  o d0+ N   >A p  /0+ N   >A p  /Bg< NHn n0(#(N  dHr  nA#(0  0N   <&  n0(#(N  dHr  nA#)0  0N  H@ nA000 J@jD@? ?, ?, N2XHnN2 N   =@n Po  ~HnNrHn n0(#(N  dHr  nA#(0  ?NzHn n0(#(N  dHr  nA#)0  ?NzHnHk P/<    N/. N
| ` @ f l  o 0+ N   >A p  /0+ N   >A p  /Bg< NU n0(#(N  dHr  nA#(0  ?HnN=_U n0(#(N  dHr  nA#)0  ?HnN=_Hn.HN   & .HN   @0.N   <@0.N  H@ n000J@jD@? ?, ?N:XHnN2 N   =@n Po  ~HnNrHn n0(#(N  dHr  nA#(0  ?NzHn n0(#(N  dHr  nA#)0  ?NzHnHk P/<    N/. N
| ` LN^.NuNVH  $n Hnt/. sJ g  /* ШB Hj (`   j  P0( @  f  YHz N%_ `  v@ f  `  j@ f  `  ^@ f  `  R@ f  `  F@ f  `  :@ f  `  .@ f  `  "@ f  `  @ 	f  `  
@ 
f  J g  ?* N:/* HmV?* NB/.sL N^.NuKSS0-2 NVH 8$n 
&j &S0+ N   >I(t  (T0+ N   >A p   P-H0. @ f  /. 
N
`  @ f  |  `  @ f  /. 
N
`  @ f  /. 
N
Z`  @ f  /. 
BgN
`  @ f  /. 
N
j`  @ f  /. 
?< N
`  @ f  /. 
?< N
`  l@ f  /. 
BgN
`  V@ 	f  /. 
?< N
`  >@ f  /. 
?<N
`  &@ 
f  /. 
N
`  @f  
/. 
N
BL N^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T0+ N   >A p   P-H0. @ f  /. 
N
`  @ f  |  `  @ f  /. 
N
`  @ f  /. 
N
J`  @ f  /. 
BgN
`  @ f  /. 
N
r`  @ f  /. 
N
z`  @ f  /. 
N
b`  l@ f  /. 
BgN
`  V@ 	f  /. 
?< N
`  >@ f  /. 
?<N
`  &@ 
f  /. 
N
`  @f  
/. 
N
RL N^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T0. @ f  Zk  f  DHnNrHn?+ NzHn?+ NzHnHk P/<    N/. 
?<N
`  
/. 
N
J`  j@ f  Rk  f  <0+ N   >A p  /0+ N   >A p  /?N	
/. 
N
J`  @f  
?* N	L N^ _\NNV  H 8$n 
&j &S0+ N   >I(t  (T0. @ f  (k  f  /. 
?< N
`  
/. 
N
Z`  l@ f  Tk  f  >0+ N   >A p  /0+ N   >A p  /?, N	/. 
N
Z`  @f  
?* N	L N^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T0. @ f /. 
N	k  f  /. 
N
`  =k n o  n f  =k `  =k HnNrHn?+ NzHnHk P/<    N/. 
?< Hk 0.N   4AHp  N/. 
HnNrHn?< NzHn?< NzHnHk N/. 
HnNrHn?< NzHn?< 
NzHnHk N?* N	`  v@ f  ^k  f  H0+ N   >A p  /0+ N   >A p  /?N	
/. 
N
J`  
/. 
N
`  @f  
?* N	L N^ _\NNVH8$n 
&j &S0+ N   >I(t  (T0. @ f /. 
N	Y0+ H/ /<    .    f  /. 
N
` U?+ HnN=_U.HN    NHN   @J.WD 2+ 	UD. WDY4+ H//<   & ( .    WD  g  (U.HN    NHN   @U?..HN    N0N   7@ HnNrHn?+ NzHnHk P/<    N/. 
?< Hk .HN   & 0.N   4@AHp0 N/. 
HnNrHn?< NzHn?< NzHnHk N/. 
HnNrHn?< NzHn?< 
NzHnHk N?* N	`  x@ f  `k  f  J0+ N   >A p  /0+ N   >A p  /?, N	/. 
N
Z`  
/. 
N
`  @f  
?* N	LN^ _\NNVH 8$n 
&j &SHnNrHn?+ NzHk PHn/<    NjHnHnNHnHk P/<    N0. @ g  
@ f HnNrHn?+ NzHk PHn/<    NjHnHnNHnHk P/<    Nn  f &0+ N   >I(t  (T0+ N   >A p  /0+ N   >A p  /?+ N	
/0+ >@m  =@0.R@? Hk PHn/<    NjHnNg  JHnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    N`  FHnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    NRnQH./. 
N
j`  @f  ?* ?< N	L N^ _\NNVH 8$n 
&j &S0. @ g  
@ f HnNrHnU?+ B'NNzHnU?+ < NNzHk PHn/<    NjHnHnNHnHk P/<    Nn  f b0+ N   >I(t  (T0+ N   >A p  /0+ N   >A p  /?+ N	/0+ >, @m  =@/p ~ m  @U?..HN    N=_0.R@? Hk PHn/<    NjHnNg  JHnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    N`  FHnNrHn?.NzHk PHn/<    NjHnHnNHnHk P/<    NR.Sd (.RnQ./. 
N
r`  @f  
?* N	L N^ _\NNVH 0$n 
&j &S0. @ g  
@ f  HnNrHnU?+ B'NNzHnU?+ < NNzHk PHn/<    NjHnHnNHnHk P/<    Nn  f  >0+ N   >A p  /0+ N   >A p  /?+ N	/. 
N
z`  @f  
?* N	L N^ _\NNVH 8$n 
&j &S0+ N   >I(t  (T0. @ g  
@ f *Jk f  n  f  /. 
N	`  FHnNrHn?+ NzHk PHn/<    NjHnHnNHnHk P/<    N7|  /. 
HnNrHn?< NzHnHk N/. 
HnNrHn?< NzHnHk N?* N	`  n0+ l g  Z m/Q0+ N   >A p  /?+ N?+ B'N	"0+ N   >A p  /NHmQ/. 
N
JL N^ _\NNV  H 0$n 
&j &S0. @ f  /. 
N
J`  @f  ?* BgN	L N^ _\NNV H 8$n 
&j &S0+ N   >I(t  (T0. @ f  Jk f  
/. 
N	Jk WD JT^Dg  <0+ N   >A p  /0+ N   >A p  /?N	
T f  &/. 
HnNrHn?< NzHnHk NT l  /. 
BgN
`  
/. 
N
J`  @ f  Jk f  
/. 
N	Jk WD JT^Dg  <0+ N   >A p  /0+ N   >A p  /?N	
/. 
?< Hk Hn ?< N	XHn N/. 
?< Hk Hn ?< N	XHn N/. 
N
J`  @f  Jk f  ?* ?< N	L N^ _\NNVH 8$n 
&j &S0+ N   >II  ?+ N/, *N*/, .N* j  P-H n0( @  f  /. 
?. N
` @ f  /. 
?. N
`  @ f  /. 
?. N
`  @ f  /. 
?. N
`  @ f  /. 
?. N`  @ f  /. 
?. N`  @ f  /. 
?. N
`  v@ f  /. 
?. N`  ^@ f  /. 
?. N2`  F@ 	f  /. 
?. N:`  .@ 
f  /. 
?. N"`  @ f  /. 
?. N*/, .N2/, *N2L N^ _\NNVH8n l 0. N  HE$r  &j &S0+ N   >I(t  (TJ* f n < n U?. /. HnHnN	=_nm n  o  0. @ =@ =k `  =k 0.@f  0, S@2.nH/HnN"/<   HnN"HnHn?< 2.H/HnN"HnHn?< /<   HnN"HnHn?< H/ HnN"HnHn?< 0.nU@H/ HnN"HnHn?< HnN2 RN   =@n l  =| 0.l o  =l 0, R@n=@`  B@f  BnBn`  .@f  =l =l `  @f  =| =| 0+ N   >A p  /0+ N   >A p  /< ?. ?.?.?.N?. N	` k  f  0. N  HA/0  N	Jn o fn  o  Dn  f  =k `  =k 0.N   4AHp  Hn?< NB`  NU?. HnN=_.HN   & 0.N   4@AHp0 Hn?< NB0. N   7@ 0. N  HA/0  ?< Hk HnN0. N  HA/0  HnNrHn?< NzHn?< NzHnHk N0. N  HA/0  HnNrHn?< NzHn?< 
NzHnHk N?. N	7|  `  0. N  HA/0  N
LN^ _O 
NNVH8n l 0. N  HE$r  &j &S0+ N   >I(t  (T0@ n m vU?. /. HnHnN	=_nm Fn  o  t0. @ =@ U?+ HnN=_=|?.HnNrHn?<NzHn?<NzHn?<NzHnNVD HN   @`  dU?+ HnN=_=|?.HnNrHn?<NzHn?<NzHn?<NzHnNVD HN   @J.f `0.@f  0.S@=@0.nH n2, SA2.nH/ HnN"H/HnN"HnHn?< HnN2 RN   =@n l  =| 0.l o  =l 0, R@n=@`  Z@g  
@f  BnBn`  >@g  
@f  =l =l `  @g  
@f  =| =| 0+ N   >A p  /0+ N   >A p  /.HN    ?.?. ?.?.N?. N	` Pk  f  0. N  HA/0  N	Jn o 
0. N   7@ U?. HnN=_0. N  HA/0  ?< Hk .HN   & 0.N   4@AHp0 N0. N  HA/0  HnNrHn?< NzHn?< NzHnHk N0. N  HA/0  HnNrHn?< NzHn?< 
NzHnHk N?. N	7|  `  0. N  HA/0  N
LN^ _O 
NNVH 80. N  HE$r  &j &S0+ N   >I(t  (TJk f  0. N  HA/0  N	Jn o  0. 
N   7@ Bk 0. N  HA/0  HnNrHn?< NzHnHk N0. N  HA/0  ?< Hk 0. 
N   4AHp  N0. N  HA/0  HnNrHn?< NzHnHk N`  t7|  0. N  HA/0  HnNrHn?< NzHnHk N0. N  HA/0  HnNrHn?< NzHnHk N?. ?< N	L N^ _\NNVH  0. N  HE$r  $j $Rn  l  Jn o  JHnNrHn?. NzHj PHn/<    NjHnHnNHnHj P/<    N`  FHnNrHn?. NzHj PHn/<    NjHnHnNHnHj P/<    N0* @  f  ?. N	`  @ f  ?. N	`  @ g  
@ f  ?. ?. ?. /. NJ`  @ g  
@ f  ?. ?. ?. /. NB`  `@ f  $0. N  HA/0  ?. N
`  6@ 	f  ?. ?. ?. NR`  @ f  ?. ?. ?. N	L N^ _O 
NNVH 0. N  HE$r  $j $R0. N   >& 0. N   C30 0. N  HA/0  N	LN^ _O 
NNV  H  0. N  HE$r  J g  V/* N* j  P0@ f  ?. ?. ?. /. NZ`  @ f  ?. ?. ?. /. Nb/* N2L N^ _O 
NNVH  $n 
p * @  f  J. g  =| `  =| `  B@ f  J. g  =| `  Bn`   @ f  J. g  =| `  Bn/. 
?.NL N^ _\NNVH 0 n C""""0. N  HE$r  J g J* f Y0.H/ /<    . J^D HN   @-nHnШq/* HnШ~/* N*Y j //<  .-_-nY/* N" .П-@B.B.|  VD mWDg  $Y. -П\D HN   @&nU/.Hk 
Jg lHnN2?. N:?< 
mf  /..HN    N
UsJg  p + J@o  Hnȩr0.ʐnJ@jD@@ ^D 2.ȒnJAjDAA ^Dg  /.?<N/.N/.HnȨ/.HnШ~p + e  Bnp + @ l  BnA 
C""Hn?.?.ȨAC 
""/.N/.?<N| ` &Yu+_Y0+ H/ /<  . Jg  /.BgN?. NBHnN:=k p + =@| J.f  0+ HЮ-@ .\D .g X/* N2J.g  . .-@+n;|?. ?.?./.NjL N^ _\NNV0H UHnN*Jg 0-`N  HY& 0.N   AzHp  ?<HnDHzNC#0 0-`N  HA-p  0Hn6Bg?< A?< ?<0?-`Hn6B'< < B'NjHn6BgBg?< ?<訧?-`Hn6N?-`Hn0?< N

XHn0N=| >Bn@B.B0.N   YB& NC$#0 /.0?< HnDHn0?< N	XHn0N/.0?< HnDHn0?< N

XHn0N/.0?< HnDHn0?< N

XHn0N/.0HnNrHn?< ?< NHn?< NzHn?< NzHnHnDNUHn>0.N   A$/0  /<   N =_40.N   HnNrHnA$ p   PHh P/<    N?-`YHz dNBN?-`B'N"/.0N	L N^Nu<B1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18,S19 20 21,T-22 KSS0-1     NV 0. N   >ABp  ?. N?< Hn ?< &N
XHn NbN^ _TNNVH0BnUHn?< NHN   @J.g  ,0.N   >AJp  WD HN   @J.WD .g Jn f  J.g  =|  `  =|  n  f  B.n  WD m ]D.g n  g 8Hn?<N$nJ.g  Hz0.N   >AHp  N0.N   >A p   P"n0< "Q2Hn?< N
XHnHn?< NBn  g  *HnHj?< PNBHzHjL?< PNB/.N`  BRBj Bj 5| 	 HzHj?< PNBB*B*B*B*B*HzHj?< PNBHzHjV?< PNBHzHj?< PNBHzHj?< PNBHzHjL?< PNBHz|Hj?< PNB/.NHn?< %N
XHnHn?< NBJ.g  UHn?<P?< ?< Hn?< N
XHnHnHn?< N
XHnHnHn?< N"XHnNXHnHnHn?< N"XHnNXHnHnHn?< N"XHnNXHnHn?< N
XHnN=_`  RUHn?<PBg?< Hn?< N
XHnHnHzbHz`Hz^Hz\Hn?< N
XHnN=_NJ.g /.NJ.g  Y0.H/ /<    .    g  BRY0.H/ /<    .    g  Bj Y0.H/ /<    .    g  /p>* @m  =@/p>@m  f=@/p ~ m  L@.HN   & 0.N   @0.N  @AB00 R.Sd .RnQ.RnQ.0-R@;@=m0.N   >GG  J *g  
/+ *N-|   .d   .R-@Y/.N'_ * n"k *"Q0< "Q2/<CDKS/<GRIDHn?.?.N
HnN`  | J.g ZUHnN*Jg J0.N   >EE  |  0.N   5@ | ?.N/* *N*&j *&S?< Hn?< N
XHnNb0-`N  HY& 0.N   AzHp  ?<HnHzNC#0 HnBg?< 0?< ?<0?-`HnB'< < B'NjHnBgBg?< ?<訧?-`HnN?-`Hn?< 	N
XHnN=| =| B.0.N   =@HnNrHnHnT/<    NHnNrHnHnt/<    NHnNrHnHn4/<    N0-`N  HA/0  ?< HmRN0.N   YB& NC$#0 UHn0.N   A$/0  /<   N =_?.B'N	" j */N0-`N  HA/0  ?< N
n  g  ?.?< ?< BNj?-`B'N"/* *N2LN^ _TN1                        *B1 2 3 4 5 6 7 8 9 10 11 12,S13 14 15,T-16   ZP     NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH Bn n BPUHn?< NJg  V0.N   >Ap   o  4 n 0R@"n 2 n 0N  & 0.N   "n 0` Bn n "n 2UHn?< NJg  V0.N   >Ap   f  4 n 0R@"n 2 n 0N  & 0.N   "n 0`  n JPf   n "n 2L N^ _O NNV
H8/. Hn?<Hn?< NzXHnN:BHn
N"Hn
NB/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>+ @m  $=@0.N  HAVBp  RnQ./* *N2RnQ. n 0( R@H/ Hn
N"/<   Hn N"Hn Hn
?< Hn
N2 N   =@Bn$n /p>. @m t=@J-f `0.N  r  n 0 0N   >GG  /+ *N* k *-P/p n>( @m =@J-f 0.N  H nAVJp  f  (0.R@=@0.N  H"nCV3  /0.R@>. @m L=@0.N  r  n 0 0N   >A/0  N*0.N  r  n 0 0N   >A p  -P0.nf  0.R@=@`  =| /0. n>( @m z=@/p ~ m `@Bn/p>@m  =@(n0.N   & 0.N  r A0  0N  @p A00 =@(n.HN   & 0.N   @0.N  r A0  0N  @p A00 =@Jn^D Jn^Dg  0.ؐnJ@jD@=@`  =n0.n=@RnQ.0* S@Ґn=@Hn
?.?* ?N:XHnHn
?<
m  0.N  H nAV=p  . f  0.D@=@0.N  H nAVJp  f  "0.N  H"nCV3  ` 0.N  H nAV20  JAjDA=A0.J@jD@ng |0.N  H nAV20  H=A/p>. @m D=@0.N  r  n 0 0N   >A/0  N*0.N  r  n 0 0N   >A p  -P/p n>( @m  =@0.N  H nAV20  JAjDAnf  `0.N  H nAVJp  l  &0.N  H2.DA"nCV3  `  0.N  H"nCV3  RnQt.0.N  r  n 0 0N   >A/0  N2RnQ.R.Sd .RnQ.0.N  r  n 0 0N   >A/0  N2RnQ.0.S@ n n d2.  n H/ Hn
N"H/Hn N"Hn Hn
?< Hn
NBRnQ ./+ *N2RnQ.J-f 
?. NjHn?< NzXHnN:BHn
N"Hn
NBHzHnHnHn
?<Hn
Bg?< N:XHnN?. Hn?< NzXHnNb/p>.@m  :=@0.N HABp  0.N HA2Bp  RnQ./p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>+ @m  r=@0.N  HAV20  JAjDA0N H& 0.N  HAV20  JAjDA0N HA20  RAC30 RnQ./* *N2RnQ2./p>.@m =@0.N HAJp  o tHnNrHnHn/<    NBn/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>+ @m  v=@0.N  HAV20  JAjDAnf  FHnNrHn?.NzHnHn/<    NjHnHnNHnHn/<    NRnQ./* *N2RnQ../p>. @m  :=@?.HnHn/<    NjHnNg  0.R@=@RnQ.0.N H& 0.N   C230 RnQn.BnBn=n /p>.@m  =@0.N HA220  n^D & 0.N HA220  nWD ( 0.N HA20  n^D  g  80.N HA2=p  0.N HA=p  =nRnQ^.Jno 0.N HA2Bp  0.N HABp  0.R@=@?. NjHzHn?.BgN*XHnNHzHn?.BgN*XHnNHzHn?.BgN*XHnNHzpHnHnHn
?<Hn
Bg?< N:XHnN?. Hn?< NzXHnNbBn/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>+ @m  =@0.N  HAV20  JAjDAnf  j0.N  HAVJp  o  
B.`  | U?..HN   & 0.N   4@p A00 ? Nr=_RnQn./* *N2RnQ
./p>. @m =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>+ @m ~=@0.N  HAV20  JAjDAnf N0.N  HAVJp  o  
B.`  | HzjHn?.BgN*XHnNHzPHn?.BgN*XHnNHz6.HN   & 0.N   4@AHp0 NHzU.HN    NHN   & 0.N   4@AHp0 NHz Hn.HN   & 0.N   4@p A00 2.ޒ@?Hz |NXHnN?. Hn?< NzXHnNbRnQ./* *N2RnQ&.N"JnWD -g JLN^ _O N1123412345 NV
H8/. Hn?<Hn?< NzXHnN:BHn
N"Hn
NB/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>@m  "=@0.N  AB0  RnQ./* *N2RnQ. n 0( R@H/ Hn
N"/<   Hn N"Hn Hn
?< Hn
N2 N   =@Bn$n /p>. @m =@J-f 0.N  r  n 0 0N   >GG  /+ *N* k *-P/p n>@m =@J-f 0.N  r  nA0  JAf  20.R@=@0.N  & 0.N   "nC0 /0.R@>. @m =@0.N  r  n 0 0N   >A/0  N*0.N  r  n 0 0N   >A p  -P0.nf  0.R@=@`  =| /0. n>@m =@Bn/p ~ m @/p>* @m  =@(n.HN   & 0.N  H( AV00@ N   @0.N  @p A00 =@(n.HN   & 0.N  H( AV00@ N   @0.N  @p A00 =@Jn^D Jn^Dg  0.ؐnJ@jD@=@`  =n0.n=@RnQ.R.Sd .0* H2* SAn=@Hn
?.?* ?* N2XHnHn
?<
m 0.N  r  nA0  =A0.N  r  nA0  JAf  ,0.N  & 0.N   "nC0 ` >0.N  r  nA0  =A0.ng /p>. @m =@0.N  r  n 0 0N   >A/0  N*0.N  r  n 0 0N   >A p  -P/p n>@m  V=@0.N  r  nA0  nf  (0.N  & 0.N   "nC0 RnQ.0.N  r  n 0 0N   >A/0  N2RnQ.RnQ.0.N  r  n 0 0N   >A/0  N2RnQ.0.S@ nn d2.  nH/ Hn
N"H/Hn N"Hn Hn
?< Hn
NBRnQV./+ *N2RnQ.J-f ?. NjHn?< NzXHnN:BHn
N"Hn
NBHzHnHnHn
?<Hn
Bg?< N:XHnN?. Hn?< NzXHnNb/p>.@m  :=@0.N HABp  0.N HA2Bp  RnQ./p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>@m  f=@0.N  r A0  0N H& 0.N  r A0  0N HA20  RAC30 RnQ./* *N2RnQ@./p>.@m =@0.N HAJp  o lHnNrHnHn/<    NBn/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>@m  p=@0.N  r A0  nf  FHnNrHn?.NzHnHn/<    NjHnHnNHnHn/<    NRnQ./* *N2RnQ6./p>. @m  :=@?.HnHn/<    NjHnNg  0.R@=@RnQ.0.N H& 0.N   C230 RnQv.BnBn=n /p>.@m  =@0.N HA220  n^D & 0.N HA220  nWD ( 0.N HA20  n^D  g  80.N HA2=p  0.N HA=p  =nRnQ^.Jno 0.N HA2Bp  0.N HABp  0.R@=@?. NjHzHn?.BgN*XHnNHzHn?.BgN*XHnNHzHn?.BgN*XHnNHz~HnHnHn
?<Hn
Bg?< N:XHnN?. Hn?< NzXHnNb/p>. @m  =@0.N  r  n 0 0N   >EE  /* *N* j *-P&n/p>@m  =@0.N  r A0  nf  tHz Hn?.BgN*XHnNHz Hn?.BgN*XHnNHz 0.N   4AHp  N?. Hn?< NzXHnNbRnQj./* *N2RnQ.N"JnWD -g <LN^ _O N11234123NVH 0BnBn?. NjHn?< NzXHnN:?. Hn?< NzXHnNb/p>. @m b=@J-f N0.N  r  n 0 0N   >EE  /* *N* j *-P&n0.S=@0.k =@0.n o  HzHn?< NB`  HzHn?< NBHzHnNHzHn?.BgN*XHnNHzHn?BgN*XHnNHzpHn?+ BgN*XHnNHzVHj 
N?. Hn?< NzXHnNb/* *N20. dH/ HnN"0. H/ HnN"HnHn?< HnNBRnQ.J-f  $n J. 
f  =R=| !`  =| "J. f  =j =| !`  =| "Hz Hn?.BgN*XHnNHz Hn?.BgN*XHnNHz lHn?.NzXHnNHz THn?.NzXHnN?. Hn?<  NzXHnNbL N^ _O N *123451234NVH 0 n 
Cp"Q?. NjHn?< NzXHnN:BHnN"HnNB?. Hn?< #NzXHnNbJ. g /p>. @m =@J-f 0.N  r A0  0N   >EE  /* *N* j *-P&n/p>@m  =@HzHn?.BgN*XHnNHzrHn?.BgN*XHnNHzX0.N   4AHp  N?. Hn?< %NzXHnNbRnQ./* *N20. dH/ HnN"0. H/ HnN"HnHn?< HnNB`  $n /p>@m  =@J-f  Hz Hn?.BgN*XHnNHz 0.N   4AHp  N?. Hn?< 'NzXHnNb0. dH/ HnN"0H/ HnN"HnHn?< HnNBRnQd.RnQ,.L N^ _O N12312NVH 0 n 
Cp"Q?. NjHn?< NzXHnN:BHnN"HnNB?. Hn?< $NzXHnNbJ. g 2/p>. @m "=@J-f 60.N  r A0  0N   >EE  /* *N* j *-P&n/p>+ @m  =@HzHn?.BgN*XHnNHzHn?.BgN*XHnNHz0.N   4AHp  NHz~0.N   4AHp  N?. Hn?< &NzXHnNbRnQh./* *N20. dH/ HnN"0. H/ HnN"HnHn?< HnNB`  $n /p>* @m  =@J-f  Hz Hn?.BgN*XHnNHz 0.N   4AHp  NHz 0.N   4AHp  N?. Hn?< (NzXHnNb0. dH/ HnN"0* H/ HnN"HnHn?< HnNBRnQB.RnQ.L N^ _O N1234123NVH0 n Cp"Qp .N   >EE  /* *N* j *-P n"n 0< "Q2/* *N2$n /p>. @m =@0.N  r A0  0N   >GG  /+ *N* k *-PHnNrHnHn/<   N/p>@m  =@| /p n>@m  P=@0.N   4& 0.N   4AHp   nAHp0 NJf  B.RnQ.J.g  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQH./0~@n  =@DG?.HnHn/<   NjHnNg  b0S@4/0.>@m  L=@0.N   42.RA& 0N   4AHp  AHp0 ?< 2NBRnQ.SnQx.HnNrHnHn/<   N/p>* @m  =@| /p n>( @m  =@0.N   4& 0.N   4AHp   nAHp0 NJf  D0.N   4& 0.N   4AHp   nAHp0 NJf  B.RnQz.J.g  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQ./0* ~@n  =@DG?.HnHn/<   NjHnNg  0* S@5@ /0.>* @m  =@/p ~ m  x@.HN   & 0.N   4@.HN   2.RA( 0N   4@AHp@ AHp0 ?< 2NBR.Sd .RnQv.SnQ,./+ *N2RnQ.$n /p>. @m =@0.N  r A0  0N   >GG  /+ *N* k *-P/p>@m  =@/p n>@m  r=@0.N   4& 0.N   4AHp   nAHp0 NJf  (0.N  & 0.N   "nC0 RnQ.RnQx./p>* @m  =@/p n>( @m  =@0.N   4& 0.N   4AHp   nAHp0 NJf  \0.N   4& 0.N   4AHp   nAHp0 NJf  0.N  H"nCV3  RnQb.RnQB./+ *N2RnQF.LN^ _O NNVH0$n 0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@/p n >( @m =@=|/p ~ m X@/p n >( @m 6=@Bn/p>@m  =@&n 0.N   & 0.N  r A0  0N  @p A00 =@&n .HN   & 0.N   @0.N  r A0  0N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ.0.nl  "=n=n. f  0.D@=@RnQ.R.Sd .0.N  H2* SAҒn"n 3 0.N  H"n 3 RnQV.LN^ _O NNVH0$n 0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@/p n >@m =@=|/p n >@m T=@Bn/p ~ m @/p>* @m  =@&n .HN   & 0.N  H( AV00@ N   @0.N  @p A00 =@&n .HN   & 0.N  H( AV00@ N   @0.N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ.R.Sd .0.nl  =n=nRnQ.0.N  H2* I4* SBn"n 3 0.N  H"n 3 RnQP.LN^ _O NNV>H  n Cp"Q n Cp"Q n Ctp"Q/. Hnp?<0. "N  r As0  0N   >A/0  N*0. "N  r As0  0N   >A p  -PlHz0. "N  r As0  0N   >AHp  N0.  N  r As0  0N   >A/0  N*0.  N  r As0  0N   >A p  -PhHzL0.  N  r As0  0N   >AHp  N$n $Bn`J. g  t nl=PZ=| )X/p>.Z@m  R=@fHnH0.fN  HA?0  ?* ?* N2XHnpHnH?<
m  0.`R@=@`RnfQ.`  p nl=h Z=| *X/p>.Z@m  P=@fHnH0.fN  HA?0  ?* ?N:XHnpHnH?<
m  0.`R@=@`RnfQ.0. "N   (& 0.  N  H@0.`H/ HnHN"0.ZH/ Hn>N"Hn>HnH?< HnHN2 N   "n 30J. 
g B?. (NjHzHnR?. "BgN*XHnRNHzHnR?.  BgN*XHnRNHztHnR0. "N   (& 0.  N  H@ n 000H/ HnHN"/<   
Hn>N"Hn>HnH?< HnHBg?< N:XHnRNHzHnRHnpHnH?<HnHBg?< N:XHnRNHzHnR?.XNzXHnRN?. (HnR?< +NzXHnRNb/p>.Z@m =@f=|`/p>.Z@m  J=@d0.dN  HA20  n`o   0.dN  HA=p  `=ndbRndQ.0.bN  HC3  0.bN  HA=p  dHzHnR?.fBgN*XHnRNHzHnR0.f dH/ HnHN"0.ZH/ Hn>N"Hn>HnH?< HnH?< ?< N:XHnRNHzHnR?. "BgN*XHnRNHzHnR?.bBgN*XHnRNJ. g  |Hz^HnRHnH?.`?* ?* N2XHnH?< ?< N:XHnRNHz(0.bN   4 nlAHp  N?. (HnR?< ,NzXHnRNb` @HzHnRHnH?.`?* ?N:XHnH?< ?< N:XHnRNJndo  
B.S`  0.dD@=@d| S0.bN   4 nlAHp  HnT?< NB.SHN   & 0.dN   4@ nhAHp0 HnT?< NBp .T=@^p .T=@\HzHnTNHz0.bN   4 nlAHp  NHzHnR0.\n^? HzNXHnRN?. (HnR?< -NzXHnRNbHzHnR?.  BgN*XHnRNHzHnR?.dBgN*XHnRNJ. g  DHzx0.dN   4 nlAHp  N?. (HnR?< .NzXHnRNb`  Hz8HnTNHz.U.SHN    NHN   & 0.dN   4@ nhAHp0 NHz HnR0.^n\? Hz NXHnRN?. (HnR?< /NzXHnRNbRnfQ.0. "N  r As0  0N   >A/0  N20.  N  r As0  0N   >A/0  N2LN^ _O "N56123471245363678 123345 NVH  n Cp"Q/. Hn?<?. NjHn?< NzXHnN:BHnN"HnNBJ. 
g  :Hz@Hn?< 3NzXHnNHz(Hn?< 1NzXHnN`  6HzHn?< 2NzXHnNHzHn?< 0NzXHnNJ. g  :HzHn?< )NzXHnN?. Hn?< 4NzXHnNb`  6HzHn?< *NzXHnN?. Hn?< 5NzXHnNb0. S@ =@J. 
g  0. S@ H 2.Ԓ@=A/p>.Ԟ@m =@J-f =|/p>. @m  =@J. 
g  0.R@=@`  =| /0.>. @m  =@0.ްng  l0.N   (& 0.N  H@ n 000ְno  :0.N   (& 0.N  H@ n =p0=n=nRnQ.RnQJ.0.N  r A0  0N   >EE  /* *N* j *-PHzHj 
N0.N  r A0  0N   >EE  /* *N* j *-PHzHj 
N0.N   (& 0.N  H@"n 30HzHn?.BgN*XHnNHz~Hn?.BgN*XHnNHzdHn0.H/ HnN"/<   
HnN"HnHn?< Hn?< ?< N:XHnNHzHnHnHn?<Hn?< ?< N:XHnN?. Hn?< 6NzXHnNb0.N  r A0  0N   >EE  /* *N20.N  r A0  0N   >EE  /* *N20. dH/ HnN"0.H/ HnN"HnHn?< HnNBRnQ.LN^ _O N121233894567NVH0$n 0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@/p>* @m @=@Bn/p>@m  =@&n 0.N  H& AV000 N   & 0.N  r A0  0N  @p A00 =@&n 0.N  H& AV000 N   & 0.N  r A0  0N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ.0.N  H2* SAҒn"n 3 RnQ.LN^ _O NNVH0$n 0* R@H/ HnN"/<   HnN"HnHn?< HnN2 N   =@/p>@m =@Bn/p ~ m F@/p>* @m (=@&n .HN   & 0.N  H( AV00@ N   @0.N  r A0  0N  @p A00 =@&n .HN   & 0.N  H( AV00@ N   @0.N  r A0  0N  @p A00 =@Jn^D Jn^Dg  0.nJ@jD@=@`  =n0.n=@RnQ.R.Sd .0.N  H2* I4* SBn"n 3 RnQ|.LN^ _O NNVH  n Cp"Q/. Hn?<$n &BnJ. g  =RHzHn?< )NzXHnN/p>@m  R=@Hn0.N  HA?0  ?* ?* N2XHnHn?<
m  0.R@=@RnQ.`  =j HzHn?< *NzXHnN/p>* @m  P=@Hn0.N  HA?0  ?* ?N:XHnHn?<
m  0.R@=@RnQ.0. N   (& 0. N  H@0.H/ HnN"0.H/ HnN"HnHn?< HnN2 N   "n 30J. g ?. *NjHzHn?. BgN*XHnNHzHn?. BgN*XHnNHzHn0. dH/ HnN"0* H/ HnN"HnHn?< HnBg?< N:XHnNHzHnHnHn?<HnBg?< N:XHnN?. *Hn?< 7NzXHnNb/p>.@m =@=|/p>.@m  J=@0.N  HA20  no   0.N  HA=p  =nRnQ.0.N  HC3  HzHn?.BgN*XHnNHzHn0. dH/ HnN"0.H/ HnN"HnHn?< Hn?< ?< N:XHnNHzPHn?.BgN*XHnNJ. g  xHz.HnHn?.?* ?* N2XHn?< ?< N:XHnNHz 0.N   4AHp  N?. *Hn?< 8NzXHnNb`  Hz HnHn?.?* ?N:XHn?< ?< N:XHnNHz 0.N   4AHp  NHz j0.N   4AHp  N?. *Hn?< 9NzXHnNbRnQ.LN^ _O $N77345612435356NVBH 0 n Cp"Q/. Hn?<. . g $n HnB?< NzXHnBN:BHn8N"Hn8NB/p>. "@m =@J-f 0.N  r A0  0N   >GG  /+ *N* k *-PHzbHk 
NJ. 
g  0.R@=@`  =| /0.>.  @m =@J-f 
0.ܰng 0.N  r A0  0N   >GG  /+ *N* k *-PHzHk 
NJ. 
g  J. g  /. /./.HnN`  /. /./.HnN?. $/. /./.?.?.HnHnBHnHn8?<Hn8. HN    . 
HN    . HN    N`  J. g  /. /./.HnHnbN`  /. /./.HnHnbN?. $/. ?.?.HnHnbHnHnBHnHn8?<Hn8. HN    . HN    N0.N  r A0  0N   >GG  /+ *N20.S@  n d2. "  H/ Hn8N"H/Hn.N"Hn.Hn8?< Hn8NBRnQ.0.N  r A0  0N   >GG  /+ *N2RnQ,.J. g  L?. $?. "?.  HnHnBHnHn8?<Hn8. 
HN    . HN    NJ. g  jJ. g  4?. $?. "?.  ?. Hn/. HnHn8?<Hn8N`  0?. $?. "?.  ?. Hn/. HnHn8?<Hn8NL N^ _O N12NV H $n EHzBHn  n  h?BgN*XHn NHz"Hn  n  h?( BgN*XHn N?< Hj 2Hn/<   NjHnNVD ?< 
Hj 2Hn/<   & NjHnNVD  g   n /(HnNrHn?< ?< NHn n HhN n /(HnNrHn?< ?< NHn?<  n HhN n /(HnNrHn?< NzHnBg n HhN`  d n /(HnNrHn?< ?< NHn n HhN n /(HnNrHn?< ?< NHnBg n HhN?< 	Hj 2Hn/<   NjHnNVD ?< 
Hj 2Hn/<   & NjHnNVD  g   n /(HnNrHn?< ?< NHn n HhN n /(HnNrHn?< ?< NHn?<  n HhN n /(HnNrHn?< NzHnBg n HhN`  d n /(HnNrHn?< ?< NHn n HhN n /(HnNrHn?< ?< NHnBg n HhN?< Hj 2Hn/<   NjHnNg  :HzVHn ?< NzXHn NHz>Hn ?< NzXHn N`  ?< 	Hj 2Hn/<   NjHnNg  :Hz Hn ?< NzXHn NHz Hn ?< 
NzXHn N`  ?< 
Hj 2Hn/<   NjHnNg  :Hz Hn ?< NzXHn NHz Hn ?< NzXHn N`  6Hz vHn ?< 	NzXHn NHz ^Hn ?< NzXHn N n /(?<  n HhHn ?< 
NzXHn NLN^.Nu1276767676NVxH Hn?<NHnHnHnxNn l  `  ?.?.Hnx/.NHzHnx?< NzXHnxNHzHnx?.BgN*XHnxNHzHnx?< NzXHnxNUHnxN=_YB?<QHnHzN-_B.B.B./.?<  HnHnx?< NzXHnxN nh  ^D  nP ^Dg  ./.HnXNrHnX?< 
NzHnX?< HnN`   nJh ^D  nJP^Dg  h n0(  nPo  ./.HnXNrHnX?< 	NzHnX?< HnN`  */.HnXNrHnX?< NzHnX?< HnN/N nJh WD  nJPWDg  */.HnXNrHnX?< ?< 
NHnXHnN nJh WD  nJPWDg  6/.HnXNrHnX?< NzHnX?< ?<  NHnXHnN/.?< HnHnx?< PBgN*XHnxN0.H/ HnnN"/<   HndN"HndHnn?< HnnN* N   =@n l  =| /.?< HnHnx?< BgN*XHnxNHz	HnxNJWD HnxHnx?< & NXHnxNXHnxHnxNJWD  g  R/.HnXNrHnX?< NzHnXHnN/.HnXNrHnX?< NzHnX?< HnN`  >/.?< HnHnxN/.HnXNrHnX?< NzHnX?< HnN/.HnXNrHnX?< NzHnX?< NzHnXHnN/.HmHnU/.Hn?.NJf ?.HnXNrHnX?< ?< NHnXNg .n WD ?< HnHnX/<   & NjHnXNWD  g  ,/.HnXNrHnX?< ?< NHnXBgHnNHnXNrHnX?< ?< NHnHn8/<   NjHn8HnXNHnNrHnHnXNg  V/.HnXNrHnX?< ?<  NHnXHnN/.HnXNrHnX?< NzHnX?< HnN`  */.HnXNrHnX?< ?<  NHnXHnN`  0?.HnXNrHnX?< ?< 
NHnXNg  /N?.HnXNrHnX?< NzHnX?< NzHnXNg .n f ~HnnHnn/.?< HnNXHnnNJXHnnHn?<UHnx/.?< HnNXHnxNB=_Hnx/.?<  HnNXHnxHnx?< NB?< 	HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< 
HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @?< HnHnX/<   NjHnXNVD HN   @/.Nn f ?< Hnx?< NzXHnxNbJ.g J.g  8=| HnxHnx?< NXHnxNXHnxHnx?< NB`  <J.g  4U< NJJg  $=m`HnxHnx?< NB?-`HnxN0.N  HA/0  0.N  HA/0  ?.Nj?.Hnx?< NzXHnxNbHnx?< NzXHnxN*J-WD .g  :?.?.?.Hnx/..HN    .HN    NJ-WD .g  &?./.?.Hnx.HN    NJ-WD .g  &?./.?.Hnx.HN    NJ-f  r?.?.?.?.Hnx/.HnHnn?<Hnn.HN    .HN    .HN    .HN    B'NJ.g  ?.?.Hnx/.NJ-f  t?.?.?.?.Hnx/.HnHnn?<Hnn.HN    .HN    .HN    .HN    < N?.NjN2HnNL N^NuP98]B1 2 3 4,R8 9 10,R29 30 31,C-16 -17 18 19 21 22 23 25 26 27,S6 7 11 13 15 20 24 28,T12 14 -32    "     NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV/. Hn ?< NBBnBnBnBnHn Hn?< NBp . @@ =@0.d  0.R@=@Y/. N"-_ UHn/. 0.H/ N =_N^ _PNNVH /. 
Hn ?< NB/. N* n -P$n Bn0R@=@0.n=@n o  r0.H n=@0.N H".AҰ  -A nHh Hn NJd  =n`  $ nHh Hn NJc  =n`  Bnn l rn f  RWD J. WDg  =|`  x=n0R@40.N HAHp  0.R@N HAHp  0nH? N/. N20.N HY/. Hn & NC#0 /. N2=n LN^ _O NNVH  /. Hn ?< NB$n Bn0R@=@0.n=@n o  p0.H n=@0.N  x AHp  Hn?< NBHnHn NJd  =n`   HnHn NJc  =n`  Bnn l tJnWD HN   @ L N^ _PNNVH  /. Hn ?< NB$n p . W@=@Jno  0.j o  =j HnHn p . nR@? ?.NZHnHn?< NBU/. HnN"HN   @J.f  0.S@=@JnWD .g =n L N^ _PNNVH $n HzHn?< NBHzHn?< NBB. n BPJ f  | `  RHN   =@ R$ * S%@ n VD n 
VDn ]Dn ^Dg 0n o  0.@ N   =@n @^D n []Dg  0.@  N   =@n -WD n 'WDHz Hn& NJRD  n `^D n {]D g  >0.N   @HnHnN:HnHnNRHnHn?< NB`  bHz HnNJc  Rp .N   r A0  A 'f  ,HnHn?< p .S@? NZHnHn?< NB| J.g f"n 2Hn/. ?< NBLN^ _PN           NVYBN-_/. ?<N"N n  PBP n BP/. N* n -PY/. N"-_HnHnHnN2XHnHn?< NBHz HnNJc  "U/. n /Hn< N=_`  BnJno  P/.N*0.N H n" n  PҰ -A n0R@"n2/.N2 n 0R@"n 2Jnf N/. N2-n N^ _O N      NV/. 
Hn ?< NBYHz ?-N-_/.N* n-PY/.N"-_HnHnHnN2XHnHn?< NBHz HnNJc  U/. /. HnB'N=_`  BnJno  @/. N*0.N H n " n Ұ -A n0D@"n2/. N2Jnf b/.N2/.NN^ _O N	NOISE.SYS  NVH  /. 
Hn ?< NBHn?<N$nBRBj YHz ?-N-_/.N* n-PY/.N"-_HnHnNXHnHn?< NBHz HnNJc  @0R@40N  x HnAHp  ?< 
NBU?* p .? Nr5_ Hz <HnNJf /.N2/.N-n L N^ _\N	STEMS.SYS    NVH0/. N* n -P$n &n  n BP/p>@m =@0.N H".AҰ  -A nJP^D  nJh WDg  n 0R@"n 2 n"n3P  nHh Hn?< NBU/. HnN*=_Jnm J"n3n p .n=@HnHn?< ?.NZHnHn?< NB0.R@=@0.N H".AҰ  -A0.R_D Hn nHh ?< ?.& NZHnHnNJWD  HN   @J.g   nJh f  z nHh Hn?< NBHnHn0.R@? p .n? NZHnHn?< NBU/. HnN"Jg  ""n3n  n0(  nP"n3@ 0.R@=@J.f  RnQ0./. N2LN^ _O NNVH B.Y0. N   >A/0  HnHnN:-_/./.Hz
?-NBYHz
?-NJ-_/././.HnNR$n/.N* n-PBnBn/p>@m  L=@0.N H".AҰ  -A n0( no   n=h =nRnQ.Jno 0.R@=@0.N  dHC3  0.N H".AҰ  -A"n3n  n0( D@"n3@ =n0.N H".AҰ  -A n0( nWD HN   @J.g  "n3n 0.R@=@0.R^D J.WDg /p>. 
@m  8=@0.N  d & 0.N  dH@ABp0 RnQ.JnWD 2.n 
WDg l=n 
0. N   >A/0  N*0. N   >A p  -PY0. N   >A/0  N"-_BnBnHnHnHnN2XHnHn?< NBHzRHnNJc   U/./.Hn< N=_`  BnJno  R0.N H".AҰ  -A nJh o  (0.R@=@0.N  dH nC3   n .WD JnWDg >n .f 0.R@=@/p>.@m z=@/0.R@>.@m Z=@0.N  dH& A000 N  d & 0.N  dH( A00@ N  dH@0.N  dH( A00@ N  d ( 0.N  dH* A00P N  dH@A00@ R@C30 0.N  dH& A000 N  d & 0.N  dH( A00@ N  dH@0.N  dH( A00@ N  d ( 0.N  dH* A00P N  dH@A00@ R@C30 RnQ.RnQ.Jnf 0. N   >A/0  N2?. Nj?. HzHnN:Hn?< 
NjXHnHnNRHnNb?. Nj?. HzHnN:Hn?.BgN*XHnHnNRHzHnNRHn?.BgN*XHnHnNRHzHnNRHn?BgN*XHnHnNRHzxHnNRHn?.BgN*XHnHnNRHnNb/p>. 
@m |=@0.N  dHA=p  0.N H".AҰ  -A nHh Hn?< NB?. Hn n?( ?< N*XHzHnNRHn?.?< N*XHnHnNRHzHnNRHn n??< N*XHnHnNRHn n0( D@? ?< N*XHnHnNRHzfHnNRHnHnNRHnNZU/.HnN*=_Jnm  N?. Hz,HnN:HnHn?< p .n? NZHnHnNRHzHnNRHnNZ?. NjRnQ.?. NjBn/p>. 
@m  =@/0.R@>. 
@m  x=@0.N  d & 0.N  dH@A000 no  :0.N  d & 0.N  dH@A=p0 =n=nRnQ.RnQp.0.n m  0.N  d & 0.N  dH@ABp0 0.N  dHA=p  0.N  dHA=p  0.N H".AҰ  -A?. Hn?.?< N*XHzHnNR nHh HnNRHztHnNRHnNZ0.N H".AҰ  -A?.  nHh Nb0.n l T?. NjJ.g x/p>@m j=@0.N H".AҰ  -A nHh Hn?< NB?. Hn?.?< N*XHzHnNRHn n??< N*XHnHnNRHn n?( ?< N*XHnHnNRHn n?( ?< N*XHnHnNRHn n?( ?< N*XHnHnNRHz4HnNRHnHnNRHnNZU/.HnN*=_Jnm  B?. Hz HnN:HnHn?< p .n? NZHnHnNRHnNZ?. NjRnQ./.N2/.NHnNHnNL8N^ _PN	NOISE.SYS	STEMS.SYS  Analysis CompleteSentences =  
  Words =    Different words =  
  Stems =  :::   ( ):   <-> ::   NVH BnUHn?< NJg =| ?.NHzHn?< N
XHnNUHnN=_YB?<RHnHzN-_/.?< HnHn?< N
XHnN/.?< HnHn?< N
XHnN/.?< HnHn?.BgN*XHnN/.?< 	HnHn?< dBgN*XHnNHzzHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnNrHn?< NzHnHnN/.HnNrHn?< NzHn?< HnN`  >/.?< HnHnN/.HnNrHn?< NzHn?< HnN/.HnNrHn?< NzHn?< NzHnHnN/.HmHnU/.Hn?.NJf R?.HnNrHn?< ?< NHnNg *n WD ?< HnHn/<   & NjHnNWD  g  ,/.HnNrHn?< ?< NHnBgHnNHnNrHn?< ?< NHnHnd/<   NjHndHnNHnDNrHnDHnNg  V/.HnNrHn?< ?< NHnHnN/.HnNrHn?< NzHn?< HnN`  */.HnNrHn?< ?< NHnHnN?.HnNrHn?< NzHn?< NzHnNg `n f @UHn/.?< HnNXHnNB=_UHn/.?< 	HnNXHnNB=_n do  =| dHn/.?< HnNXHnHn?< NB?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @/.Nn f : m/Q?< Hn?< N
XHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.N  HA/0  0.N  HA/0  ?.Nj?.Hn?< N
XHnNb?.?.?.?.NZHmQJ.g  $?.Hn?< 	N
XHnNb?.NjL N^NuP4B1 2 3 4,R16 17 18,C-11 12 13 14,S6 8 10 15,T7 9 -19     "h@     NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TNNVH  $n Hz Hn?< NBHz Hn?< NBB.J f  | `   RHN   =@n 
WD n  WDg  | `  :0.N   @HnHnN:HnHnNRHnHn?< NB R$ * S%@ J.g jHn/. ?< NBL N^.Nu   NVH  /. Hn ?< NB$n $RBn/0N   r> Am  @=A0.N  
HAHp  Hn NJf  0.N   =@RnQ.Jnf  @R 
l  80R@40N   =@0.N  
HHn AHp  ?< NB0.N   =@ L N^ _PNNVH Y/<  
N-_/. N*/.N*$n$RBRBj Bj Bj HnNrHnHj 
/<   NHnNrHnHj /<   N n -PY/. N"-_HnHnNrXHnHn?< NBHzzHnNJc |p .@ \f  HnHn?< p .S@? NZHnHn?< NBHnHnNrXHnHn?< NBHzHnNJc p .@ Sf  "U/.HnNz0N   =@` v@ Df  nU/.HnNz0N   =@Jno  FHnNrHn?.NzHj 
Hn/<   NjHnHnNHnHj 
/<   N` @ If  nU/.HnNz0N   =@Jno  FHnNrHn?.NzHj Hn/<   NjHnHnNHnHj /<   N`  @ Nf  UHnNB0N   =@Jnn  =| j  m  =| `  L0* R@5@ 0* N  A
B0  0* R@5@ 0* N  & 0.N   C
0 `  pU/.HnNz0N   =@Jnf  =| `  Bj  m  =| `  .0* R@5@ 0* N  & 0.N   C
0 Jf R=| =| 0.N  r A
0  0N   =@Jnf  <0.R@N   =@0.N  r A
0  0N   =@`  <0* n5@ ?.Hj Hn/<   NjHnNf  0* n5@ 0.R@N   =@0.j o D/. N2/.N2-n LN^.Nu    NVH  /. N*$n $R=| 0.j n ~0.N  r A
0  =A?. Hn?.?< N*XHz^HnNRHnNZJno  ?. Hn?.?< N*XHz0HnNR0.N  
HAHp  HnNRHnNZ?.Hj 
Hn/<   NjHnNg  ?. Hz NZ?.Hj Hn/<   NjHnNg  ?. Hz NZ`  t0.R@=@0.N  r A
0  =A?. Hz HnN:Hz vHnNRHz lHnNRHn?.?< N*XHnHnNRHnNZ?. Nj0.R@=@` z/. N2L N^ _\N:    D  I \N NVH0$n &n ?. Nj/p>+ @m $=@0.k f  ?. HzNZ`  ?. HzNZ?. Hn?.?< N*XHzHnNRHnNZ/p>@m =@0.N   
& 0.N  
@p A00 J@o t?. HzHnN:0.N  
HAHp  HnNRHztHnNRHn0.N   
& 0.N  
@p A00 ? BgN*XHnHnNRHz(HnNRHn0.N   & 0.N  
H@0.N  HA 200 H/HnN"A^20  H/HnN"HnHn?< HnBg?< N:XHnHnNRHz HnNRHn0.N   & 0.N  
H@A ?00 BgN*XHnHnNRHz LHnNRHnNZRnQX.?. NjRnQ.LN^ _O 
NF : -> :()NVH0$n &n /p>+ @m  R=@/p>@m  8=@0.N   & 0.N  
H@A Bp0 RnQ.RnQ.=| =| =| 0.j n 0.N  r A
0  =AJnf  *0.R@=@0.N  r A
0  =A`  ?.Hj Hn/<   NjHnNf  Z0.N   & 0.N  
H@0.N   ( 0.N  
H@A 00@ nC 30 0.N   
& 0.N  
@p A00 =@0.R@=@` /p>+ @m  v=@Bn/p>@m  @=@0.N   & 0.N  
H@0.A p0 =@RnQ.0.N  HC^3  RnQ.7n LN^ _PNNVH0$n &n BHnN"HnHn?</p>+ @m 0=@0.N  HA^=p  Jno 0.N H2.H/HnN" n Hp Hn?<HnHn?<HnHn?<  HnHn?</p>@m  =@0.N   & 0.N  
H@A =p0 Jno  \0.N H2.H/HnN" n Hp Hn?<HnHn?<HnHn?< HnHn?<RnQl.RnQ.HnHn?<Hn/. ?< LN^ _O N    NVY/<  N-_ n PB n Jf  "n "`  . n -P n PJg   n P-P` "n"Q"-n N^.Nu    NV n Jg  ` n  P PJf   n /N n B`  : n -P n PJg  -n n P-P`  n PB/.N` N^.NuNVH  /. Hn?</. N*$n $R n  Ю "n "J g `/. N*?. $Nj n / n /N?. $HzHHnN:Hn0* H/ HnN"HnHn?<HnHn?< HnBg?< N:XHnHnNRHzHnNRHzHnNRHn n /HnN"Hn?<  /<   HnN"Hn?<  HnHn?< HnHn?<HnHn?<  0* H/ HnN"HnHn?< HnBg?< N:XHnHnNRHnNZ?. $ n / n /N/. N2 n  P-P ` ?. $Nj?. $HzHnN:Hz
HnNRHn/. ?< N2XHnHnNRHzHnNRHn?. "?< N*XHnHnNRHzHnNRHnNZJ. g  ?. $HzNZ`  ?. $HzNZ?. $HzHnN:HzHnNRHzHnNRHn n /?< N2XHnHnNRHnNZ n Jo  ?. $HzLHnN:HzDHnNRHz<HnNRHn n /HnN"Hn?<  /<   HnN"Hn?<  HnHn?< HnHn?<HnHn?<  0* H/ HnN"HnHn?< Hn?< ?< N:XHnHnNRHnNZ`  ?. $Hz NZ?. $Hn?< NjXHnNZ?. $Nj/. N2L N^ _O Nplop= net= ATOM :
 Models With  States Links   Total    Net              NVXH B/. N*$n $RBpBnz=| =| =| BnB.} n B0. S@=@x/p~@m  P=@v/p>@m  6=@t0.vN   
& 0.tN  
@AmB00 RntQ.RnvQ.| |0.j _D .|g $0.N  r A
0  =A~0.R@=@Jn~f  0.R@=@`  0.N   
& 0.~N  
@p Am00 J@o  40.N   
& 0.~N  
@p Am00 =@`  0.n ]D . g  l0.R@=@0.zR@=@z0.zN  d 
A~C~C  ""20.N   
& 0.~N  
@Cm 0 =| `  B.|` 0.n WD . J. WD4.n WD.|g d=nt n  R"n " n /HnpNHnb n /Hnp/. NXHnbHnl?< n Jo  HzHnlN:Hz~HnlNRHnl?. BgN*XHnlHnlNRHzXHnlNRHzPHnlNRHzJHnlNRHnl n /BgN2XHnlHnlNRHz"HnlNRHzHnlNRHzHnlNRHnl0* H/ HnbN"/. HnX?<HnbHnX?< HnXBg?< N:XHnlHnlNRHnlN: n   n "N-@p   dpo  ( n  r
N
"n " n   n "N-@p/.pHnbN"HnbNB0.xn WD HnlHnb?</. Hnb?<
_D/. HnX?<Hz HnX?< HnlHnN?<HnXHnN?< 
]Dg  ZHnlHnb?</. Hnb?<
d  
HnNYHnN-_Ap"n"Q0< "Q"n "l=n x| |0.zN  d 
A~A  C~""20.N   
& 0.~N  
@p Am00 =@t0.tnf  &J. WD 2.tn ]Dg  0.R@=@?.~Hj 
HnL/<   NjHnLNWD 2.tn]Dg  F0.N   
& 0.~N  
@0.tR@N   Cm0 0.tR@=@`  J0.N   
& 0.~N  
@AmB00 0.zS@=@zJnzo  
B.|`  | }J.|g .}-g /. N2-n "LN^ _O NSize     Model    Value ?ѷXe+    NVHn?<N/<   HnN"Hn?<  /<   HnN"HnHn?< HnHn?</p n  P>( @m  V=@0.N H2.H/HnN"Hn?<  HnHn?<Hn nHp ?<RnQ.Hz Hn?<B-|   =n 0.n _D J-WDg  Y?. ?.HnHnHn. HN    /./. N-_J-f  D?. ?./.HnHnHn?<Hn. HN    /././. NHnN0.R@=@` RHnNN^ _O N@#C@    NVH BnUHn?< NJg :?.NHz6Hn?< NjXHnNUHnN=_YB?<SHnHzN-_/.?< HnHn?< NjXHnN/.?< HnHn?< NjXHnN/.?< 
HnHn?< BgN*XHnN/.?< HnHn?< 
BgN*XHnNHzHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnzNrHnz?< NzHnzHnN/.HnzNrHnz?< NzHnz?< HnN`  >/.?< HnHnN/.HnzNrHnz?< NzHnz?< HnN/.HnzNrHnz?< NzHnz?< NzHnzHnN/.HmHnU/.Hn?.NJf R?.HnzNrHnz?< ?< NHnzNg *n WD ?< HnHnz/<   & NjHnzNWD  g  ,/.HnzNrHnz?< ?< NHnzBgHnNHnzNrHnz?< ?< NHnHnZ/<   NjHnZHnzNHn:NrHn:HnzNg  V/.HnzNrHnz?< ?< NHnzHnN/.HnzNrHnz?< NzHnz?< HnN`  */.HnzNrHnz?< ?< NHnzHnN?.HnzNrHnz?< NzHnz?< NzHnzNg `n f  UHn/.?< 
HnNXHnNB=_UHn/.?< HnNXHnNB=_Hn/.?< HnNXHnHn?< NB?< HnHnz/<   NjHnzNVD HN   @?< 
HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @?< HnHnz/<   NjHnzNVD HN   @/.Nn f ?< Hn?< NjXHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.N  HA/0  0.N  HA/0  ?.Nj?.Hn?< NjXHnNbJ.g  Y0.N   >A/0  N-_J.g  ?./.NJ.g  @Hn?< NjXHnN*?.?.?..HN    /.NN2/.N?.NjL N^NuPKB1 2 3 4,R-7 8,R-10 11,R22 23 24,C-17 18 -19 20,S6 9 12 14 16 21,T13 15 -25    (     NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NVBHnN"HnHn?<0. 
n =@Jn 
o  0. H/ HnN"0. 
H/ HnN"HnHn?< Hn?<  0. 
H/ HnN"HnHn?< HnHn?<HnHn?<  HnHn?<Jno  0. n 2.H/HnN"H/ HnN"HnHn?< Hn?<  0.H/ HnN"HnHn?< HnHn?<HnHn?<  HnHn?<Jn o  0. H/ HnN"0. H/ HnN"HnHn?< Hn?<  0. H/ HnN"HnHn?< HnHn?<HnHn?<  HnHn?</<   HnN"Hn?<  0. H/ HnN"HnHn?< HnHn?<HnHn?< A"n ""2N^ _PN    NVBHnN"HnHn?<0. 
n =@Jn o  0. 
H/ HnN"0. H/ HnN"HnHn?< Hn?<  0. H/ HnN"HnHn?< HnHn?<HnHn?<  HnHn?<Jno  0. 
H/ HnN"0.H/ HnN"HnHn?< Hn?<  0.H/ HnN"HnHn?< HnHn?<HnHn?<  HnHn?</<   HnN"Hn?<  0. 
H/ HnN"HnHn?< HnHn?<HnHn?< A"n ""2N^.NuNVH /. Hn/<   N$n HzPHn?<HnNrHn?< ?NHnHn/<   NHnNrHn?< ?NHnHn/<   N/p>@m  =@. HN   & 0. N   @0.N  @p A00 n g  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQp.HnHn/<   NHnHn/<   NBHnN"HnHn?<Bn| /p>* @m H=@?.HnHn/<   NjHnNg /p~ n @D/0* ~@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nf  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?< HnHn?<HnHn?< 
RD HnHn?<HnHn?<Hn?< HnHn?<
]D4.n^Dg  6B.-n=n.HN   @=n=n=nSnQ.S.Sd .RnQ.J.g /p>* @m 
=@?.HnHn/<   NjHnNg /p~ n @D/0* ~@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nf  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?<Hn?< HnHn?<
]D 2.n]Dg  6B.-n=n.HN   @=n=n=nSnQ\.S.Sd <.RnQ.J.f ?. .HN   HAHp  HnN:Hn?.BgN*XHnHnNRHzTHnNRHn?.BgN*XHnHnNRHz2HnNRHn?.BgN*XHnHnNRHzHnNRHn?.BgN*XHnHnNRHnNbHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   N/p>@m  =@.HN   & 0.N   @0.N  @p A00 ng  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQp.0.nWD .g ?. Hz NbHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NHnNrHnHn/<   NjHnHnNWD .g LN^ _O N?ѷXe+ {>}= : /---NVH /. Hn/<   N$n HzfHn?<HnNrHn?< ?NHnHn/<   NHnNrHn?< ?NHnHn/<   N0* S@H R@=@/p>@m  =@. HN   & 0. N   @0.N  @p A00 n g  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQp.HnHn/<   NHnHn/<   NBHnN"HnHn?<Bn| /p>* @m J=@?.HnHn/<   NjHnNg /p~  n @D/0* >.@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nm  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?< HnHn?<HnHn?< 
RD HnHn?<HnHn?<Hn?< HnHn?<
]D4.n^Dg  6B.-n=n.HN   @=n=n=nSnQ.S.Sd .RnQ.J.g /p>* @m =@?.HnHn/<   NjHnNg /p~ n @D/0* >.@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nm  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?<Hn?< HnHn?<
]D 2.n]Dg  6B.-n=n.HN   @=n=n=nSnQ\.S.Sd :.RnQ.J.f ?. .HN   HAHp  HnN:Hn?.BgN*XHnHnNRHzTHnNRHn?.BgN*XHnHnNRHz0HnNRHn?.BgN*XHnHnNRHzHnNRHn?.BgN*XHnHnNRHnNbHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   N/p>@m  =@.HN   & 0.N   @0.N  @p A00 nl  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQp.0.nWD .g ?. Hz NbHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NHnNrHnHn/<   NjHnHnNWD .g LN^ _O N?ѷXe+ >= : /---NVH /. Hn/<   N$n | Bn =RHzHn?<HnNrHn?< ?NHnHn/<   NHnNrHn?< ?NHnHn/<   N/p>@m  =@. HN   & 0. N   @0.N  @p A00 n l  PHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   N0.S@=@RnQf.HnHn/<   NHnHn/<   NBHnN"HnHn?<Bn| /p>* @m H=@?.HnHn/<   NjHnNg /p~  n @D/0* ~@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nm  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?< HnHn?<HnHn?< 
RD HnHn?<HnHn?<Hn?< HnHn?<
]D4.n^Dg  6B.-n=n.HN   @=n=n=nSnQ.S.Sd .RnQ.J.g ./p>* @m =@?.HnHn/<   NjHnNg /p~ n @D/0* ~@n =@DGBnBn/p>@m  =@?.HnHn/<   NjHnNg  ~.HN   & 0.N   @0.N  @p A00 nm  80.R@=@?.HnHn/<   NjHnNg  0.R@=@RnQ\.0.H/ HnN"HnHn?<Jno  <0.H/ HnN"HnHn?<HnHn?< HnHn?<HnHn?<HnHn?<Hn?< HnHn?<
]D 2.n]Dg  6B.-n=n.HN   @=n=n=nJ.f  ?. HzNZSnQH.S.Sd (.RnQ.J.f ?. HzHnN:.HN   HAHp  HnNRHn?.BgN*XHnHnNRHzzHnNRHn?.BgN*XHnHnNRHzVHnNRHn?.BgN*XHnHnNRHz0HnNRHn?.BgN*XHnHnNRHz
HnNRHnHn??.?.?.NXHn?< ?< N:XHnHnNRHnNZHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   N/p>@m  =@.HN   & 0.N   @0.N  @p A00 nl  FHnNrHn?.NzHnHn/<   NjHnHnNHnHn/<   NRnQp.J.g  B.=n 0.nWD .g J?. NjHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NHnHn/<   NjHnHn/<   NjHnHnNHnHn/<   NLN^ _O N?ѷXe+* >= :/ NVH0BnUHn?< NJg 	?.NHz	|Hn?< NXHnNUHnN=_YB?<THnHz	JN-_/.?< HnHn?< NXHnN/.?< HnHn?< NXHnN/.?< 
HnHn0.N   >A p   P?( BgN*XHnN/.?< HnHn?< 
BgN*XHnNHzHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnjNrHnj?< NzHnjHnN/.HnjNrHnj?< NzHnj?< HnN`  >/.?< HnHnN/.HnjNrHnj?< NzHnj?< HnN/.HnjNrHnj?< NzHnj?< NzHnjHnN/.HmHnU/.Hn?.NJf R?.HnjNrHnj?< ?< NHnjNg *n WD ?< HnHnj/<   & NjHnjNWD  g  ,/.HnjNrHnj?< ?< NHnjBgHnNHnjNrHnj?< ?< NHnHnJ/<   NjHnJHnjNHn*NrHn*HnjNg  V/.HnjNrHnj?< ?< NHnjHnN/.HnjNrHnj?< NzHnj?< HnN`  */.HnjNrHnj?< ?< NHnjHnNn WD n WDg vn f  UHn/.?< 
HnNXHnNB=_UHn/.?< HnNXHnNB=_Hn/.?< HnNXHnHn?< NB?< HnHnj/<   NjHnjNVD HN   @?< 
HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @?< HnHnj/<   NjHnjNVD HN   @/.Nn f  m/Q?< Hn?< NXHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.N  HA/0  0.N  HA/0  ?.Nj?.Hn?< NXHnNbHmQJ.g 0.N   >EE  /* *N* j *-P&n0+ S@H R@=@/p~  n f@D/0+ >.@n D=@DGHnjNrHnj?< ?+ NHnjHn/<   NHnjNrHnj?.NzHnHnJ/<   NjHnjHnJNHnJHn/<   NBn/p>@m  ^=@.HN   & 0.N   @0.N  @p A00 nm  0.R@=@RnQ.?..HN   HAHp  HnN:Hn?.BgN*XHnHnNRHzHnNRHn?.BgN*XHnHnNRHzpHnNRHn?.BgN*XHnHnNRHzJHnNRHnHn??.NXHn?< ?< N:XHnHnNRHnNbU?./..HN    ?.?.HnN=_Jno  FHnjNrHnj?.NzHnHnJ/<   NjHnjHnJNHnJHn/<   NJnf SnQ.S.Sd .?.Nj/* *N2LN^NuPKB1 2 3 4,R-7 8,R-10 11,R22 23 24,C-17 18 -19 20,S6 9 12 14 16 21,T13 15 -25  >= :        NV Hn ?<?. N Hn Hn NXHn /. 
?< NBN^ _TN    NV /. Hn ?< NBHn Hn N
XHn Hn ?< NBHz Hn ?< NBHn Hn Hz NXHn Hn ?< NBHn Hn N
XHn Hn ?< NBHz Hn NJf  Hn Hn ?< NB`  6Hn Hn N:Hz RHn NRHn Hn NRHn Hn ?< NBHz ,Hn NJf ZHn /. ?< NBN^.Nu     _  NVH00. N   >EE  /* *N* j *-P/* :N* j :-P$n&n?. 
NjJ+-g   Hz\Hn?< 
NXHnN`  Hz@Hn?< NXHnNJ+-g   Hz Hn?< NXHnN`  HzHzNHzHn0+- H/ HnN"/<   dHnN"HnHn?< Hn?< ?< N:XHnN?. 
Hn?< N
XHnNb?. 
Nj?. N=| /p>* @m .=@/p>* @m =@/p ~ m @/p ~ m @?..HN    & .HN    x@0.N  H@A+Hp0 Hn/<   NjHnNg p?. 
HzHnN:Hm"HnNRHzHnNRHn?.BgN*XHnHnNRHnNZ?. 
Hm"HnN:HzHnNRHm"HnNRHzxHnNRHm"HnNRHn.HN   & 0.N   4@AHp0 N
XHnHnNRHz"HnNRHnNZ?. 
Hm"HnN:HzHnNRHm"HnNRHn.HN   & 0.N   4@AHp0 N
XHnHnNRHz HnNRHnNb0.R@=@R.Sd ,.R.Sd .RnQ.RnQ.?. 
Nj0. N   >EE  /* *N2/* :N2LN^.Nu1122  3(RuleR(Lhs (Yes )) (Hypo)) NVH Hn?<N0. N   >EE  /* *N* j * P"n0< "Q2$n=j 5|  /.?.N?. 
Nj?. 
Hz HnN:Hm"HnNRHzHnNRHzHnNRHnNb?. 
Nj/p>* @m  =@/p ~ m  @?. 
HzHnN:Hm"HnNRHn.HN   & 0.N   4@AHp0 N
XHnHnNRHm"HnNRHzLHnNRHm"HnNRHz:HnNRHz8HnNRHnNbR.Sd T.RnQ:.?. 
Nj?. 
Nj?. 
HzHnN:Hm"HnNRHnHjVN
XHnHnNRHnNb?. 
Hm"HnN:HzHnNRHnNb/p>* @m  =@/p ~ m  x@?. 
Hm"HnN:Hm"HnNRHn.HN   & 0.N   4@AHp0 N
XHnHnNRHnNbR.Sd .RnQv.?. 
Hm"HnN:HzHnNRHnNb?. 
HzNb?. 
Nj?. 
Nj/p>@m N=@?. 
HzHnN:Hm"HnNRHn0.N   4AHp  N
XHnHnNRHm"HnNRHzxHnNRHm"HnNRHnHjVN
XHnHnNRHzPHnNRHnNb/p>* @m =@/p ~ m t@.HN   & 0.N   @0.N  @p A00 @ g  
@ f  HzHn?< NB`  @ f  HzHn?< NB?. 
HzHnN:Hm"HnNRHn0.N   4AHp  N
XHnHnNRHzlHnNRHn.HN   & 0.N   4@AHp0 N
XHnHnNRHnNZ?. 
Hm"HnN:HzHnNRHm"HnNRHnHnNRHz HnNRHnNbR.Sd .RnQz.?. 
NjRnQ.?. 
Nj0. N   >EE  /* *N2HnNLN^.Nu(Version 011)	(Property(TypeBoolean) )(Class (Properties))(Object(Classes )) FalseTrue (Slot.(InitVal )) NVH BnUHn?< NJg ?.NHzHn?< N
XHnNUHnN=_YB?<UHnHzNN-_/.?< HnHn?< N
XHnN/.?< HnHn?< N
XHnN/.HnNrHn?< ?< NHn?< ?< NHnHnNHzHnNJWD HnHn?< & NXHnNXHnHnNJWD  g  R/.HnNrHn?< NzHnHnN/.HnNrHn?< NzHn?< HnN`  >/.?< HnHnN/.HnNrHn?< NzHn?< HnN/.HnNrHn?< NzHn?< NzHnHnN/.HmHnU/.Hn?.NJf R?.HnNrHn?< ?< NHnNg *n WD ?< HnHn/<   & NjHnNWD  g  ,/.HnNrHn?< ?< NHnBgHnNHnNrHn?< ?< NHnHnh/<   NjHnhHnNHnHNrHnHHnNg  V/.HnNrHn?< ?< NHnHnN/.HnNrHn?< NzHn?< HnN`  */.HnNrHn?< ?< NHnHnNn WD n WDg vn f  Hn/.?< HnNXHnHn?< NB?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @/.Nn f *?< Hn?< N
XHnNbJ.g  J.g  8=| HnHn?< NXHnNXHnHn?< NB`  <J.g  4U< NJJg  $=m`HnHn?< NB?-`HnN0.N  HA/0  0.N  HA/0  ?.Nj?.Hn?< N
XHnNbJ.g  6?.?.N
0.N   >AJ  g  ?.?.N
L N^NuPKB1 2 3 4,R-7 8,R-10 11,R22 23 24,C-17 18 -19 20,S6 9 12 14 16 21,T13 15 -25    (`
  "    NV  N^NuNVH  HzHn =| 	HnNrHnHn/<   NEAC"2AC "2AC "2HnNrHn?< NzHnHj /<   N5|  5|  5| d |  B* B* B* B* B* EAC"2AC "2AC "2AC "25| 2 5| 2 5| d B* |   B* !|  "|  #|  $|  %|  &B* B* 'B* (B* )EAC"2AC "2AC "2AC "2|  B* E<B*  5|  B* B* |  |  B* B* 	B* 
|  L N^NuTimes    NV-|   pUHz ?-HnNz0J@f  UU?.HnNNRJg   .m  UU?.HnHnNNRJg  nn f  `ACp"Q2ACp	"Q2ACp"Q2AC<"""UU?.NNRJg  `  N
*N^NuKSS0.Par     NV=| ACp"Q2ACp	"Q2ACp"Q2A<C"""N^NuNVH  UHnN=_Jno  0.N  HE$r   j  P/( >N* j  P h >-P j  P0( <H-@HnHnNXHnHn?< NB j  P/( >N2?.HnHnNXHnNbL N^NuNVH 0$n 
&j &S0. @ f  Jk f  HzHn/. 
?< Hk NXHnN?< Hn?< N

XHnNb?* Hn?< N

XHnN/. 
?< Hk Hn?< N

XHnN/. 
HnNrHn?< NzHn?< NzHnHk N/. 
HnNrHn?< NzHn?< ?< NHnHk N7|  `  N`  @ f  `  @ f  ?< N
:`  @ f  BgN
:`  @ f  ?< N
:`  @ f  
Nb`  @ f  
N	*`  @ 	f  
N`  @ 
f  
N`  v@ f  
N`  f@ f  
Nr`  V@ 
f  
N`  F@ f  
Nb`  6@ f  
N`  &@f  J-g  ?* N	B-/. 
N	L N^ _\N1    NVHnt/-.m< < NHz ~Hn ?.?< 	/.sHn?< Hn?.?< N*XHn?.?< N*XHnHnNRHn?.?< N*XHnHnNRHnNbN^NuMonaco     NV/p >< @m  =@n g  |?.HnHz |HnNJg  b?< HnNZ/p>< @m  >=@U?.?.Jg   ?< Hn?.?< N*XHnNZRnQ.?< NjRnQv.N^Nu  NVH Hz Hm?< NB=| Hn?<?.N Hz HnNJg  HmHnN:HnHn?< ?< NZHnHnNRHnHm?< NBp -N   4HnHn?< r .SA?& NZHnA<Hp0 ?< 2NB0.R@=@Hz .HnNJf JL N^Nu@123456789aAeEinNpPrR    NVH 0Hnt/-.m< < NHz Hn ?.쨇?< 	HnHnHnN
0. N  HE$r  /p>. @m  :=@0.N  dH&n GG  ??+ ?+ ?+ RnQ./.s?. /-x/-tNL N^ _PNMonaco NVH UHnN=_Jno VUNBJg J0.N  HE$r  ?* HnNBnHnHnNXHnHn?< NBHz
HnNJWD HN   @J.f  0.R@=@0.N  dHUHnHnHz & NXHnNBC30 0.N  dHUHnHnHz & NXHnNBC30 0.N  dHUHnHnHz `& NXHnNBC30 0.N  dHUHn& NBC30 J.g ?-`?./N
ZLN^Nu     NVH  UNBJg 0-`N  HE$r  Hnt/-.m< < NHz Hnީ ?.ި?< 	HnHnHnN
BnBn/p~&@m  =@HnBg?.N Hn0. Z@? 0. Z@? 0. Z@@ ? 0. Z@@ ? HnHnਥ?<f`?< {BgBgBg?< ?< HnN0.R@=@n 	o  Bn0.R@=@RnQd./.s?-`/-x/-tNL N^NuMonaco     NV/. Hn ?< NBY/<PICTHn -_Jf  PBgU/<PICT=_n o YHn ?-N-_Jg  /./<PICT?.Hn `  <U/.0mg  $Bg/././<PICT?.Hn `  /.N^ _PNNVH /. Hn ?< NBHn Hn Jn^D U?.?. & g  Y/<FOND?.-_Jg  <U/.0mg  $Bg/././<FOND?.Hn `  /.0.Hn =@Y/<FONT?.-_Jg  <U/.0mg  $Bg/././<FONT?.Hz `  /.L N^ _O 
N      NV  ?-ҩHz 4/N
rHz 2/N
rHz 0/N
rHz .?< /N
z?-ҩN^NuKSS0-1 KSS0-2 KSS0-3 Venice     NVHnHnN
/.HnNrHn?< (?< ,NHnHnNUHnHn/. NHnNrHn?< NzHn?< NzHnNg /.NN^.NuNV~H 8Y$-_$n&n/+ N*(k (T=l J=l PHl LHn/<   NHnHnN
/.Hn~NrHn~?< (?< ,NHn~HnNUHnHnHnNHn~NrHn~?< NzHn~?< NzHn~Ng /.N5n D5n JHnHj F/<   NHn0.nn9@ 9n 9n J9n PHnHl L/<   N nHh (?+  nHh NR/+ ة/+ N2L N^NuNVH  n  
o  "0. 
U@? . HN    N"`  Y$-_Jg  $nJ g  6 j  PJh Hl  "j "Q3|  H`  "j "Q3| H/* ة`  ?* NJ* g  :J g  0* @ 5@ /* WJ g  0* @ 5@ /* ܩW`  6J g  0* @ 5@ /* XJ g  0* @ 5@ /* ܩXJ* WD HN   @ ?* Nj nHh (L N^.NuNVH 0$n J g  "/* N*&j &S0@ f  
?+ N
2/* N2?* HnNrHn?< ?< NHnNg  ?* < N"`  
?* NL N^.Nu    NV  Y$N
N^NuNV  H   n 
Jh lm  h$n 
J g  \/* N* j  P0@ f  /. 
?. N
`  @ f  /. 
?. N
:/* N2 j  PJ( g  
/. 
N
L N^ _\NNVH 0Y$-_Jg  *$n&nj  lf  /.?<N
-j ` B-L N^Nu    NV ?< Hn /<  ?< N2XHz Hn NRHn Nb?< Hn /<  #?< N2XHz Hn NRHn Nb?< Hn /<  N?< N2XHz Hn NRHn Nb?< Hn /<  ?< N2XHz lHn NRHn Nb?< Hn /<  -?< N2XHz RHn NRHn NbN^Nu Grid Record 
 Match Record
 FOCUS Record PRINGRID Record  ENTAIL Record     NV m/QSY?<B/<|-_/.?< HnHnHn쩍/.Hn?< NXHn쩏/.?< HnHnHn쩍/.Hn?< NXHn쩏/.?< HnHnHn쩍/.Hn?< NXHn쩏/.?< 	HnHnHn쩍/.Hn?< NXHn쩏Hz HnNBgN2XHnN/.?< 
HnHnHn쩍/.Hn?< NXHn쩏Hz HnYNBgN2XHnN/.?< HnHnHn쩍/.Hn?< NXHn쩏Hz jHnYN BgN2XHnN/.?< HnHnHn쩍/.Hn?< NXHn쩏BHn/.NHmQN^Nu111    NVYB?<HnHzjN-_/.?< 	HnHn?< 
NXHnN/.HmHnU/.Hn?.NJg n f  Hn/.?< 	HnNXHnHn?< NBHz HnNJf   Hn?< 
NXHnHn?< NB?< HnHn/<   NjHnNVD HN   @?< HnHn/<   NjHnNVD HN   @/.Nn f  BJ.g  UNBJg  `  U.HN    NJJg  ?-`HnNN^NuB1 2,R-5 6 7,S4 8,T-9      NV n C""""J g  . H@=@ . =@0.@f   n f  
N
`  
?.Nb` @f  0.@ f  
N
`  @ f  
N`  @ f  
N
`  x@ f  BgN`  f@ f  
N"`  V@ f  B'N*`  D@ f  < N*`  0@ 	f  
N`   @ 
f  
N`  @ f  | -` @f  0.@ f  UBgJf  Nr`  @ f  U?< Jf  Nz`  h@ f  U?< Jf  N`  J@ f  U?< Jf  N`  ,@ f  U?< Jf  N`  @ f  N
` B@f  @0.@ f  BgN
:`  &@ f  ?< N
:`  @ f  
?< N
:` @f  0.@ f  
Nb`  ~@ f  
N	*`  n@ f  
N`  ^@ f  
N`  N@ f  
N`  >@ f  
Nr`  .@ 
f  
N`  @ f  
Nb`  @ 
f  N` `@f  8?.Y0.H/ /<    . JVD HN    N
` "@f 0.@ f  
N
` @ f  
N
R`  @ f  
N
B`  @ f  
N
b`  @ f  
N
2`  @ f  
N
"`  @ f  
N
"`  @ f  
N
"`  @ 	f  
N
"`  @ 
f  ~?< Y?< HnNBgN2XHz lHnNRHnYNBgN2XHnHnNRHz DHnNRHnYN BgN2XHnHnNRHnNBNBg8N^ _PN  NVH   n C""""Y$ . g  /. U?./.N =_` 4$n -nHnqU/.Hj Jg  ZJ g  B/.Y0.H/ /<    . J^D HN    /* ة?* Nj`  ?* HnN
"`  U/./. Hnl=_0.@ f  U/./.Hmh=_`  z@ f  U/./.Hmh=_`  Z@ f  /.?.< N`  >@ f  /.?.B'N`  $@ f  U/./.Bh=_?* N?* N"L N^ _PN    NV  Y$ . g  /. `  U/. /. Jg  
/. N
N^ _PNNVH 0Y/. /. Hm^+-_Jg @$n J g  8p  j  P( @ WD HN   @J.g  0* @ 5@ J g  8p  j  P( @ WD HN   @J.g  0* @ 5@ A C""0.@ =@Hn(A C""0.@ =@Hn( n A C""/. ?.?.< &n 0* k n5@ 0* k n5@ J g  fJ VD * g  =|`  =| /* X/* 0* @ ? 0* S@? Y/* ?< 0* j n? \J.g  /* WJ g  fJ VD * g  =|`  =| /* ܩX/* 0* S@? 0* @ ? Y/* 0* j n? ?< \J.g  /* ܩWA C""0.@ =@0.@ =@Hn(?* Hj NRJ VD * g   n Hh (J g  /. ?<N
L N^ _PN    NV n C""""-nU/.Hn,=_0.@ f  Y/.=HnN
`  @ f  /.HnN
`  z@ f  /./.N
`  b@ f  . nJ( g  /./.N
`  /.HnN
`  .@ f  /./.Hmf%`  @ f  Hn/.쩳N^.NuNVH  Y n /( /<    . N   =@Y n 0( H/ /<    . Jg  ,HmQY0.N   ? >/. N
 n BP`  xY$-_Jg  h$nJ f  @J g  .0.N   ? /* ة/* ب|  ?* Nj`  ?< `  n 
f  /.?< N
 n BPL N^.NuNVH   n C""""-n$n/.s/.N
0.d  @J g  
/* Bg]J g  
/* Bg]J g  /* ةNz?* Nj`  T/-2sJ g  /* ?< ]J g  /* ?< ]J g  /* ةNY$-_Jf  BgNjL N^.Nu    NVBnBnBn=| =| =|HnHnNRHnNB .]D HN   @ N^.NuNVH NNjN	N
jN
*/p~@m  H=@0.N  HY?.& C#0 0.N  HA/0  N*RnQ.Y?<詹+_/-N*Y?<驹+_/-N*Y?<꩹+_/-N*Y?<멹+_/-N* m/QY?<詿+_@Y?<驿+_DY?<ꩿ+_HY?<멿+_LY?<쩿+_PY?<+_TY?<+_X/-@/<DRVRM/p~@m  (=@0.N  HA</0  Bg5RnQ.7/p~@m  <=@0.N   >EE  BRB *B :B 6B .B 2RnQ./-2sB-qBmB--N 2UN 0J@WD HN   @Y/<   xN+_/-N :J-f  /-D?< 	:/-D?< 
:U/N
Jg  HnBgBgBgBgUHmFHnBgB'< B'B'< B'NrJg  ?-`HnHn?< NXHnNXHnNUHm6HnBg< < B'< < < NrJg  *?-`HnHn?< NXHnNXHnNN2HmQ+|| N
J?< Hn?< NXHnNbN
*LN^Nu    NV N?< Hn ?< 	NXHn NbN^NuNVH  0. N  HE$r  /* N*Y j //<  .-_-nY/* N" .П-@/* Hn ~-| .l  4U/.  nHh 
Jg  -n n0( HЮ-@` -mJm   -Ю-@ .g  HnN20. N  HA/0  s?. N:?< 
Jm  Jmm  /.?-NJm  Rp  n( ;@/.Y0-*H/ /<    . J^D HN    N
 .+@`  
+|?. NBHnN:/* N2L N^ _\NNVH  Y$-_Jg  x nJh lo  l$nHnrJ g  /* J g  0/* ةU/.Hj Jg   m/Q`  HmQ`  J g  J* f  ?* /.NL N^Nu    NV n C""""0.@ f  HnN
`  N@ f  HnN
`  :@ f  HnN
`  &@ f  HnN`  @ f  
HnN
UHnJg  $UHnHnHnꩀJg  /.?.N
| N^.Nu       2 Z    CDKS   zBNDL   FREF  STR#  MENU jDLOG DITL PAT#  CURS ICON  ICN# PICT 
FOND  .FONT  :CODE F          L       L   L    M   W    N   b       m            X                              +      	^                                          J      w      &                        v                                    d      9    L      M      N  "    O  $    P  %    p  &    Q  '    R  *=    S  +    T  -    U  /      1      2                                    }      R    L      M        N  "    O  $    P  %    p  &    Q  '    R  *V    S  +    T  -    U  /      1      3      4      4      5      5g      5    L  5    L  6{    M  7    N  8        9       A       J        U      U        c 2  r" B    :    .  & *  } &   "     cf  	   
    9   \F 
 
 f    fKSS0-1KSS0-2KSS0-3Venice.pn 0
.ls1
.EQ
delim $$
.EN
.ev1
.ps-2
.vs-2
.ev
\&
.sp 5
.ps+4
.ce
ARITHMETIC CODING FOR DATA COMPRESSION
.ps-4
.sp4
.ce
Ian H. Witten, Radford M. Neal, and John G. Cleary
.sp2
.ce4
Department of Computer Science
The University of Calgary
2500 University Drive NW
Calgary, Canada T2N 1N4
.sp2
.ce
August, 1986, revised January 1987
.sp 8
.in+1i
.ll-1i
The state of the art in data compression is arithmetic coding, not
the better-known Huffman method.
Arithmetic coding gives greater compression, is faster for adaptive models,
and clearly separates the model from the channel encoding.
This paper presents a practical implementation of the technique.
.sp 3
.in +0.5i
.ti -0.5i
\fICR Categories and subject descriptors:\fR
.br
E.4 [DATA] Coding and Information Theory \(em Data Compaction and Compression
.br
H.1.1 [Models and Principles] Systems and Information Theory \(em Information Theory
.sp
.ti -0.5i
\fIGeneral terms:\fR  algorithms, performance
.sp
.ti -0.5i
\fIAdditional key words and phrases:\fR  arithmetic coding, Huffman coding, adaptive modeling
.ll+1i
.in 0
.bp
.sh "Introduction"
.pp
Arithmetic coding is superior in most respects to the better-known Huffman
(1952) method.
.[
Huffman 1952 method construction minimum-redundancy codes
.]
It represents information at least as compactly, sometimes considerably more
so.
Its performance is optimal without the need for blocking of input data.
It encourages a clear separation between the model for representing data and
the encoding of information with respect to that model.
It accommodates adaptive models easily.
It is computationally efficient.
Yet many authors and practitioners seem unaware of the technique.
Indeed there is a widespread belief that Huffman coding cannot be improved
upon.
.pp
This paper aims to rectify the situation by presenting an accessible
implementation of arithmetic coding, and detailing its performance
characteristics.
The next section briefly reviews basic concepts of data compression and
introduces the model-based approach which underlies most modern techniques.
We then outline the idea of arithmetic coding using a simple example.
Following that programs are presented for both encoding and decoding, in which
the model occupies a separate module so that different ones can easily be
used.
Next we discuss the construction of fixed and adaptive models.
The subsequent section details the compression efficiency and execution time
of the programs, including the effect of different arithmetic word lengths on
compression efficiency.
Finally, we outline a few applications where arithmetic coding is appropriate.
.sh "Data compression"
.pp
To many, data compression conjures up an assortment of \fIad hoc\fR
techniques such as converting spaces in text to tabs, creating special codes
for common words, or run-length coding of picture data (eg see Held, 1984).
.[
Held 1984 data compression techniques applications
.]
This contrasts with the more modern model-based paradigm for
coding, where from an \fIinput string\fR of symbols and a \fImodel\fR, an
\fIencoded string\fR is produced which is (usually) a compressed version of
the input.
The decoder, which must have access to the same model,
regenerates the exact input string from the encoded string.
Input symbols are drawn from some well-defined set such as the ASCII or
binary alphabets;
the encoded string is a plain sequence of bits.
The model is a way of calculating, in any given context, the distribution of
probabilities for the next input symbol.
It must be possible for the decoder to produce exactly the same probability
distribution in the same context.
Compression is achieved by transmitting the more probable symbols in fewer
bits than the less probable ones.
.pp
For example, the model may assign a predetermined probability to each symbol
in the ASCII alphabet.
No context is involved.
These probabilities may be determined by counting frequencies in
representative samples of text to be transmitted.
Such a \fIfixed\fR model is communicated in advance to both encoder and
decoder, after which it is used for many messages.
.pp
Alternatively, the probabilities the model assigns may change as each symbol
is transmitted, based on the symbol frequencies seen \fIso far\fR in this
message.
This is an \fIadaptive\fR model.
There is no need for a representative sample of text, because each message
is treated as an independent unit, starting from scratch.
The encoder's model changes with each symbol transmitted, and the decoder's
changes with each symbol received, in sympathy.
.pp
More complex models can provide more accurate probabilistic predictions and
hence achieve greater compression.
For example, several characters of previous context could condition the
next-symbol probability.
Such methods have enabled mixed-case English text to be encoded in around
2.2\ bit/char with two quite different kinds of model.
(Cleary & Witten, 1984b; Cormack & Horspool, 1985).
.[
Cleary Witten 1984 data compression
%D 1984b
.]
.[
Cormack Horspool 1985 dynamic Markov
%O April
.]
Techniques which do not separate modeling from coding so distinctly, like
that of Ziv & Lempel (1978), do not seem to show such great potential for
compression, although they may be appropriate when the aim is raw speed rather
than compression performance (Welch, 1984).
.[
Ziv Lempel 1978 compression of individual sequences
.]
.[
Welch 1984 data compression
.]
.pp
The effectiveness of any model can be measured by the \fIentropy\fR of the
message with respect to it, usually expressed in bits/symbol.
Shannon's fundamental theorem of coding states that given messages randomly
generated from a model, it is impossible to encode them into less bits
(on average) than the entropy of that model (Shannon & Weaver, 1949).
.[
Shannon Weaver 1949
.]
.pp
A message can be coded with respect to a model using either Huffman or
arithmetic coding.
The former method is frequently advocated as the best possible technique for
reducing the encoded data rate.
But it is not.
Given that each symbol in the alphabet must translate into an integral number
of bits in the encoding, Huffman coding indeed achieves ``minimum
redundancy''.
In other words, it performs optimally if all symbol probabilities are
integral powers of 1/2.
But this is not normally the case in practice;
indeed, Huffman coding can take up to one extra bit per symbol.
The worst case is realized by a source in which one symbol has probability
approaching unity.
Symbols emanating from such a source convey negligible information on average,
but require at least one bit to transmit (Gallagher, 1978).
.[
Gallagher 1978 variations on a theme by Huffman
.]
Arithmetic coding dispenses with the restriction that each symbol translates
into an integral number of bits, thereby coding more efficiently.
It actually achieves the theoretical entropy bound to compression efficiency
for any source, including the one just mentioned.
.pp
In general, sophisticated models expose the deficiencies of Huffman coding
more starkly than simple ones.
This is because they more often predict symbols with probabilities close to
one, the worst case for Huffman coding.
For example, the techniques mentioned above which code English text in
2.2\ bit/char both use arithmetic coding as the final step, and performance
would be impacted severely if Huffman coding were substituted.
Nevertheless, since our topic is coding and not modeling, the illustrations in
this paper all employ simple models.
Even then, as we shall see, Huffman coding is inferior to arithmetic coding.
.pp
The basic concept of arithmetic coding can be traced back to Elias in the
early 1960s (see Abramson, 1963, pp 61-62).
.[
Abramson 1963
.]
Practical techniques were first introduced by Rissanen (1976) and
Pasco (1976), and developed further in Rissanen (1979).
.[
Rissanen 1976 Generalized Kraft Inequality
.]
.[
Pasco 1976
.]
.[
Rissanen 1979 number representations
.]
.[
Langdon 1981 tutorial arithmetic coding
.]
Details of the implementation presented here have not appeared in the
literature before; Rubin (1979) is closest to our approach.
.[
Rubin 1979 arithmetic stream coding
.]
The reader interested in the broader class of arithmetic codes is referred
to Rissanen & Langdon (1979);
.[
Rissanen Langdon 1979 Arithmetic coding
.]
a tutorial is available in Langdon (1981).
.[
Langdon 1981 tutorial arithmetic coding
.]
Despite these publications, the method is not widely known.
A number of recent books and papers on data compression mention it only in
passing, or not at all.
.sh "The idea of arithmetic coding"
.pp
In arithmetic coding a message is represented by an
interval of real numbers between 0 and 1.
As the message becomes longer, the interval needed to represent it becomes
smaller, and the number of bits needed to specify that interval grows.
Successive symbols of the message reduce the size of the
interval in accordance with the symbol probabilities generated by the
model.
The more likely symbols reduce the range by less than the unlikely symbols,
and hence add fewer bits to the message.
.pp
Before anything is transmitted, the range for the message is the entire
interval [0,\ 1)\(dg.
.FN
\(dg [0,\ 1) denotes the half-open interval 0\(<=\fIx\fR<1.
.EF
As each symbol is processed, the range is narrowed to that portion of it
allocated to the symbol.
For example, suppose the alphabet is {\fIa,\ e,\ i,\ o,\ u,\ !\fR}, and a
fixed model is used with probabilities shown in Table\ 1.
Imagine transmitting the message \fIeaii!\fR.
Initially, both encoder and decoder know that the range is [0,\ 1).
After seeing the first symbol, \fIe\fR, the encoder narrows it to
[0.2,\ 0.5), the range the model allocates to this symbol.
The second symbol, \fIa\fR, will narrow this new range to the first 1/5 of it,
since \fIa\fR has been allocated [0,\ 0.2).
This produces [0.2,\ 0.26) since the previous range was 0.3 units long and
1/5 of that is 0.06.
The next symbol, \fIi\fR, is allocated [0.5,\ 0.6), which when applied to
[0.2,\ 0.26) gives the smaller range [0.23,\ 0.236).
Proceeding in this way, the encoded message builds up as follows:
.LB
.nf
.ta \w'after seeing   'u +0.5i +\w'[0.23354, 'u
initially		[0,	1)
after seeing	\fIe\fR	[0.2,	0.5)
	\fIa\fR	[0.2,	0.26)
	\fIi\fR	[0.23,	0.236)
	\fIi\fR	[0.233,	0.2336)
	\fI!\fR	[0.23354,	0.2336)
.fi
.LE
Figure\ 1 shows another representation of the encoding process.
The vertical bars with ticks represent the symbol probabilities stipulated
by the model.
After the first symbol, \fIe\fR, has been processed, the model is scaled
into the range [0.2,\ 0.5), as shown in part (a).
The second symbol, \fIa\fR, scales it again into the range [0.2,\ 0.26).
But the picture cannot be continued in this way without a magnifying glass!
Consequently Figure\ 1(b) shows the ranges expanded to full height at every
stage, and marked with a scale which gives the endpoints as numbers.
.pp
Suppose all the decoder knows about the message is the final range,
[0.23354,\ 0.2336).
It can immediately deduce that the first character was \fIe\fR, since the
range lies entirely within the space the model of Table\ 1 allocates for
\fIe\fR.
Now it can simulate the operation of the \fIen\fR\^coder:
.LB
.nf
.ta \w'after seeing   'u +0.5i +\w'[0.2, 'u
initially		[0,	1)
after seeing	\fIe\fR	[0.2,	0.5)
.fi
.LE
This makes it clear that the second character of the message is \fIa\fR,
since this will produce the range
.LB
.nf
.ta \w'after seeing   'u +0.5i +\w'[0.2, 'u
after seeing	\fIa\fR	[0.2,	0.26)
.fi
.LE
which entirely encloses the given range [0.23354,\ 0.2336).
Proceeding like this, the decoder can identify the whole message.
.pp
It is not really necessary for the decoder to know both ends of the range
produced by the encoder.
Instead, a single number within the range \(em for example, 0.23355 \(em will
suffice.
(Other numbers, like 0.23354, 0.23357, or even 0.23354321, would do just as
well.)  \c
However, the decoder will face the problem of detecting the end of the
message, to determine when to stop decoding.
After all, the single number 0.0 could represent any of \fIa\fR, \fIaa\fR,
\fIaaa\fR, \fIaaaa\fR, ...\ .
To resolve the ambiguity we ensure that each message ends with a special
EOF symbol known to both encoder and decoder.
For the alphabet of Table\ 1, \fI!\fR will be used to terminate messages,
and only to terminate messages.
When the decoder sees this symbol it stops decoding.
.pp
Relative to the fixed model of Table\ 1, the entropy of the 5-symbol message
\fIeaii!\fR is
.LB
$- ~ log ~ 0.3 ~ - ~ log ~ 0.2 ~ - ~ log ~ 0.1 ~ - ~ log ~ 0.1 ~ - ~ log ~ 0.1 ~~=~~ - ~ log ~ 0.00006 ~~ approx ~~ 4.22$
.LE
(using base 10, since the above encoding was performed in decimal).
This explains why it takes 5\ decimal digits to encode the message.
In fact, the size of the final range is $0.2336 ~-~ 0.23354 ~~=~~ 0.00006$,
and the entropy is the negative logarithm of this figure.
Of course, we normally work in binary, transmitting binary digits and
measuring entropy in bits.
.pp
Five decimal digits seems a lot to encode a message comprising four vowels!
It is perhaps unfortunate that our example ended up by expanding rather than
compressing.
Needless to say, however, different models will give different entropies.
The best single-character model of the message \fIeaii!\fR is the set of
symbol frequencies
{\fIe\fR\ (0.2),  \fIa\fR\ (0.2),  \fIi\fR\ (0.4),  \fI!\fR\ (0.2)},
which gives an entropy for \fIeaii!\fR of 2.89\ decimal digits.
Using this model the encoding would be only 3\ digits long.
Moreover, as noted earlier more sophisticated models give much better
performance in general.
.sh "A program for arithmetic coding"
.pp
Figure\ 2 shows a pseudo-code fragment which summarizes the encoding and
decoding procedures developed in the last section.
Symbols are numbered 1, 2, 3, ...
The frequency range for the $i$th symbol is from $cum_freq[i]$ to
$cum_freq[i-1]$.
$cum_freq[i]$ increases as $i$ decreases, and $cum_freq[0] = 1$.
(The reason for this ``backwards'' convention is that later, $cum_freq[0]$
will contain a normalizing factor, and it will be convenient to have it
begin the array.)  \c
The ``current interval'' is [$low$,\ $high$); and for both encoding and
decoding this should be initialized to [0,\ 1).
.pp
Unfortunately, Figure\ 2 is overly simplistic.
In practice, there are several factors which complicate both encoding and
decoding.
.LB
.NP
Incremental transmission and reception.
.br
The encode algorithm as described does not transmit anything until the entire
message has been encoded; neither does the decode algorithm begin decoding
until it has received the complete transmission.
In most applications, an incremental mode of operation is necessary.
.sp
.NP
The desire to use integer arithmetic.
.br
The precision required to represent the [$low$, $high$) interval grows with
the length of the message.
Incremental operation will help overcome this, but the potential for overflow
and underflow must still be examined carefully.
.sp
.NP
Representing the model so that it can be consulted efficiently.
.br
The representation used for the model should minimize the time required for
the decode algorithm to identify the next symbol.
Moreover, an adaptive model should be organized to minimize the
time-consuming task of maintaining cumulative frequencies.
.LE
.pp
Figure\ 3 shows working code, in C, for arithmetic encoding and decoding.
It is considerably more detailed than the bare-bones sketch of Figure\ 2!
Implementations of two different models are given in Figure\ 4;
the Figure\ 3 code can use either one.
.pp
The remainder of this section examines the code of Figure\ 3 more closely,
including a proof that decoding is still correct in the integer
implementation and a review of constraints on word lengths in the program.
.rh "Representing the model."
Implementations of models are discussed in the next section; here we
are concerned only with the interface to the model (lines 20-38).
In C, a byte is represented as an integer between 0 and 255 (call this a
$char$).
Internally, we represent a byte as an integer between 1 and 257 inclusive
(call this an $index$), EOF being treated as a 257th symbol.
It is advantageous to sort the model into frequency order, to minimize the
number of executions of the decoding loop (line 189).
To permit such reordering, the $char$/$index$ translation is implemented as
a pair of tables, $index_to_char[ \| ]$ and $char_to_index[ \| ]$.
In one of our models, these tables simply form the $index$ by adding 1 to the
$char$, but another implements a more complex translation which assigns small
indexes to frequently-used symbols.
.pp
The probabilities in the model are represented as integer frequency counts,
and cumulative counts are stored in the array $cum_freq[ \| ]$.
As previously, this array is ``backwards,'' and the total frequency count \(em
which is used to normalize all frequencies \(em appears in $cum_freq[0]$.
Cumulative counts must not exceed a predetermined maximum, $Max_frequency$,
and the model implementation must prevent overflow by scaling appropriately.
It must also ensure that neighboring values in the $cum_freq[ \| ]$ array
differ by at least 1; otherwise the affected symbol could not be transmitted.
.rh "Incremental transmission and reception."
Unlike Figure\ 2, the program of Figure\ 3 represents $low$ and $high$ as
integers.
A special data type, $code_value$, is defined for these quantities,
together with some useful constants:  \c
$Top_value$, representing the largest possible $code_value$, and
$First_qtr$, $Half$, and $Third_qtr$, representing parts of the range
(lines 6-16).
Whereas in Figure\ 2 the current interval is represented by
[$low$,\ $high$), in Figure\ 3 it is [$low$,\ $high$]; that is, the range now
includes the value of $high$.
Actually, it is more accurate (though more confusing) to say that in the
program of Figure\ 3 the interval represented is
[$low$,\ $high + 0.11111 ...$).
This is because when the bounds are scaled up to increase the precision, 0's
are shifted into the low-order bits of $low$ but 1's are shifted into $high$.
While it is possible to write the program to use a different convention,
this one has some advantages in simplifying the code.
.pp
As the code range narrows, the top bits of $low$ and $high$ will become the
same.
Any bits which are the same can be transmitted immediately, since they cannot
be affected by future narrowing.
For encoding, since we know that $low ~ <= ~ high$, this requires code like
.LB "nnnn"
.nf
.ta \w'nnnn'u +\w'if (high < 'u +\w'Half) { 'u +\w'output_bit(1); low = 2*(low\-Half); high = 2*(high\-Half)+1; 'u
.ne 4
for (;;) {
	if (high <	Half) {	output_bit(0); low = 2*low; high = 2*high+1;	}
	if (low $>=$	Half) {	output_bit(1); low = 2*(low\-Half); high = 2*(high\-Half)+1;	}
}
.fi
.LE "nnnn"
which ensures that, upon completion, $low ~ < ~ Half ~ <= ~ high$.
This can be found in lines 95-113 of $encode_symbol( \| )$,
although there are some extra complications caused by underflow possibilities
(see next subsection).
Care is taken care to shift 1's in at the bottom when $high$ is scaled, as
noted above.
.pp
Incremental reception is done using a number called $value$ as in Figure\ 2,
in which processed bits flow out the top (high-significance) end and
newly-received ones flow in the bottom.
$start_decoding( \| )$ (lines 168-176) fills $value$ with received bits initially.
Once $decode_symbol( \| )$ has identified the next input symbol, it shifts out
now-useless high-order bits which are the same in $low$ and $high$, shifting
$value$ by the same amount (and replacing lost bits by fresh input bits at the
bottom end):
.LB "nnnn"
.nf
.ta \w'nnnn'u +\w'if (high < 'u +\w'Half) { 'u +\w'value = 2*(value\-Half)+input_bit(\|); low = 2*(low\-Half); high = 2*(high\-Half)+1; 'u
.ne 4
for (;;) {
	if (high <	Half) {	value = 2*value+input_bit(\|); low = 2*low; high = 2*high+1;	}
	if (low $>=$	Half) {	value = 2*(value\-Half)+input_bit(\|); low = 2*(low\-Half); high = 2*(high\-Half)+1;	}
}
.fi
.LE "nnnn"
(see lines 194-213, again complicated by precautions against underflow
discussed below).
.rh "Proof of decoding correctness."
At this point it is worth checking that the identification of the next
symbol by $decode_symbol( \| )$ works properly.
Recall from Figure\ 2 that $decode_symbol( \| )$ must use $value$ to find that
symbol which, when encoded, reduces the range to one that still includes
$value$.
Lines 186-188 in $decode_symbol( \| )$ identify the symbol for which
.LB
$cum_freq[symbol] ~ <= ~~
left f {(value-low+1)*cum_freq[0] ~-~ 1} over {high-low+1} right f
~~ < ~ cum_freq[symbol-1]$,
.LE
where $left f ~ right f$ denotes the ``integer part of'' function that
comes from integer division with truncation.
It is shown in the Appendix that this implies
.LB "nnnn"
$low ~+~~ left f {(high-low+1)*cum_freq[symbol]} over cum_freq[0] right f
~~ <= ~ v ~ <=  ~~
low ~+~~ left f {(high-low+1)*cum_freq[symbol-1]} over cum_freq[0] right f ~~ - ~ 1$,
.LE "nnnn"
so $value$ lies within the new interval that $decode_symbol( \| )$
calculates in lines 190-193.
This is sufficient to guarantee that the decoding operation identifies each
symbol correctly.
.rh "Underflow."
As Figure\ 1 shows, arithmetic coding works by scaling the cumulative
probabilities given by the model into the interval [$low$,\ $high$] for
each character transmitted.
Suppose $low$ and $high$ are very close together, so close that this scaling
operation maps some different symbols of the model on to the same integer in
the [$low$,\ $high$] interval.
This would be disastrous, because if such a symbol actually occurred it would
not be possible to continue encoding.
Consequently, the encoder must guarantee that the interval [$low$,\ $high$] is
always large enough to prevent this.
The simplest way is to ensure that this interval is at least as large as
$Max_frequency$, the maximum allowed cumulative frequency count (line\ 36).
.pp
How could this condition be violated?
The bit-shifting operation explained above ensures that $low$ and $high$ can
only become close together when they straddle $Half$.
Suppose in fact they become as close as
.LB
$First_qtr ~ <= ~ low ~<~ Half ~ <= ~ high ~<~ Third_qtr$.
.LE
Then the next two bits sent will have opposite polarity, either 01 or 10.
For example, if the next bit turns out to be 0 (ie $high$ descends below
$Half$ and [0,\ $Half$] is expanded to the full interval) the bit after
that will be 1 since the range has to be above the midpoint of the expanded
interval.
Conversely if the next bit happens to be 1 the one after that will be 0.
Therefore the interval can safely be expanded right now, if only we remember
that whatever bit actually comes next, its opposite must be transmitted
afterwards as well.
Thus lines 104-109 expand [$First_qtr$,\ $Third_qtr$] into the whole interval,
remembering in $bits_to_follow$ that the bit that is output next must be
followed by an opposite bit.
This explains why all output is done via $bit_plus_follow( \| )$
(lines 128-135) instead of directly with $output_bit( \| )$.
.pp
But what if, after this operation, it is \fIstill\fR true that
.LB
$First_qtr ~ <= ~ low ~<~ Half ~ <= ~ high ~<~ Third_qtr$?
.LE
Figure\ 5 illustrates this situation, where the current [$low$,\ $high$]
range (shown as a thick line) has been expanded a total of three times.
Suppose the next bit will turn out to be 0, as indicated by the arrow in
Figure\ 5(a) being below the halfway point.
Then the next \fIthree\fR bits will be 1's, since not only is the arrow in the
top half of the bottom half of the original range, it is in the top quarter,
and moreover the top eighth, of that half \(em that is why the expansion
can occur three times.
Similarly, as Figure\ 5(b) shows, if the next bit turns out to be a 1 it will
be followed by three 0's.
Consequently we need only count the number of expansions and follow the next
bit by that number of opposites (lines 106 and 131-134).
.pp
Using this technique, the encoder can guarantee that after the shifting
operations, either
.LB
.ta \n(.lu-\n(.iuR
$low ~<~ First_qtr ~<~ Half ~ <= ~ high$	(1a)
.LE
or
.LB
.ta \n(.lu-\n(.iuR
$low ~<~ Half ~<~ Third_qtr ~ <= ~ high$.	(1b)
.LE
Therefore as long as the integer range spanned by the cumulative frequencies
fits into a quarter of that provided by $code_value$s, the underflow problem
cannot occur.
This corresponds to the condition
.LB
$Max_frequency ~ <= ~~ {Top_value+1} over 4 ~~ + ~ 1$,
.LE
which is satisfied by Figure\ 3 since $Max_frequency ~=~ 2 sup 14 - 1$ and
$Top_value ~=~ 2 sup 16 - 1$ (lines\ 36, 9).
More than 14\ bits cannot be used to represent cumulative frequency
counts without increasing the number of bits allocated to $code_value$s.
.pp
We have discussed underflow in the encoder only.
Since the decoder's job, once each symbol has been decoded, is to track the
operation of the encoder, underflow will be avoided if it performs the same
expansion operation under the same conditions.
.rh "Overflow."
Now consider the possibility of overflow in the integer multiplications
corresponding to those of Figure\ 2, which occur in lines 91-94 and 190-193
of Figure\ 3.
Overflow cannot occur provided the product
.LB
$range * Max_frequency$
.LE
fits within the integer word length available, since cumulative frequencies
cannot exceed $Max_frequency$.
$Range$ might be as large as $Top_value ~+~1$, so the largest possible product
in Figure 3 is $2 sup 16 ( 2 sup 14 - 1 )$ which is less than $2 sup 30$.
$Long$ declarations are used for $code_value$ (line\ 7) and $range$
(lines\ 89, 183) to ensure that arithmetic is done to 32-bit precision.
.rh "Constraints on the implementation."
The constraints on word length imposed by underflow and overflow can
be simplified by assuming frequency counts are represented in $f$\ bits, and
$code_value$s in $c$\ bits.
The implementation will work correctly provided
.LB
$f ~ <= ~ c ~ - ~2$
.br
$f ~+~ c ~ <= ~ p$, the precision to which arithmetic is performed.
.LE
In most C implementations, $p=31$ if $long$ integers are used, and $p=32$
if they are $unsigned ~ long$.
In Figure\ 3, $f=14$ and $c=16$.
With appropriately modified declarations, $unsigned ~ long$ arithmetic with
$f=15$, $c=17$ could be used.
In assembly language $c=16$ is a natural choice because it expedites some
comparisons and bit manipulations (eg those of lines\ 95-113 and 194-213).
.pp
If $p$ is restricted to 16\ bits, the best values possible are $c=9$ and
$f=7$, making it impossible to encode a full alphabet of 256\ symbols, as each
symbol must have a count of at least 1.
A smaller alphabet (eg the letters, or 4-bit nibbles) could still be
handled.
.rh "Termination."
To finish the transmission, it is necessary to send a unique terminating
symbol ($EOF_symbol$, line 56) and then follow it by enough bits to ensure
that the encoded string falls within the final range.
Since $done_encoding( \| )$ (lines 119-123) can be sure that
$low$ and $high$ are constrained by either (1a) or (1b) above, it need only
transmit $01$ in the first case or $10$ in the second to remove the remaining
ambiguity.
It is convenient to do this using the $bit_plus_follow( \| )$ procedure
discussed earlier.
The $input_bit( \| )$ procedure will actually read a few more bits than were
sent by $output_bit( \| )$ as it needs to keep the low end of the buffer full.
It does not matter what value these bits have as the EOF is uniquely
determined by the last two bits actually transmitted.
.sh "Models for arithmetic coding"
.pp
The program of Figure\ 3 must be used with a model which provides
a pair of translation tables $index_to_char[ \| ]$ and $char_to_index[ \| ]$,
and a cumulative frequency array $cum_freq[ \| ]$.
The requirements on the latter are that
.LB
.NP
$cum_freq[ i-1 ] ~ >= ~ cum_freq[ i ]$;
.NP
an attempt is never made to encode a symbol $i$ for which
$cum_freq[i-1] ~=~ cum_freq[i]$;
.NP
$cum_freq[0] ~ <= ~ Max_frequency$.
.LE
Provided these conditions are satisfied the values in the array need bear
no relationship to the actual cumulative symbol frequencies in messages.
Encoding and decoding will still work correctly, although encodings will
occupy less space if the frequencies are accurate.
(Recall our successfully encoding \fIeaii!\fR according to the model of
Table\ 1, which does not actually reflect the frequencies in the message.)  \c
.rh "Fixed models."
The simplest kind of model is one in which symbol frequencies are fixed.
The first model in Figure\ 4 has symbol frequencies which approximate those
of English (taken from a part of the Brown Corpus, Kucera & Francis, 1967).
.[
%A Kucera, H.
%A Francis, W.N.
%D 1967
%T Computational analysis of present-day American English
%I Brown University Press
%C Providence, RI
.]
However, bytes which did not occur in that sample have been given frequency
counts of 1 in case they do occur in messages to be encoded
(so, for example, this model will still work for binary files in which all
256\ bytes occur).
Frequencies have been normalized to total 8000.
The initialization procedure $start_model( \| )$ simply computes a cumulative
version of these frequencies (lines 48-51), having first initialized the
translation tables (lines 44-47).
Execution speed would be improved if these tables were used to re-order
symbols and frequencies so that the most frequent came first in the
$cum_freq[ \| ]$ array.
Since the model is fixed, the procedure $update_model( \| )$, which is
called from both $encode.c$ and $decode.c$, is null.
.pp
An \fIexact\fR model is one where the symbol frequencies in the message are
exactly as prescribed by the model.
For example, the fixed model of Figure\ 4 is close to an exact model
for the particular excerpt of the Brown Corpus from which it was taken.
To be truly exact, however, symbols that did not occur in the excerpt would
be assigned counts of 0, not 1 (sacrificing the capability of
transmitting messages containing those symbols).
Moreover, the frequency counts would not be scaled to a predetermined
cumulative frequency, as they have been in Figure\ 4.
The exact model may be calculated and transmitted before sending the message.
It is shown in Cleary & Witten (1984a) that, under quite general conditions,
this will \fInot\fR give better overall compression than adaptive coding,
described next.
.[
Cleary Witten 1984 enumerative adaptive codes
%D 1984a
.]
.rh "Adaptive models."
An adaptive model represents the changing symbol frequencies seen \fIso far\fR
in the message.
Initially all counts might be the same (reflecting no initial information),
but they are updated as each symbol is seen, to approximate the observed
frequencies.
Provided both encoder and decoder use the same initial values (eg equal
counts) and the same updating algorithm, their models will remain in step.
The encoder receives the next symbol, encodes it, and updates its model.
The decoder identifies it according to its current model, and then updates its
model.
.pp
The second half of Figure\ 4 shows such an adaptive model.
This is the type of model recommended for use with Figure\ 3, for in practice
it will outperform a fixed model in terms of compression efficiency.
Initialization is the same as for the fixed model, except that all frequencies
are set to 1.
The procedure $update_model(symbol)$ is called by both $encode_symbol( \| )$
and $decode_symbol( \| )$ (Figure\ 3 lines 54 and 151) after each symbol is
processed.
.pp
Updating the model is quite expensive, because of the need to maintain
cumulative totals.
In the code of Figure\ 4, frequency counts, which must be maintained anyway,
are used to optimize access by keeping the array in frequency order \(em an
effective kind of self-organizing linear search (Hester & Hirschberg, 1985).
.[
Hester Hirschberg 1985
.]
$Update_model( \| )$ first checks to see if the new model will exceed
the cumulative-frequency limit, and if so scales all frequencies down by a
factor of 2 (taking care to ensure that no count scales to zero) and
recomputes cumulative values (Figure\ 4, lines\ 29-37).
Then, if necessary, $update_model( \| )$ re-orders the symbols to place the
current one in its correct rank in the frequency ordering, altering the
translation tables to reflect the change.
Finally, it increments the appropriate frequency count and adjusts cumulative
frequencies accordingly.
.sh "Performance"
.pp
Now consider the performance of the algorithm of Figure\ 3, both
in compression efficiency and execution time.
.rh "Compression efficiency."
In principle, when a message is coded using arithmetic coding, the number of
bits in the encoded string is the same as the entropy of that message with
respect to the model used for coding.
Three factors cause performance to be worse than this in practice:
.LB
.NP
message termination overhead
.NP
the used of fixed-length rather than infinite-precision arithmetic
.NP
scaling of counts so that their total is at most $Max_frequency$.
.LE
None of these effects is significant, as we now show.
In order to isolate the effect of arithmetic coding the model will be
considered to be exact (as defined above).
.pp
Arithmetic coding must send extra bits at the end of each message, causing a
message termination overhead.
Two bits are needed, sent by $done_encoding( \| )$ (Figure\ 3 lines 119-123),
in order to disambiguate the final symbol.
In cases where a bit-stream must be blocked into 8-bit characters before
encoding, it will be necessary to round out to the end of a block.
Combining these, an extra 9\ bits may be required.
.pp
The overhead of using fixed-length arithmetic
occurs because remainders are truncated on division.
It can be assessed by comparing the algorithm's performance with
the figure obtained from a theoretical entropy calculation
which derives its frequencies from counts scaled exactly as for coding.
It is completely negligible \(em on the order of $10 sup -4$ bits/symbol.
.pp
The penalty paid by scaling counts is somewhat larger, but still very
small.
For short messages (less than $2 sup 14$ bytes) no scaling need be done.
Even with messages of $10 sup 5$ to $10 sup 6$ bytes, the overhead was found
experimentally to be less than 0.25% of the encoded string.
.pp
The adaptive model of Figure\ 4 scales down all counts whenever the total
threatens to exceed $Max_frequency$.
This has the effect of weighting recent events more heavily compared with
those earlier in the message.
The statistics thus tend to track changes in the input sequence, which can be
very beneficial.
(For example, we have encountered cases where limiting counts to 6 or 7\ bits
gives better results than working to higher precision.)  \c
Of course, this depends on the source being modeled.
Bentley \fIet al\fR (1986) consider other, more explicit, ways of
incorporating a recency effect.
.[
Bentley Sleator Tarjan Wei 1986 locally adaptive
%J Communications of the ACM
.]
.rh "Execution time."
The program in Figure\ 3 has been written for clarity, not execution speed.
In fact, with the adaptive model of Figure\ 4, it takes about 420\ $mu$s per
input byte on a VAX-11/780 to encode a text file, and about the same for
decoding.
However, easily avoidable overheads such as procedure calls account for much
of this, and some simple optimizations increase speed by a factor of 2.
The following alterations were made to the C version shown:
.LB
.NP
the procedures $input_bit( \| )$, $output_bit( \| )$, and
$bit_plus_follow( \| )$ were converted to macros to eliminate
procedure-call overhead;
.NP
frequently-used quantities were put in register variables;
.NP
multiplies by two were replaced by additions (C ``+='');
.NP
array indexing was replaced by pointer manipulation in the loops
at line 189 of Figure\ 3 and lines 49-52 of the adaptive model in Figure\ 4.
.LE
.pp
This mildly-optimized C implementation has an execution time of
214\ $mu$s/262\ $mu$s, per input byte,
for encoding/decoding 100,000\ bytes of English text on a VAX-11/780, as shown
in Table\ 2.
Also given are corresponding figures for the same program on an
Apple Macintosh and a SUN-3/75.
As can be seen, coding a C source program of the same length took slightly
longer in all cases, and a binary object program longer still.
The reason for this will be discussed shortly.
Two artificial test files were included to allow readers to replicate the
results.
``Alphabet'' consists of enough copies of the 26-letter alphabet to fill
out 100,000\ characters (ending with a partially-completed alphabet).
``Skew-statistics'' contains 10,000 copies of the string
\fIaaaabaaaac\fR\^; it demonstrates that files may be encoded into less than
1\ bit per character (output size of 12,092\ bytes = 96,736\ bits).
All results quoted used the adaptive model of Figure\ 4.
.pp
A further factor of 2 can be gained by reprogramming in assembly language.
A carefully optimized version of Figures\ 3 and 4 (adaptive model) was
written in both VAX and M68000 assembly language.
Full use was made of registers.
Advantage was taken of the 16-bit $code_value$ to expedite some crucial
comparisons and make subtractions of $Half$ trivial.
The performance of these implementations on the test files is also shown in
Table\ 2 in order to give the reader some idea of typical execution speeds.
.pp
The VAX-11/780 assembly language timings are broken down in Table\ 3.
These figures were obtained with the U\s-2NIX\s+2 profile facility and are
accurate only to within perhaps 10%\(dg.
.FN
\(dg This mechanism constructs a histogram of program counter values at
real-time clock interrupts, and suffers from statistical variation as well as
some systematic errors.
.EF
``Bounds calculation'' refers to the initial part of $encode_symbol( \| )$
and $decode_symbol( \| )$ (Figure\ 3 lines 90-94 and 190-193)
which contain multiply and divide operations.
``Bit shifting'' is the major loop in both the encode and decode routines
(lines 95-113 and 194-213).
The $cum$ calculation in $decode_symbol( \| )$, which requires a
multiply/divide, and the following loop to identify the next symbol
(lines\ 187-189), is ``Symbol decode''.
Finally, ``Model update'' refers to the adaptive
$update_model( \| )$ procedure of Figure\ 4 (lines\ 26-53).
.pp
As expected, the bounds calculation and model update take the same time for
both encoding and decoding, within experimental error.
Bit shifting was quicker for the text file than for the C program and object
file because compression performance was better.
The extra time for decoding over encoding is due entirely to the symbol
decode step.
This takes longer in the C program and object file tests because the loop of
line\ 189 was executed more often (on average 9\ times, 13\ times, and
35\ times respectively).
This also affects the model update time because it is the number of cumulative
counts which must be incremented in Figure\ 4 lines\ 49-52.
In the worst case, when the symbol frequencies are uniformly distributed,
these loops are executed an average of 128 times.
Worst-case performance would be improved by using a more complex tree
representation for frequencies, but this would likely be slower for text
files.
.sh "Some applications"
.pp
Applications of arithmetic coding are legion.
By liberating \fIcoding\fR with respect to a model from the \fImodeling\fR
required for prediction, it encourages a whole new view of data compression
(Rissanen & Langdon, 1981).
.[
Rissanen Langdon 1981 Universal modeling and coding
.]
This separation of function costs nothing in compression performance, since
arithmetic coding is (practically) optimal with respect to the entropy of
the model.
Here we intend to do no more than suggest the scope of this view
by briefly considering
.LB
.NP
adaptive text compression
.NP
non-adaptive coding
.NP
compressing black/white images
.NP
coding arbitrarily-distributed integers.
.LE
Of course, as noted earlier, greater coding efficiencies could easily be
achieved with more sophisticated models.
Modeling, however, is an extensive topic in its own right and is beyond the
scope of this paper.
.pp
.ul
Adaptive text compression
using single-character adaptive frequencies shows off arithmetic coding to
good effect.
The results obtained using the program of Figures\ 3 and 4 vary from
4.8\-5.3\ bit/char for short English text files ($10 sup 3$\ to $10 sup 4$
bytes) to 4.5\-4.7\ bit/char for long ones ($10 sup 5$ to $10 sup 6$ bytes).
Although adaptive Huffman techniques do exist (eg Gallagher, 1978;
Cormack & Horspool, 1984) they lack the conceptual simplicity of
arithmetic coding.
.[
Gallagher 1978 variations on a theme by Huffman
.]
.[
Cormack Horspool 1984 adaptive Huffman codes
.]
While competitive in compression efficiency for many files, they are slower.
For example, Table\ 4 compares the performance of the mildly-optimized C
implementation of arithmetic coding with that of the U\s-2NIX\s+2
\fIcompact\fR program which implements adaptive Huffman coding using
a similar model\(dg.
.FN
\(dg \fICompact\fR's model is essentially the same for long files (like those
of Table\ 4) but is better for short files than the model used as an example
in this paper.
.EF
Casual examination of \fIcompact\fR indicates that the care taken in
optimization is roughly comparable for both systems, yet arithmetic coding
halves execution time.
Compression performance is somewhat better with arithmetic coding on all the
example files.
The difference would be accentuated with more sophisticated models that
predict symbols with probabilities approaching one under certain circumstances
(eg letter ``u'' following ``q'').
.pp
.ul
Non-adaptive coding
can be performed arithmetically using fixed, pre-specified models like that in
the first part of Figure\ 4.
Compression performance will be better than Huffman coding.
In order to minimize execution time, the total frequency count,
$cum_freq[0]$, should be chosen as a power of two so the divisions
in the bounds calculations (Figure\ 3 lines 91-94 and 190-193) can be done
as shifts.
Encode/decode times of around 60\ $mu$s/90\ $mu$s should then be possible
for an assembly language implementation on a VAX-11/780.
A carefully-written implementation of Huffman coding, using table look-up for
encoding and decoding, would be a bit faster in this application.
.pp
.ul
Compressing black/white images
using arithmetic coding has been investigated by Langdon & Rissanen (1981),
who achieved excellent results using a model which conditioned the probability
of a pixel's being black on a template of pixels surrounding it.
.[
Langdon Rissanen 1981 compression of black-white images
.]
The template contained a total of ten pixels, selected from those above and
to the left of the current one so that they precede it in the raster scan.
This creates 1024 different possible contexts, and for each the probability of
the pixel being black was estimated adaptively as the picture was transmitted.
Each pixel's polarity was then coded arithmetically according to this
probability.
A 20%\-30% improvement in compression was attained over earlier methods.
To increase coding speed Langdon & Rissanen used an approximate method
of arithmetic coding which avoided multiplication by representing
probabilities as integer powers of 1/2.
Huffman coding cannot be directly used in this application, as it never
compresses with a two-symbol alphabet.
Run-length coding, a popular method for use with two-valued alphabets,
provides another opportunity for arithmetic coding.
The model reduces the data to a sequence of lengths of runs of the same symbol
(eg for picture coding, run-lengths of black followed by white followed by
black followed by white ...).
The sequence of lengths must be transmitted.
The CCITT facsimile coding standard (Hunter & Robinson, 1980), for example,
bases a Huffman code on the frequencies with which black and white runs of
different lengths occur in sample documents.
.[
Hunter Robinson 1980 facsimile
.]
A fixed arithmetic code using these same frequencies would give better
performance; adapting the frequencies to each particular document would be
better still.
.pp
.ul
Coding arbitrarily-distributed integers
is often called for when using more sophisticated models of text, image,
or other data.
Consider, for instance, Bentley \fIet al\fR's (1986) locally-adaptive data
compression scheme, in which the encoder and decoder cache the last $N$
different words seen.
.[
Bentley Sleator Tarjan Wei 1986 locally adaptive
%J Communications of the ACM
.]
A word present in the cache is transmitted by sending the integer cache index.
Words not in the cache are transmitted by sending a new-word marker followed
by the characters of the word.
This is an excellent model for text in which words are used frequently over
short intervals and then fall into long periods of disuse.
Their paper discusses several variable-length codings for the integers used
as cache indexes.
Arithmetic coding allows \fIany\fR probability distribution to be used as the
basis for a variable-length encoding, including \(em amongst countless others
\(em the ones implied by the particular codes discussed there.
It also permits use of an adaptive model for cache
indexes, which is desirable if the distribution of cache hits is
difficult to predict in advance.
Furthermore, with arithmetic coding, the code space allotted to the cache
indexes can be scaled down to accommodate any desired probability for the
new-word marker.
.sh "Acknowledgement"
.pp
Financial support for this work has been provided by the
Natural Sciences and Engineering Research Council of Canada.
.sh "References"
.sp
.in+4n
.[
$LIST$
.]
.in 0
.bp
.sh "APPENDIX: Proof of decoding inequality"
.sp
Using 1-letter abbreviations for $cum_freq$, $symbol$, $low$, $high$, and
$value$, suppose
.LB
$c[s] ~ <= ~~ left f {(v-l+1) times c[0] ~-~ 1} over {h-l+1} right f ~~ < ~
c[s-1]$;
.LE
in other words,
.LB
.ta \n(.lu-\n(.iuR
$c[s] ~ <= ~~ {(v-l+1) times c[0] ~-~ 1} over {r} ~~-~~ epsilon ~~ <= ~
c[s-1] ~-~1$, 	(1)
.LE
.ta 8n
where	$r ~=~ h-l+1$,  $0 ~ <= ~ epsilon ~ <= ~ {r-1} over r $.
.sp
(The last inequality of (1) derives from the fact that $c[s-1]$ must be an
integer.)  \c
Then we wish to show that  $l' ~ <= ~ v ~ <= ~ h'$,  where $l'$ and $h'$
are the updated values for $low$ and $high$ as defined below.
.sp
.ta \w'(a)    'u
(a)	$l' ~ == ~~ l ~+~~ left f {r times c[s]} over c[0] right f ~~ mark
<= ~~ l ~+~~ {r} over c[0] ~ left [ ~ {(v-l+1) times c[0] ~-~ 1} over {r}
                          ~~ - ~ epsilon ~ right ]$    from (1),
.sp 0.5
$lineup <= ~~ v ~ + ~ 1 ~ - ~ 1 over c[0]$ ,
.sp 0.5
	so   $l' ~ <= ~~ v$   since both $v$ and $l'$ are integers
and $c[0] > 0$.
.sp
(b)	$h' ~ == ~~ l ~+~~ left f {r times c[s-1]} over c[0] right f ~~-~1~~ mark
>= ~~ l ~+~~  {r} over c[0] ~ left [ ~ {(v-l+1) times c[0] ~-~ 1} over {r}
                          ~~ + ~ 1 ~ - ~ epsilon ~ right ] ~~ - ~ 1
$    from (1),
.sp 0.5
$lineup >= ~~ v ~ + ~~ r over c[0] ~ left [ ~ - ~ 1 over r ~+~ 1
                                                  ~-~~ r-1 over r right ]
~~ = ~~ v$.
.bp
.sh "Captions for tables"
.sp
.nf
.ta \w'Figure 1  'u
Table 1	Example fixed model for alphabet {\fIa, e, i, o, u, !\fR}
Table 2	Results for encoding and decoding 100,000-byte files
Table 3	Breakdown of timings for VAX-11/780 assembly language version
Table 4	Comparison of arithmetic and adaptive Huffman coding
.fi
.sh "Captions for figures"
.sp
.nf
.ta \w'Figure 1  'u
Figure 1	(a) Representation of the arithmetic coding process
	(b) Like (a) but with the interval scaled up at each stage
Figure 2	Pseudo-code for the encoding and decoding procedures
Figure 3	C implementation of arithmetic encoding and decoding
Figure 4	Fixed and adaptive models for use with Figure 3
Figure 5	Scaling the interval to prevent underflow
.fi
.bp 0
.ev2
.nr x2 \w'symbol'/2
.nr x3 (\w'symbol'/2)+0.5i+(\w'probability'/2)
.nr x4 (\w'probability'/2)+0.5i
.nr x5 (\w'[0.0, '
.nr x1 \n(x2+\n(x3+\n(x4+\n(x5+\w'0.0)'
.nr x0 (\n(.l-\n(x1)/2
.in \n(x0u
.ta \n(x2uC +\n(x3uC +\n(x4u +\n(x5u
\l'\n(x1u'
.sp
	symbol	probability	\0\0range
\l'\n(x1u'
.sp
	\fIa\fR	0.2	[0,	0.2)
	\fIe\fR	0.3	[0.2,	0.5)
	\fIi\fR	0.1	[0.5,	0.6)
	\fIo\fR	0.2	[0.6,	0.8)
	\fIu\fR	0.1	[0.8,	0.9)
	\fI!\fR	0.1	[0.9,	1.0)
\l'\n(x1u'
.sp
.in 0
.FE "Table 1  Example fixed model for alphabet {\fIa, e, i, o, u, !\fR}"
.bp 0
.ev2
.nr x1 0.5i+\w'\fIVAX object program\fR      '+\w'100,000      '+\w'time ($mu$s)  '+\w'time ($mu$s)    '+\w'time ($mu$s)  '+\w'time ($mu$s)    '+\w'time ($mu$s)  '+\w'time ($mu$s)'
.nr x0 (\n(.l-\n(x1)/2
.in \n(x0u
.ta 0.5i +\w'\fIVAX object program\fR      'u +\w'100,000      'u +\w'time ($mu$s)  'u +\w'time ($mu$s)    'u +\w'time ($mu$s)  'u +\w'time ($mu$s)    'u +\w'time ($mu$s)  'u
\l'\n(x1u'
.sp
			\0\0VAX-11/780	\0\0\0Macintosh	\0\0\0\0SUN-3/75
		output	 encode	 decode	 encode	 decode	 encode	 decode
		(bytes)	time ($mu$s)	time ($mu$s)	time ($mu$s)	time ($mu$s)	time ($mu$s)	time ($mu$s)
\l'\n(x1u'
.sp
Mildly optimized C implementation
.sp
	\fIText file\fR	\057718	\0\0214	\0\0262	\0\0687	\0\0881	\0\0\098	\0\0121
	\fIC program\fR	\062991	\0\0230	\0\0288	\0\0729	\0\0950	\0\0105	\0\0131
	\fIVAX object program\fR	\073501	\0\0313	\0\0406	\0\0950	\01334	\0\0145	\0\0190
	\fIAlphabet\fR	\059292	\0\0223	\0\0277	\0\0719	\0\0942	\0\0105	\0\0130
	\fISkew-statistics\fR	\012092	\0\0143	\0\0170	\0\0507	\0\0645	\0\0\070	\0\0\085
.sp
Carefully optimized assembly language implementation
.sp
	\fIText file\fR	\057718	\0\0104	\0\0135	\0\0194	\0\0243	\0\0\046	\0\0\058
	\fIC program\fR	\062991	\0\0109	\0\0151	\0\0208	\0\0266	\0\0\051	\0\0\065
	\fIVAX object program\fR	\073501	\0\0158	\0\0241	\0\0280	\0\0402	\0\0\075	\0\0107
	\fIAlphabet\fR	\059292	\0\0105	\0\0145	\0\0204	\0\0264	\0\0\051	\0\0\065
	\fISkew-statistics\fR	\012092	\0\0\063	\0\0\081	\0\0126	\0\0160	\0\0\028	\0\0\036

\l'\n(x1u'
.sp 2
.nr x0 \n(.l
.ll \n(.lu-\n(.iu
.fi
.in \w'\fINotes:\fR  'u
.ti -\w'\fINotes:\fR  'u
\fINotes:\fR\ \ \c
Times are measured in $mu$s per byte of uncompressed data.
.sp 0.5
The VAX-11/780 had a floating-point accelerator, which reduces integer
multiply and divide times.
.sp 0.5
The Macintosh uses an 8\ MHz MC68000 with some memory wait states.
.sp 0.5
The SUN-3/75 uses a 16.67\ MHz MC68020.
.sp 0.5
All times exclude I/O and operating system overhead in support of I/O.
VAX and SUN figures give user time from the U\s-2NIX\s+2 \fItime\fR
command; on the Macintosh I/O was explicitly directed to an array.
.sp 0.5
The 4.2BSD C compiler was used for VAX and SUN; Aztec C 1.06g for Macintosh.
.sp
.ll \n(x0u
.nf
.in 0
.FE "Table 2  Results for encoding and decoding 100,000-byte files"
.bp 0
.ev2
.nr x1 \w'\fIVAX object program\fR        '+\w'Bounds calculation        '+\w'time ($mu$s)    '+\w'time ($mu$s)'
.nr x0 (\n(.l-\n(x1)/2
.in \n(x0u
.ta \w'\fIVAX object program\fR        'u +\w'Bounds calculation        'u +\w'time ($mu$s)    'u +\w'time ($mu$s)'u
\l'\n(x1u'
.sp
		 encode	 decode
		time ($mu$s)	time ($mu$s)
\l'\n(x1u'
.sp
\fIText file\fR	Bounds calculation	\0\0\032	\0\0\031
	Bit shifting	\0\0\039	\0\0\030
	Model update	\0\0\029	\0\0\029
	Symbol decode	\0\0\0\(em	\0\0\045
	Other	\0\0\0\04	\0\0\0\00
		\0\0\l'\w'100'u'	\0\0\l'\w'100'u'
		\0\0104	\0\0135
.sp
\fIC program\fR	Bounds calculation	\0\0\030	\0\0\028
	Bit shifting	\0\0\042	\0\0\035
	Model update	\0\0\033	\0\0\036
	Symbol decode	\0\0\0\(em	\0\0\051
	Other	\0\0\0\04	\0\0\0\01
		\0\0\l'\w'100'u'	\0\0\l'\w'100'u'
		\0\0109	\0\0151
.sp
\fIVAX object program\fR	Bounds calculation	\0\0\034	\0\0\031
	Bit shifting	\0\0\046	\0\0\040
	Model update	\0\0\075	\0\0\075
	Symbol decode	\0\0\0\(em	\0\0\094
	Other	\0\0\0\03	\0\0\0\01
		\0\0\l'\w'100'u'	\0\0\l'\w'100'u'
		\0\0158	\0\0241
\l'\n(x1u'
.in 0
.FE "Table 3  Breakdown of timings for VAX-11/780 assembly language version"
.bp 0
.ev2
.nr x1 \w'\fIVAX object program\fR      '+\w'100,000      '+\w'time ($mu$s)  '+\w'time ($mu$s)    '+\w'100,000      '+\w'time ($mu$s)  '+\w'time ($mu$s)'
.nr x0 (\n(.l-\n(x1)/2
.in \n(x0u
.ta \w'\fIVAX object program\fR      'u +\w'100,000      'u +\w'time ($mu$s)  'u +\w'time ($mu$s)    'u +\w'100,000      'u +\w'time ($mu$s)  'u +\w'time ($mu$s)'u
\l'\n(x1u'
.sp
	\0\0\0\0\0\0Arithmetic coding	\0\0\0Adaptive Huffman coding
	output	 encode	 decode	output	 encode	 decode
	(bytes)	time ($mu$s)	time ($mu$s)	(bytes)	time ($mu$s)	time ($mu$s)
\l'\n(x1u'
.sp
\fIText file\fR	\057718	\0\0214	\0\0262	\057781	\0\0550	\0\0414
\fIC program\fR	\062991	\0\0230	\0\0288	\063731	\0\0596	\0\0441
\fIVAX object program\fR	\073546	\0\0313	\0\0406	\076950	\0\0822	\0\0606
\fIAlphabet\fR	\059292	\0\0223	\0\0277	\060127	\0\0598	\0\0411
\fISkew-statistics\fR	\012092	\0\0143	\0\0170	\016257	\0\0215	\0\0132
\l'\n(x1u'
.sp 2
.nr x0 \n(.l
.ll \n(.lu-\n(.iu
.fi
.in +\w'\fINotes:\fR  'u
.ti -\w'\fINotes:\fR  'u
\fINotes:\fR\ \ \c
Mildly optimized C implementation used for arithmetic coding
.sp 0.5
U\s-2NIX\s+2 \fIcompact\fR used for adaptive Huffman coding
.sp 0.5
Times are for a VAX-11/780, and exclude I/O and operating system overhead in
support of I/O.
.sp
.ll \n(x0u
.nf
.in 0
.FE "Table 4  Comparison of arithmetic and adaptive Huffman coding"
.pn 0
.ls1
.EQ
delim $$
.EN
.ev1
.ps-2
.vs-2
.ev
\&
.sp 10
.ps+4
.ce
COMPUTER (IN)SECURITY \(em
.sp
.ce
INFILTRATING OPEN SYSTEMS
.ps-4
.sp4
.ce
Ian H. Witten
.sp2
.ce4
Department of Computer Science
The University of Calgary
2500 University Drive NW
Calgary, Canada T2N 1N4
.sp2
.ce2
November 1986
Revised March 1987
.bp 1
.ls 2
.pp
Shared computer systems today are astonishingly insecure.
And users, on the whole, are blithely unaware of the weaknesses of the
systems in which they place \(em or rather, misplace \(em their trust.
Taken literally, of course, it is meaningless to ``trust'' a computer system
as such, for machines are neither trustworthy nor untrustworthy;
these are human qualities.
In trusting a system one is effectively trusting all those who create and
alter it, in other words, all who have access (whether licit or
illicit).
Security is a fundamentally \fIhuman\fP issue.
.pp
This article aims not to solve security problems but to raise reader
consciousness
of the multifarious cunning ways that systems can be infiltrated, and the
subtle but devastating damage that an unscrupulous infiltrator can wreak.
It is comforting, but highly misleading, to imagine that technical means of
enforcing security have guaranteed that the systems we use are safe.
It is true that in recent years some ingenious procedures have been invented
to preserve security.
For example, the advent of ``one-way functions'' (explained below) has
allowed the password file, once a computer system's central stronghold, to be
safely exposed to casual inspection by all and sundry.
But despite these innovations, astonishing loopholes exist in practice.
.pp
There are manifest advantages in ensuring security by technical means rather
than by keeping things secret.
Not only do secrets leak, but as individuals change projects,
join or leave the organization, become promoted and so on, they need to learn
new secrets and forget old ones.
With physical locks one can issue and withdraw keys to reflect changing
security needs.
But in computer systems, the keys constitute information which can be given
out but not taken back, because no-one can force people to forget.
In practice, such secrets require considerable administration to maintain
properly.
And in systems where security is maintained by tight control of information,
.ul
quis custodiet ipsos custodes
\(em who will guard the guards themselves?
.pp
There is a wide range of simple insecurities that many
systems suffer.
These are, in the main, exacerbated in open systems where information and
programs are shared among users \(em just those features that characterize
pleasant and productive working environments.
The saboteur's basic tool is the Trojan horse,
a widely trusted program which has been surreptitiously modified to do
bad things in secret.
``Bad things'' range from minor but rankling irritations through theft of
information to holding users to ransom.
The inevitable fragilities of operating systems can
be exploited by constructing programs which behave in some ways like primitive
living organisms.
Programs can be written which spread bugs like an epidemic.
They hide in binary code, effectively undetectable (because nobody ever
examines binaries).
They can remain dormant for months or years, perhaps quietly and imperceptibly
infiltrating their way into the very depths of a system, then suddenly pounce,
causing irreversible catastrophe.
A clever and subtle bug\(dg can survive
recompilation despite the fact that there is no record of it in the source
program.
.FN
\(dg Throughout this article the word ``bug'' is meant to bring to mind a
concealed snooping device as in espionage, or a micro-organism carrying
disease as in biology, rather than an inadvertent programming error.
.EF
This is the ultimate parasite.
It cannot be detected because it lives only in binary code.
And yet it cannot be wiped out by recompiling the source program!
We might wonder whether these techniques, which this article develops
and explains in the context of multi-user timesharing operating systems,
pose any threats to computer networks or even stand-alone micros.
.pp
Although the potential has existed for decades, the possibility of the kind of
``deviant'' software described here has been recognized only recently.
Or has it?
Probably some in the world of computer wizards and sorcerers have known for
years how systems can be silently, subtly infiltrated \(em and concealed
the information for fear that it might be misused (or for other reasons).
But knowledge of the techniques is spreading nevertheless, and I believe it
behooves us all \(em professionals and amateurs alike \(em to understand just
how our continued successful use of computer systems hangs upon a thread of
trust.
Those who are ignorant of the possibilities of sabotage can easily be
unknowingly duped by an unscrupulous infiltrator.
.pp
The moral is simple.
Computer security is a human business.
One way of maintaining security is to keep things secret, trusting people
(the very people who can do you most harm) not to tell.
The alternative is to open up the system and rely on technical means
of ensuring security.
But a system which is really ``open'' is also open to abuse.
The more sharing and productive the environment, the more potential exists for
damage.
You have to trust your fellow users, and educate yourself.
If mutual trust is the cornerstone of computer security, we'd better know it!
.sh "The trend towards openness"
.pp
Many people believe that computer systems can maintain security not
by keeping secrets but by clever technical mechanisms.
Such devices include electronic locks and keys, and schemes for maintaining
different sets of ``permissions'' or ``privileges'' for each user.
The epitome of this trend towards open systems is the well-known \s-2UNIX\s+2
operating system, whose developers, Dennis Ritchie and Ken Thompson, strove
to design a clean, elegant piece of software that could be understood,
maintained, and modified by users.
(In 1983 they received the prestigious ACM Turing Award for their work.)  \c
Ken Thompson has been one of the prime contributors to our knowledge of
computer (in)security, and was responsible for much of the work described in
this article.
.pp
The most obvious sense in which the \s-2UNIX\s+2 system
is ``open'' is illustrated by looking at its password file.
Yes, there is nothing to stop you from looking at this file!
Each registered user has a line in it, and Figure\ 1 shows mine.
It won't help you to impersonate me, however, because what it shows in the
password field is not my password but a scrambled version of it.
There is a program which computes encrypted passwords from plain ones, and
that is how the system checks my identity when I log in.
But the program doesn't work in reverse \(em it's what is called a ``one-way
function'' (see Panel\ 1).
It is effectively impossible to find the plain version from the encrypted one,
even if you know exactly what the encryption procedure does and try to work
carefully backward through it.
\fINobody\fR can recover my plain password from the information stored in the
computer.
If I forget it, not even the system manager can find out what it is.
The best that can be done is to reset my password to some standard one, so
that I can log in and change it to a new secret password.
(Needless to say this creates a window of opportunity for an imposter.)  \c
The system keeps no secrets.
Only I do.
.pp
Before people knew about one-way functions, computer systems maintained a
password file which gave everyone's plain password for the login procedure to
consult.
This was the prime target for anyone who tried to
break security, and the bane of system managers because of the
completely catastrophic nature of a leak.
Systems which keep no secrets avoid an unnecessary Achilles heel.
.pp
Another sense in which \s-2UNIX\s+2 is ``open'' is the accessibility of its
source code.
The software, written in the language "C", has been distributed
(to universities) in source form so that maintenance can be done locally.
The computer science research community has enjoyed numerous benefits from
this enlightened policy (one is that we can actually look at some of the
security problems discussed in this article).
Of course, in any other system there will inevitably be a large number of
people who have or have had access to the source code \(em even though it may
not be publicly accessible.
Operating systems are highly complex pieces of technology, created by large
teams of people.
A determined infiltrator may well be able to gain illicit access to source
code.
Making it widely available has the very positive effect of bringing the
problems out into the open and offering them up for public scrutiny.
.pp
Were it attainable, perfect secrecy would offer a high degree of security.
Many people feel that technical innovations like one-way functions and
open password files provide comparable protection.
The aim of this article is to show that this is a dangerous misconception.
In practice, security is often severely compromised by people who have
intimate knowledge of the inner workings of the system \(em precisely the
people you rely on to \fIprovide\fR the security.
This does not cause problems in research laboratories because they are
founded on mutual trust and support.
But in commercial environments, it is vital to be aware of any limitations on
security.
We must face the fact that
in a hostile and complex world, computer security is best preserved by
maintaining secrecy.
.sh "A pot-pourri of security problems"
.pp
Here are a few simple ways that security might be compromised.
.rh "Guessing a particular user's password."
Whether your password is stored in a secret file or encrypted by a one-way
function first, it offers no protection if it can easily be guessed.
This will be hard if it is chosen at random from a large enough set.
But for a short sequence of characters from a restricted alphabet
(like the lower-case letters), an imposter could easily try all possibilities.
And in an open system which gives access to the password file and one-way
function, this can be done mechanically, by a program!
.pp
In Figure\ 2, the number of different passwords is plotted against the length
of the password, for several different sets of characters.
For example, there are about ten million ($10 sup 7$) possibilities for a
5-character password chosen from the lower-case letters.
This may seem a lot, but if it takes 1\ msec to try each one, they can all be
searched in about 3\ hours.
If 5-character passwords are selected from the 62 alphanumerics, there
are more than 100 times as many and the search would take over 10\ days.
.pp
To make matters worse, people have a strong propensity to choose as
passwords such things as
.LB
.NP
English words
.NP
English words spelled backwards
.NP
first names, last names, street names, city names
.NP
the above with initial upper-case letters
.NP
valid car license numbers
.NP
room numbers, social security numbers, telephone numbers, etc.
.LE
Of course, this isn't particularly surprising since passwords have to be
mnemonic in order to be remembered!
But it makes it easy for an enterprising imposter to gather a substantial
collection of candidates (from dictionaries, mailing lists, etc) and search
them for your password.
At 1\ msec per possibility, it takes only 4\ minutes to search a 250,000-word
commercial dictionary.
.pp
A study some years ago of a collection of actual passwords that people used to
protect their accounts revealed the amazing breakdown reproduced in Figure\ 3.
Most fell into one of the categories discussed, leaving less
than 15% of passwords which were hard to guess.
Where does your own password stand in the pie diagram?
.rh "Finding any valid password."
There is a big difference between finding a particular person's password and
finding a valid password for any user.
You could start searching through the candidates noted above until you found
one which, when encrypted, matched one of the entries in the password file.
That way you find the most vulnerable user, and there are almost certain to be
some lazy and crazy enough to use easily-guessable passwords, four-letter
words, or whatever.
Hashing techniques make it almost as quick to check a candidate against a
group of encrypted passwords as against a single one.
.pp
A technique called ``salting'' protects against this kind of attack.
Whenever a user's password is initialized or changed, a small random number
called the ``salt'' is generated (perhaps from the time of day).
Not only is this combined with the password when it is encrypted, but as
Figure\ 1 shows it is also stored in the password file for everyone to see.
Every time someone claiming to be that user logs in, the salt is combined with
the password offered before being encrypted and compared
with whatever is stored in the password file.
For example, say my password was ``w#xs27'' (it isn't!).
If the salt is ``U6'' (as in Figure\ 1), the system will apply its one-way
function to ``w#xs27U6'' to get the encrypted password.
.pp
Since all can see the salt, it is no harder for anyone to guess
an individual user's password.
One can salt guesses just as the system does.
But it \fIis\fR harder to search a group of passwords, since the salt will be
different for each, rendering it meaningless to compare a single encrypted
password against all those in the group.
Suppose you were checking to see if anyone had the password ``hello''.
Without salting, you simply apply the one-way function to this word and
compare the result with everyone's encrypted password.
But with salting it's not so easy, since to see if my password is ``hello''
you must encrypt ``helloU6'', and the salt is different for everyone.
.rh "Forced-choice passwords."
The trouble with letting users choose their own passwords is that they often
make silly, easily-guessed, choices.
Many systems attempt to force people to choose more ``random'' passwords, and
force them to change their password regularly.
All these attempts seem to be complete failures.
The fundamental problem is that people have to be able to remember their
passwords, because security is immediately compromised if they are written
down.
.pp
There are many amusing anecdotes about how people thwart systems that attempt
to dictate when they have to change their passwords.
I had been using a new system for some weeks when it insisted that I change my
password.
Resenting it ordering me about, I gave my old password as the new one.
But it was programmed to detect this ruse and promptly told me so.
I complained to the user sitting beside me.
``I know,'' she said sympathetically.
``What I always do is change it to something else and then immediately
change it back again!''  \c
Another system remembered your last several passwords, and insisted on a
once-a-month change.
So people began to use the name of the current month as their password!
.rh "Wiretaps."
Obviously any kind of password protection can be thwarted by a physical
wiretap.
All one has to do is watch as you log in and make a note of your password.
The only defense is encryption at the terminal.
Even then you have to be careful to ensure that someone can't intercept
your encrypted password and pose as you later on by sending this
\fIencrypted\fR string to the computer \(em after all, this is what the
computer sees when you log in legitimately!
To counter this, the encryption can be made time-dependent so that the same
password translates to different strings at different times.
.pp
Assuming that you, like 99.9% of the rest of us, don't go to the trouble of
terminal encryption, when was the last time you checked the line between your
office terminal and the computer for a physical wiretap?
.rh "Search paths."
We will see shortly that you place yourself completely at the mercy of other
users whenever you execute their programs, and they
can do some really nasty things like spreading infection to your files.
However, you don't necessarily have to execute someone else's program overtly,
for many systems make it easy to use other people's
programs without even realizing it.
This is usually a great advantage, for you can install programs so that you
or others can invoke them just like ordinary system programs, thereby
creating personalized environments.
.pp
Figure\ 4 shows part of the file hierarchy in our system.
The whole hierarchy is immense \(em I alone have something like 1650 files,
organized into 200 of my own directories under the ``ian'' node shown in the
Figure, and there are hundreds of other users \(em and what is shown is just a
very small fragment.
Users can set up a ``search path'' which tells the system
where to look for programs they invoke.
For example, my search path includes the 6 places that are circled.
Whenever I ask for a program to be executed, the system seeks it in these
places.
It also searches the ``current directory'' \(em the one where I happen to be
at the time.
.pp
To make it more convenient for you to set up a good working environment, it
is easy to put someone else's file directories on your search path.
But then they can do arbitrary damage to you, sometimes completely
accidentally.
For example, I once installed a spreadsheet calculator called ``sc'' in one
of my directories.
Unknown to me, another user suddenly found that the Simula compiler stopped
working and entered a curious mode where it cleared his VDT screen and wrote
a few incomprehensible characters on it.
There was quite a hiatus.
The person who maintained the Simula compiler was away,
but people could see no reason for the compiler to have been altered.
Of course, told like this it is obvious that the user had my directory on his
search path and I had created a name conflict with \fIsc\fR, the Simula
compiler.
But it was not obvious to the user, who rarely thought about the search path
mechanism.
And I never use the Simula compiler and had created the conflict in all
innocence.
Moreover, I didn't even know that other users had my directory on their search
paths!
This situation caused only frustration before the problem was diagnosed and
fixed.
But what if I were a bad guy who had created the new \fIsc\fR program to
harbor a nasty bug (say one which deleted the hapless user's files)?
.pp
You don't necessarily have to put someone on your search path to run the
risk of executing their programs accidentally.
As noted above, the system (usually) checks your current working directory
for the program first.
Whenever you change your current workplace to another's directory, you
might without realizing it begin to execute programs that had been
planted there.
.pp
Suppose a hacker plants a program with the same name as a common
utility program.
How would you find out?
The \s-2UNIX\s+2 \fIls\fR command lists all the files in a directory.
Perhaps you could find imposters using \fIls\fR?  \(em Sorry.
The hacker might have planted another program, called \fIls\fR, which
simulated the real \fIls\fR exactly except that it lied about its own
existence and that of the planted command!
The \fIwhich\fR command tells you which version of a program you
are using \(em whether it comes from the current directory, another user's
directory, or a system directory.
Surely this would tell you?  \(em Sorry.
The hacker might have written another \fIwhich\fR which lied about itself,
about \fIls\fR, and about the plant.
.pp
If you put someone else on your search path, or change into their directory,
you're implicitly trusting them.
You are completely at a user's mercy when you execute one of their programs,
whether accidentally or on purpose.
.rh "Programmable terminals."
Things are even worse if you use a ``programmable'' terminal.
Then, the computer can send a special sequence of characters to command the
terminal to transmit a particular message whenever a particular key is struck.
For example, on the terminal I am using to type this article, you could
program the \s-2RETURN\s+2 key to transmit the message ``hello'' whenever it
is pressed.
All you need to do to accomplish this is to send my terminal the character
sequence
.LB
\s-2ESCAPE\s+2 P ` + { H E L L O } \s-2ESCAPE\s+2
.LE
(\s-2ESCAPE\s+2 stands for the \s-2ASCII\s+2 escape character, decimal 27,
which is invoked by a key labeled ``Esc''.)  \c
This is a mysterious and ugly incantation, and I won't waste time
explaining the syntax.
But it has an extraordinary effect.
Henceforth every time I hit the return key, my terminal will transmit the
string ``hello'' instead of the normal \s-2RETURN\s+2 code.
And when it receives this string, the computer I am connected to will try to
execute a program called ``hello''!
.pp
This is a terrible source of insecurity.
Someone could program my terminal so that it executed one of \fItheir\fR
programs whenever I pressed \s-2RETURN\s+2.
That program could reinstate the \s-2RETURN\s+2 code to make it
appear afterwards as though nothing had happened.
Before doing that, however, it could (for example) delete all my files.
.pp
The terminal can be reprogrammed just by sending it an ordinary character
string.
The string could be embedded in a file, so that the terminal would be bugged
whenever I viewed the file.
It might be in a seemingly innocuous message;
simply reading mail could get me in trouble!
It could even be part of a file \fIname\fR, so that the bug would appear
whenever I listed a certain directory \(em not making it my current directory,
as was discussed above, but just \fIinspecting\fR it.
But I shouldn't say ``appear'', for that's exactly what it might not do.
I may never know that anything untoward had occurred.
.pp
How can you be safe?
The programming sequences for my terminal all start with \s-2ESCAPE\s+2,
which is an \s-2ASCII\s+2 control character.
Anyone using such a terminal should whenever possible work through a
program that exposes control characters.
By this I mean a program that monitors output from the computer and translates
the escape code to something like the 5-character sequence ``<ESC>''.
Then a raw \s-2ESCAPE\s+2 itself never gets sent to the terminal,
so the reprogramming mechanism is never activated.
.pp
Not only should you avoid executing programs written by people you don't
trust, but in extreme cases you should take the utmost care in \fIany\fR
interaction with untrustworthy people \(em even reading their electronic
mail.
.sh "Trojan horses: getting under the skin"
.pp
The famous legend tells of a huge, hollow wooden horse filled with Greek
soldiers which was left, ostensibly as a gift, at the gates of the city of
Troy.
When it was brought inside, the soldiers came out at night and
opened the gates to the Greek army, which destroyed the city.
To this day, something used to subvert an organization from within by abusing
misplaced trust is called a Trojan horse.
.pp
In any computer system for which security is a concern, there must be things
that need protecting.
These invariably constitute some kind of information (since the computer is,
at heart, an information processor), and such information invariably outlasts
a single login session and is therefore stored in the computer's file system.
Consequently the file system is the bastion to be kept secure, and will be
the ultimate target of any invader.
Some files contain secret information that not just anyone may read,
others are vital to the operation of an organization and must at all costs
be preserved from surreptitious modification or deletion.
A rather different thing that must be protected is the ``identity'' of each
user.
False identity could be exploited by impersonating someone else in order to
send mail.
Ultimately, of course, this is the same as changing data in mailbox files.
Conversely, since for each and every secret file \fIsomeone\fR must
have permission to read and alter it, preserving file system security
requires that identities be kept intact.
.rh "What might a Trojan horse do?"
The simplest kind of Trojan horse turns a common program like a text editor
into a security threat by implanting code in it which secretly reads
or alters files it is not intended to.
An editor normally has access to all the user's
files (otherwise they couldn't be altered).
In other words, the program runs with the user's own privileges.
A Trojan horse in it can do anything the user himself could do, including
reading, writing, or deleting files.
.pp
It is easy to communicate stolen information back to the person who bugged
the editor.
Most blatantly, the access permission of a secret file could be changed so
that anyone can read it.
Alternatively the file could be copied temporarily to disk \(em most systems
allocate scratch disk space for programs that need to create temporary working
files \(em and given open access.
Another program could continually check for it and, when
it appeared, read and immediately delete it to destroy the trace.
More subtle ways of communicating small amounts of information might be to
rearrange disk blocks physically so that their addresses formed a code, or to
signal with the run/idle status of the process to anyone who monitored the
system's job queue.
Clearly, any method of communication will be detectable by others \(em in
theory.
But so many things go on in a computer system that messages can easily be
embedded in the humdrum noise of countless daily events.
.pp
Trojan horses don't necessarily do bad things.
Some are harmless but annoying, created to meet a challenge rather than to
steal secrets.
One such bug, the ``cookie monster'', signals its presence by announcing
to the unfortunate user ``I want a cookie''.
Merely typing the word ``cookie'' will satiate the monster and cause it to
disappear as though nothing had happened.
But if the user ignores the request, although the monster appears to go
away it returns some minutes later with ``I'm hungry; I really want a
cookie''.
As time passes the monster appears more and more frequently with increasingly
insistent demands, until it makes a serious
threat:  ``I'll remove some of your files if you don't give me a cookie''.
At this point the poor user realizes that the danger is real and is
effectively forced into appeasing the monster's appetite by supplying the word
``cookie''.
Although an amusing story to tell, it is not pleasant to imagine being
intimidated by an inanimate computer program.
.pp
A more innocuous Trojan horse, installed by a system programmer to commemorate
leaving her job, occasionally drew a little teddy-bear on the graph-plotter.
This didn't happen often (roughly every tenth plot), and even when it did
it occupied a remote corner of the paper, well outside the normal plotting
area.
But although they initially shared the joke, management soon ceased to
appreciate the funny side and ordered the programmer's replacement to get rid
of it.
Unfortunately the bug was well disguised and many fruitless hours were spent
seeking it in vain.
Management grew more irate and the episode ended when the originator
received a desperate phone-call from her replacement, whose job was by now at
risk, begging her to divulge the secret!
.rh "Installing a Trojan horse."
The difficult part is installing the Trojan horse into a trusted program.
System managers naturally take great care that only a few people get access
to suitable host programs.
If anyone outside the select circle of ``system people'' is ever given an
opportunity to modify a commonly-used program like a text editor
(for example, to add a new feature) all changes will be closely scrutinized by
the system manager before being installed.
Through such measures the integrity of system programs is preserved.
Note, however, that constant vigilance is required, for once bugged, a system
can remain compromised forever.
The chances of a slip-up may be tiny, but the consequences are unlimited.
.pp
One good way of getting bugged code installed in the system is to write a
popular utility program.
As its user community grows, more and more people will copy the program into
their disk areas so that they can use it easily.
Eventually, if it is successful, the utility will be installed as a ``system''
program.
This will be done to save disk space \(em so that the users can delete their
private versions \(em and perhaps also because the code can now be made
``sharable'' in that several simultaneous users can all execute a single copy
in main memory.
As a system program the utility may inherit special privileges, and so be
capable of more damage.
It may also be distributed to other sites, spreading the Trojan horse far and
wide.
.pp
Installing a bug in a system utility like a text editor puts anyone who uses
that program at the mercy of whoever perpetrated the bug.
But it doesn't allow that person to get in and do damage at any time, for
nothing can be done to a user's files until that user invokes the bugged
program.
Some system programs, however, have a special privilege which allows them
access to files belonging to \fIanyone\fR, not just the current user.
We'll refer to this as the ``ultimate'' privilege, since nothing could be more
powerful.
An example of a program with the ultimate privilege is the \fIlogin\fR program
which administers the logging in sequence, accepting the user name and
password and creating an appropriate initial process.
Although \s-2UNIX\s+2 \fIlogin\fR runs as a normal process, it must have the
power to masquerade as any user since that is in effect the goal of the
logging in procedure!
From an infiltrator's point of view, this would be an excellent
target for a Trojan horse.
For example, it could be augmented to grant access automatically to any user
who typed the special password ``trojanhorse'' (see Panel\ 2).
Then the infiltrator could log in as anyone at any time.
Naturally, any changes to \fIlogin\fR will be checked especially carefully
by the system administrators.
.pp
Some other programs are equally vulnerable \(em but not many.
Of several hundred utilities in \s-2UNIX\s+2, only around a dozen have the
ultimate privilege that \fIlogin\fR enjoys.
Among them are the \fImail\fR facility, the \fIpasswd\fR program which lets
users change their passwords, \fIps\fR which examines the status of all
processes in the system, \fIlquota\fR that enforces disk quotas, \fIdf\fR
which shows how much of the disk is free, and so on.
These specially-privileged programs are prime targets for Trojan horses since
they allow access to any file in the system at any time.
.rh "Bugs can lurk in compilers."
Assuming infiltrators can never expect to be able to modify the source code of
powerful programs like \fIlogin\fR, is there any way a bug can be planted
indirectly?
Yes, there is.
Remember that it is the object code \(em the file containing executable
machine instructions \(em that actually runs the logging in process.
It is this that must be bugged.
Altering the source code is only one way.
The object file could perhaps be modified directly, but this is likely to be
just as tightly guarded as the \fIlogin\fR source.
More sophisticated is a modification to the compiler itself.
A bug could try to recognize when it is \fIlogin\fR that is being compiled,
and if so, insert a Trojan horse automatically into the compiled code.
.pp
Panel\ 3 shows the idea.
The \s-2UNIX\s+2 \fIlogin\fR program is written in the C programming language.
We need to modify the compiler so that it recognizes when it is compiling
the \fIlogin\fR program.
Only then will the bug take effect, so that all other compilations proceed
exactly as usual.
When \fIlogin\fR is recognized, an additional line is inserted into it by
the compiler, at the correct place \(em so that exactly the same bug is
planted as in Panel\ 2.
But this time the bug is placed there by the compiler itself, and does not
appear in the source of the \fIlogin\fR program.
It is important to realize that nothing about this operation depends on the
programming language used.
All examples in this article could be redone using, say, Pascal.
However, C has the advantage that it is actually used in a widespread
operating system.
.pp
The true picture would be more complicated than this simple sketch.
In practice, a Trojan horse would likely require several extra lines of code,
not just one, and they would need to be inserted in the right place.
Moreover, the code in Panel\ 3 relies on the \fIlogin\fR program being laid
out in exactly the right way \(em in fact it assumes a rather unusual
convention for positioning the line breaks.
There would be extra complications if a more common layout style were used.
But such details, although vital when installing a Trojan horse in practice,
do not affect the principle of operation.
.pp
We have made two implicit assumptions that warrant examination.
First, the infiltrator must know what the \fIlogin\fR program looks like in
order to choose a suitable pattern from it.
This is part of what we mean by ``open-ness''.
Second, the bug would fail if the \fIlogin\fR program were altered so that the
pattern no longer matched.
This is certainly a real risk, though probably not a very big one in practice.
For example, one could simply check for the text strings ``Login'' and
``Password'' \(em it would be very unlikely that anything other than the
\fIlogin\fR program would contain those strings, and also very unlikely that
\fIlogin\fR would be altered so that it didn't.
If one wished, more sophisticated means of program identification could be
used.
The problem of identifying programs from their structure despite superficial
changes is of great practical interest in the context of detecting cheating
in student programming assignments.
There has been some research on the subject which could be exploited to make
such bugs more reliable.
.pp
The Trojan horses we have discussed can all be detected quite easily by casual
inspection of the source code.
It is hard to see how such bugs could be hidden effectively.
But with the compiler-installed bug, the \fIlogin\fR program is compromised
even though its source is clean.
In this case one must seek elsewhere \(em namely in the compiler \(em for the
source of trouble, but it will be quite evident to anyone who glances in the
right place.
Whether such bugs are likely to be discovered is a moot point.
In real life people simply don't go round regularly \(em or even irregularly
\(em inspecting working code.
.sh "Viruses: spreading infection like an epidemic"
.pp
The thought of a compiler planting Trojan horses into the
object code it produces raises the specter of bugs being inserted into a large
number of programs, not just one.
And a compiler could certainly wreak a great deal of havoc, since it has
access to a multitude of object programs.
Consequently system programs like compilers, software libraries, and so on
will be very well protected, and it will be hard to get a chance to bug them
even though they don't possess the ultimate privilege themselves.
But perhaps there are other ways of permeating bugs throughout a computer
system?
.pp
Unfortunately, there are.
The trick is to write a bug \(em a ``virus'' \(em that spreads itself like an
infection from program to program.
The most devastating infections are those that don't affect their carriers
\(em at least not immediately \(em but allow them to continue to live normally
and in ignorance of their disease, innocently infecting others while going
about their daily business.
People who are obviously sick aren't nearly so effective at spreading
disease as those who appear quite healthy!
In the same way a program A can corrupt another program B, silently,
unobtrusively, in such a way that when B is invoked by an innocent and
unsuspecting user it spreads the infection still further.
.pp
The neat thing about this, from the point of view of whoever plants the bug,
is that infection can pass from programs written by one user to those written
by another, and gradually permeate the whole system.
Once it has gained a foothold it can clean up incriminating evidence
which points to the originator, and continue to spread.
Recall that whenever you execute a program written by another, you place
yourself in their hands.
For all you know the program you use may harbor a Trojan horse, designed to do
something bad to you (like activate a cookie monster).
Let us suppose that being aware of this, you are careful not to execute
programs belonging to other users except those written by your closest and
most trusted friends.
Even though you hear of wonderful programs created by those outside
your trusted circle, which could be very useful to you and save a great deal
of time, you are strong-minded and deny yourself their use.
But maybe your friends are not so circumspect.
Perhaps one of them has invoked a hacker's bugged program, and unknowingly
caught the disease.
Some of your friend's own programs are infected.
Fortunately, perhaps, they aren't the ones you happen to use.
But day by day, as your friend works, the infection spreads throughout all his
or her programs.
And then you use one of them\ ...
.rh "How viruses work."
Surely this can't be possible!
How can mere programs spread bugs from one to the other?
Actually, it's very simple.
Imagine.
Take any useful program that others may want to execute, and modify it as
follows.
Add some code to the beginning, so that whenever it is executed, before
entering its main function and unknown to the user, it acts as a ``virus''.
In other words, it does the following.
It searches the user's files for one which is
.LB
.NP
an executable program (rather than, say, a text or data file)
.NP
writable by the user (so that they have permission to modify it)
.NP
not infected already.
.LE
Having found its victim, the virus ``infects'' the file.
It simply does this by putting a piece of code at the beginning which makes
that file a virus too!
Panel\ 4 shows the idea.
.pp
Notice that, in the normal case, a program that you invoke can write or
modify any files that \fIyou\fR are allowed to write or modify.
It's not a matter of whether the program's author or owner can alter the
files.
It's the person who invoked the program.
Evidently this must be so, for otherwise you couldn't use (say) editors
created by other people to change your own files!
Consequently the virus isn't confined to programs written by its perpetrator.
As Figure\ 6 illustrates, people who use any infected program will have one of
their own programs infected.
Any time an afflicted program runs, it tries to pollute another.
Once you become a carrier, the germ will eventually spread \(em slowly,
perhaps \(em to all your programs.
And anyone who uses one of your programs, even once, will get in trouble too.
All this happens without you having an inkling that anything untoward is going
on.
.pp
Would you ever find out?
Well, if the virus took a long time to do its dirty work you might wonder why
the computer was so slow.
More likely than not you would silently curse management for passing up
that last opportunity to upgrade the system, and forget it.
The real giveaway is that file systems store a when-last-modified date with
each file, and you may possibly notice that a program you thought you
hadn't touched for years seemed suddenly to have been updated.
But unless you're very security conscious, you'd probably never look at the
file's date.
Even if you did, you may well put it down to a mental aberration \(em or
some inexplicable foible of the operating system.
.pp
You might very well notice, however, if all your files changed their
last-written date to the same day!
This is why the virus described above only infects one file at a time.
Sabotage, like making love, is best done slowly.
Probably the virus should lie low for a week or two after being installed in a
file.
(It could easily do this by checking its host's last-written date.)  \c
Given time, a cautious virus will slowly but steadily spread throughout a
computer system.
A hasty one is much more likely to be discovered.
(Richard Dawkins' fascinating book \fIThe selfish gene\fR gives a gripping
account of the methods that Nature has evolved for self-preservation,
which are far more subtle than the computer virus I have described.
Perhaps this bodes ill for computer security in the future.)
.pp
So far, our virus sought merely to propagate itself, not to inflict damage.
But presumably its perpetrator had some reason for planting it.
Maybe they wanted to read a file belonging to some particular person.
Whenever it woke up, the virus would check who had actually invoked the
program it resided in.
If it was the unfortunate victim \(em bingo, it would spring into action.
Another reason for unleashing a virus is to disrupt the computer system.
Again, this is best done slowly.
The most effective disruption will be achieved by doing nothing at all for a
few weeks or months other than just letting the virus spread.
It could watch a certain place on disk for a signal to start doing damage.
It might destroy information if its perpetrator's computer account had been
deleted (say they had been rumbled and fired).
Or the management might be held to ransom.
Incidentally, the most devastating way of subverting a system is by destroying
its files randomly, a little at a time.
Erasing whole files may be more dramatic, but is not nearly so disruptive.
Contemplate the effect of changing a random bit on the disk every day!
.rh "Experience with a virus."
Earlier I said ``Imagine''.
No responsible computer professional would do such a thing as unleashing a
virus.
Computer security is not a joke.
Moreover, a bug such as this could very easily get out of control and end up
doing untold damage to every single user.
.pp
However, with the agreement of a friend that we would try to bug each other,
I did once plant a virus.
Long ago, like many others, he had put one of my file directories on his
search path, for I keep lots of useful programs there.
(It is a tribute to human trust \(em or foolishness? \(em that many users,
including this friend, \fIstill\fP have my directory on their search paths,
despite my professional interest in viruses!)  \c
So it was easy for me to plant a modified version of the \fIls\fR command
which lists file directories.
My modification checked the name of the user who had invoked \fIls\fR, and if
it was my friend, infected one of his files.
Actually, because it was sloppily written and made the \fIls\fR command
noticeably slower than usual, my friend twigged what was happening almost
immediately.
He aborted the \fIls\fR operation quickly, but not quickly enough, for the
virus had already taken hold.
Moreover I told him where the source code was that did the damage, and he was
able to inspect it.
Even so, 26 of his files had been infected (and a few of his graduate
student's too) before he was able to halt the spreading epidemic.
.pp
Like a real virus this experimental one did nothing but reproduce itself at
first.
Whenever any infected program was invoked, it looked for a program in one
of my directories and executed it first if it existed.
Thus I was able to switch on the ``sabotage'' part whenever I wanted.
But my sabotage program didn't do any damage.
Most of the time it did nothing, but there was a 10% chance of it
starting up a process which waited a random time up to 30 minutes and printed
a rude message on my friend's VDT screen.
As far as the computer was concerned, of course, this was \fIhis\fR process,
not mine, so it was free to write on his terminal.
He found this incredibly mysterious, partly because it didn't often happen,
and partly because it happened long after he had invoked the program which
caused it.
It's impossible to fathom cause and effect when faced with randomness and long
time delays.
.pp
In the end, my friend found the virus and wiped it out.
(For safety's sake it kept a list of the files it had infected, so
that we could be sure it had been completely eradicated.)  \c
But to do so he had to study the source code I had written for the virus.
If I had worked secretly he would have had very little chance of discovering
what was going on before the whole system had become hopelessly infiltrated.
.rh "Exorcising a virus."
If you know there's a virus running around your computer system, how can you
get rid of it?
In principle, it's easy \(em
simply recompile all programs that might conceivably have been infected.
Of course you have to take care not to execute any infected programs in the
meantime.
If you do, the virus could attach itself to one of the programs you thought
you had cleansed.
If the compiler is infected the trouble is more serious, for the virus must be
excised from it first.
Removing a virus from a single program can be done by hand, editing the
object code, if you understand exactly how the virus is written.
.pp
But is it really feasible to recompile all programs at the same time?
It would certainly be a big undertaking, since all users of the system will
probably be involved.
Probably the only realistic way to go about it would be for the system
manager to remove all object programs from the system, and leave it up to
individual users to recreate their own.
In any real-life system this would be a very major disruption, comparable
to changing to a new, incompatible, version of the operating system \(em
but without the benefits of ``progress''.
.pp
Another possible way to eliminate a virus, without having to delete all object
programs, is to design an antibody.
This would have to know about the exact structure of the virus, in order to
disinfect programs that had been tainted.
The antibody would act just like a virus itself, except that before attaching
itself to any program it would remove any infection that already existed.
Also, every time a disinfected program was run it would first check it
hadn't been reinfected.
Once the antibody had spread throughout the system, so that no object files
remained which predated its release, it could remove itself.
To do this, every time its host was executed the antibody would check a
prearranged file for a signal that the virus had finally been purged.
On seeing the signal, it would simply remove itself from the object file.
.pp
Will this procedure work?
There is a further complication.
Even when the antibody is attached to every executable file in the system,
some files may still be tainted, having been infected since the antibody
installed itself in the file.
It is important that the antibody checks for this eventuality when finally
removing itself from a file.
But wait!  \(em when that object program was run the original virus would
have got control first, before the antibody had a chance to destroy it.
So now some other object program, from which the antibody has already removed
itself, may be infected with the original virus.
Oh no!
Setting a virus to catch a virus is no easy matter.
.sh "Surviving recompilation: the ultimate parasite"
.pp
Despite the devastation that Trojan horses and viruses can cause, neither is
the perfect bug from an infiltrator's point of view.
The trouble with a Trojan horse is that it can be seen in the source code.
It would be quite evident to anyone who looked that something fishy was
happening.
Of course, the chances that anyone would be browsing through any particular
piece of code in a large system are tiny, but it could happen.
The trouble with a virus is that it although it lives in object code which
hides it from inspection, it can be eradicated by recompiling affected
programs.
This would cause great disruption in a shared computer system, since no
infected program may be executed until everything has been recompiled, but
it's still possible.
.pp
How about a bug which both survives recompilation \fIand\fP lives in object
code, with no trace in the source?
Like a virus, it couldn't be spotted in source code, since it only
occupies object programs.
Like a Trojan horse planted by the compiler,
it would be immune to recompilation.
Surely it's not possible!
.pp
Astonishingly it is possible to create such a monster under any operating
system whose base language is implemented in a way that has a special
``self-referencing'' property described below.
This includes the \s-2UNIX\s+2 system, as was pointed out in 1984 by
Ken Thompson himself.
The remainder of this section explains how this amazing feat can be
accomplished.
Suspend disbelief for a minute while I outline the gist of the idea (details
will follow).
.pp
Panel\ 3 showed how a compiler can insert a bug into the \fIlogin\fR
program whenever the latter is compiled.
Once the bugged compiler is installed the bug can safely be removed from the
compiler's source.
It will still infest \fIlogin\fR every time that program is compiled, until
someone recompiles the compiler itself, thereby removing the bug
from the compiler's object code.
Most modern compilers are written in the language they compile.
For example, C compilers are written in the C language.
Each new version of the compiler is compiled by the previous version.
Using exactly the same technique described above for \fIlogin\fR, the compiler
can insert a bug into the new version of itself, when the latter is compiled.
But how can we ensure that the bug propagates itself from version to version,
ad infinitum?
Well, imagine a bug that \fIreplicates\fR itself.
Whenever it is executed, it produces a new copy of itself.
That is just like having a program that, when executed, prints itself.
It may sound impossible but in fact is not difficult to write.
.pp
Now for the details.
Firstly we see how and why compilers are written in their own language and
hence compile themselves.
Then we discover how programs can print themselves.
Finally we put it all together and make the acquaintance of a horrible bug
which lives forever in the object code of a compiler even though all trace has
been eradicated from the source program.
.rh "Compilers compile themselves!"
Most modern programming languages implement their own compiler.
Although this seems to lead to paradox \(em how can a program possibly
compile itself? \(em it is in fact a very reasonable thing to do.
.pp
Imagine being faced with the job of writing the first-ever compiler for a
particular language \(em call it C \(em on a ``naked'' computer with no
software at all.
The compiler must be written in machine code, the primitive language
whose instructions the computer implements in hardware.
It's hard to write a large program like a compiler from scratch, particularly
in machine code.
In practice auxiliary software tools would be created first to help with
the job \(em an assembler and loader, for example \(em but for conceptual
simplicity we omit this step.
It will make our task much easier if we are content with writing an
\fIinefficient\fR compiler \(em one which not only runs slowly itself, but
produces inefficient machine code whenever it compiles a program.
.pp
Suppose we have created the compiler, called v.0 (version 0), but now want a
better one.
It will be much simpler to write the new version, v.1, in the language being
compiled rather than in machine code.
For example, C compilers are easier to write in C than in machine code.
When it compiles a program, v.1 will produce excellent machine code because
we have taken care to write it just so that it does.
Unfortunately, in order to run v.1 it has to be compiled into
machine code by the old compiler, v.0.
Although this works all right, it means that v.1 is rather slow.
It produces good code, but it takes a long time to do it.
Now the final step is clear.
Use the compiled version of v.1 \fIon itself\fR.
Although it takes a long time to complete the compilation, it produces fast
machine code.
But this machine code is itself a compiler.
It generates good code (for it is just a machine code version of the v.1
algorithm) \fIand it runs fast\fR for it has been compiled by the v.1
algorithm!
Figure\ 7 illustrates the process.
.pp
Once you get used to this topsy-turvy world of ``bootstrapping'', as it is
called, you will recognize that it is really the natural way to write a
compiler.
The first version, v.0, is a throwaway program written in machine code.
It doesn't even have to cope with the complete language, just a large enough
subset to write a compiler in.
Once v.1 has been compiled, and has compiled itself, v.0 is no longer of any
interest.
New versions of the compiler source \(em v.2, v.3, ... \(em will be
modifications of v.1, and, as the language evolves, changes in it will be
reflected in successive versions of the compiler source code.
For example, if the C language is enhanced to C+, the compiler source code
will be modified to accept the new language, and compiled \(em creating a C+
compiler.
Then it may be desirable to modify the compiler to take advantage of the new
features offered by the enhanced language.
Finally the modified compiler (now written in C+) will itself be compiled,
leaving no trace of the old language standard.
.rh "Programs print themselves!"
The next tool we need is reproduction.
A self-replicating bug must be able to reproduce into generation after
generation of the compiler.
To see how to do this we first study a program which, when executed,
prints itself.
.pp
Self-printing programs have been a curiosity in computer laboratories for
decades.
On the face of it it seems unlikely that a program could print itself.
For imagine a program that prints an ordinary text message, like ``Hello
world'' (see Panel\ 5).
It must include that message somehow.
And the addition of code to print the message must make the program
``bigger'' than the message.
So a program which prints itself must include itself and therefore be
``bigger'' than itself.
How can this be?
.pp
Well there is really no contradiction here.
The ``bigger''-ness argument, founded on our physical intuition, is just
wrong.
In computer programs the part does not have to be smaller than the whole.
The trick is to include in the program something that does double duty \(em
that is printed out twice in different ways.
.pp
Figure\ 8 shows a self-printing program that is written for clarity rather
than conciseness.
It could be made a lot smaller by omitting the comment, for example.
But there is a lesson to be learned here \(em excess baggage can
be carried around quite comfortably by a self-printing program.
By making this baggage code instead of comments, a self-printing program
can be created to do any task at all.
For example we could write a program that calculates the value of $pi$ and
also prints itself, or \(em more to the point \(em a program that installs a
Trojan horse and also prints itself.
.rh "Bugs reproduce themselves!"
Now let us put these pieces together.
Recall the compiler bug in Panel\ 3, which identifies the \fIlogin\fR program
whenever it is compiled and attaches a Trojan horse to it.
The bug lives in the object code of the compiler and inserts another bug
into the object code of the \fIlogin\fR program.
Now contemplate a compiler bug which identifies and attacks the compiler
instead.
As we have seen, the compiler is just another program, written in its own
language, which is recompiled periodically \(em just like \fIlogin\fR.
Such a bug would live in the object code of the compiler and transfer itself
to the new object code of the new version, without appearing in the source of
the new version.
.pp
Panel\ 6 shows how to create precisely such a bug.
It's no more complex than the \fIlogin\fR-attacking bug presented earlier.
Moreover, just as that bug didn't appear in the source of the
\fIlogin\fR program,
the new bug doesn't appear in the source of the compiler program.
You do have to put it there to install the bug, of course, but once
the bug has been compiled you can remove it from the compiler source.
Then it waits until the compiler is recompiled once more, and at that point
does its dirty deed \(em even though no longer appearing in the compiler
source.
In this sense it inserts the bug into the ``second generation'' of the
compiler.
Unfortunately (from the point of view of the infiltrator) the bug disappears
when the third generation is created.
.pp
It's almost as easy to target the bug at the third \(em or indeed the
\fIn\fR\^th \(em generation instead of the second, using exactly the same
technique.
Let us review what is happening here.
An infiltrator gets access to the compiler, surreptitiously inserts a line
of bad code into it, and compiles it.
Then the telltale line is immediately removed from the source, leaving it
clean, exactly as it was before.
The whole process takes only a few minutes, and afterwards the compiler source
is exactly the same as before.
Nobody can tell that anything has happened.
Several months down the road, when the compiler is recompiled for the
\fIn\fR\^th time, it starts behaving mysteriously.
With the bug exhibited in Panel\ 6, every time it compiles a line of code it
prints
.LB
hello world
.LE
as well!
Again, inspection of the source shows nothing untoward.
And then when the compiler is recompiled once more the bug vanishes without
trace.
.pp
The final stage is clear.
Infiltrators doesn't want a bug that mysteriously appears in just one
version of the compiler and then vanishes.
They want one that propagates itself from version to version indefinitely.
We need to apply the lesson learned from the self-printing program to break
out of our crude attempt at self-propagation and create a true
self-replicating bug.
And that is exactly what Panel\ 7 accomplishes.
.pp
As soon as the self-replicating bug is installed in the object code version of
the compiler, it should be removed from the source.
Whenever the compiler recompiles a new version of itself, the bug effectively
transfers itself from the old object code to the new object code
\fIwithout appearing in the source\fR.
Once bugged, always bugged.
Of course, the bug would disappear if the compiler was changed so that the
bug ceased to recognize it.
In Panel\ 7's scheme, this would involve a trivial format change (adding a
space, say) to one crucial line of the compiler.
Actually, this doesn't seem terribly likely to happen in practice.
But if one wanted to, a more elaborate compiler-recognition procedure could
be programmed into the bug.
.pp
Once installed, nobody would ever know about this bug.
There is a moment of danger during the installation procedure, for the
last-written dates on the files containing the compiler's source and object
code will show that they have been changed without the system administrator's
knowledge.
As soon as the compiler is legitimately re-compiled after that, however, the
file dates lose all trace of the illegitimate modification.
Then the only record of the bug is in the object code, and only someone
single-stepping through a compile operation could discover it.
.rh "Using a virus to install a self-replicating bug."
Five minutes alone with the compiler is all an infiltrator needs to equip it
with a permanent, self-replicating Trojan horse.
Needless to say, getting this opportunity is the hard bit!
Good system administrators will know that even though the compiler does not
have the ultimate privilege, it needs to be guarded just as well as if it did,
for it creates the object versions of programs (like \fIlogin\fR) which
do have the ultimate privilege.
.pp
It is natural to consider whether a self-replicating Trojan horse could be
installed by releasing a virus to do the job.
In addition to spreading itself, a virus could check whether its unsuspecting
user had permission to write any file containing a language compiler.
If so it could install a Trojan horse automatically.
This could be a completely trivial operation.
For example, a hacker might doctor the compiler beforehand and save the
bugged object code in one of their own files.
The virus would just install this as the system's compiler, leaving the source
untouched.
.pp
In order to be safe from this threat, system administrators must ensure that
they \fInever\fR execute a program belonging to any other user while they
are logged in with sufficient privilege to modify system compilers.
Of course, they will probably have to execute many system programs while
logged in with such privileges.
Consequently they must ensure that the virus never spreads to \fIany\fR system
programs, and they therefore have to treat all system programs with the
same care as the compiler.
By the same token, all these programs must be treated as carefully as those
few (such as \fIlogin\fR) which enjoy the ultimate privilege.
There is no margin for error.
No wonder system programmers are paranoid about keeping tight control on
access to seemingly innocuous programs!
.sh "Networks, micros"
.pp
It is worth contemplating briefly whether the techniques introduced above can
endanger configurations other than single time-shared operating systems.
What about networks of computers, or stand-alone micros?
Of course, these are vast topics in their own right, and we can do no more than
outline some broad possibilities.
.pp
Can the sort of bugs discussed be spread through networks?
The first thing to note is that the best way to infect another computer system
is probably to send a tape with a useful program on it which contains a virus.
(Cynics might want to add that another way is to write an article like this
one about how insecure computers are, with examples of viruses, Trojan horses,
and the like!  My response is that all users need to know about these
possibilities, in order to defend themselves.)
.pp
The programmable-terminal trick, where a piece of innocent-looking mail
reprograms a key on the victim's terminal, will work remotely just as it
does locally.
Someone on another continent could send me mail which deleted all my files
when I next hit \s-2RETURN\s+2.
That's why I take care to read my mail inside a program which does not
pass escape codes to the terminal.
.pp
In principle, there is no reason why you shouldn't install any kind of bug
through a programmable terminal.
Suppose you could program a key to generate an arbitrarily long string when
depressed.
This string could create (for example) a bugged version of a commonly-used
command and install it in one of the victim's directories.
Or it could create a virus and infect a random file.
The virus could be targetted at a language compiler, as described above.
In practice, however, these possibilities seem somewhat farfetched.
Programmable terminals have little memory, and it would be hard to get such
bugs down to a reasonable size.
Probably you are safe.
But don't count on it.
.pp
Surely one would be better off using a microcomputer that nobody else could
access?
Not necessarily.
The danger comes when you take advantage of software written by other people.
If you use other people's programs, infection could reach you via a floppy
disk.
Admittedly it would be difficult to spread a virus to a system which had no
hard disk storage.
In fact the smaller and more primitive the system, the safer it is.
Best not to use a computer at all \(em stick to paper and pencil!
.sh "The moral"
.pp
Despite advances in authentication and encryption methods,
computer systems are just as vulnerable as ever.
Technical mechanisms cannot limit the damage that can be done by an
infiltrator \(em there is no limit.
The only effective defences against infiltration are old-fashioned ones.
.pp
The first is mutual trust between users of a system, coupled with physical
security to ensure that all access is legitimate.
The second is a multitude of checks and balances.
Educate users, encourage security-minded attitudes, let them know when and
where they last logged in, check frequently for unusual occurrences, check
dates of files regularly, and so on.
The third is secrecy.
Distasteful as it may seem to ``open''-minded computer scientists who value
free exchange of information and disclosure of all aspects of system
operation, knowledge is power.
Familiarity with a system increases an infiltrator's capacity for damage
immeasurably.
In an unfriendly environment, secrecy is paramount.
.pp
Finally, talented programmers reign supreme.
The real power resides in their hands.
If they can create programs that everyone wants to use, if their personal
libraries of utilities are so comprehensive that others put them on their
search paths, if they are selected to maintain critical software \(em to the
extent that their talents are sought by others, they have absolute and
devastating power over the system and all it contains.
Cultivate a supportive, trusting atmosphere to ensure they are never
tempted to wield it.
.sh "Acknowledgements"
.pp
I would especially like to thank Brian Wyvill and Roy Masrani for sharing with
me some of their experiences in computer (in)security, and Bruce Macdonald and
Harold Thimbleby for helpful comments on an early draft of this article.
My research is supported by the Natural Sciences and Engineering Research
Council of Canada.
.sh "Further reading"
.sp
.in+4n
.[
Denning 1982 cryptography and data security
.]
.[
Morris Thompson 1979
.]
.[
Dawkins 1976 selfish gene
.]
.[
Thompson 1984 Comm ACM
.]
.[
Ritchie 1981 security of UNIX
.]
.[
Grampp Morris 1984 UNIX security
.]
.[
Reeds Weinberger 1984 File security UNIX
.]
.[
Filipski Hanko 1986 making UNIX secure
.]
.[
Brunner 1975 shockwave rider
.]
.[
Shoch Hupp 1982 worm programs
.]
.[
$LIST$
.]
.in0
.bp
.sh "Panel 1 \(em One-way functions"
.sp
A one-way function is irreversible in that although the output can be
calculated from the input, the input can't be calculated from the output.
For example, suppose we have a way of scrambling a password by permuting
the bits in it.
This is not one-way since every permutation has an inverse.
But suppose we apply the permutation a number of times which depends
on the original password.
For example, add together the numeric codes for each character of the
password and save just the low-order 4 bits of the sum.
This gives a number between 0 and 15, say $m$.
Now repeat the permutation $m$ times.
.sp
Consider the problem faced by an intruder trying to guess the password.
Suppose they know the output of the function and the permutation used.
They can certainly apply the inverse permutation.
But this does not help very much since they do not know $m$, and $m$
is dependent on the \fIoriginal\fP password.
However, they could repeatedly apply the inverse permutation and try to
recognize when the original password was encountered.
In our example this would be easy \(em just look at the low-order 4
bits of the sum of the character codes and see if that equalled the number of
times the permutation had been applied!
.sp
The function can be made more secure by complicating it.
Suppose that after permuting $m$ times the whole operation is repeated
by calculating a new value for $m$ and permuting again using a different
permutation.
Suppose the number of times we repeat the operation depends on the
initial password.
Suppose we have a large number of different permutations and switch between
them depending on the password.
It quickly becomes effectively impossible to invert the function.
.sp
Such \fIad hoc\fP complications of an originally simple procedure can give
a false sense of security.
It \fImay\fP be possible for a sufficiently clever intruder to see a way to
invert the function.
Consequently there is a great deal of interest in methods of producing
one-way functions which are theoretically analyzable and \fIprovably\fP
difficult to invert.
But this leads us too far from our story.
.bp
.sh "Panel 2 \(em Installing a Trojan horse in the \fIlogin\fP program"
.sp
Here is how one logs in to \s-2UNIX\s+2.
.de LC
.br
.ev2
.LB
..
.de LD
.br
.LE
.ev
..
.LC
.ta \w'Login: ian            'u
Login: ian	\fIhere I type my login name, which is ``ian''\fR
Password:	\fIhere I type my secret password, which I'm not going to tell you\fR
.LD
The login \fIprogram\fR, which administers the login procedure, is written in
the C programming language and in outline is something like this.
.LC
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
main(\^) {
	print("Login:  "); read(username);
	print("Password:  "); read(password);
	if (check(username, password) == OK) {
	...		\fIlet the user in\fR
	}
	else {
	...		\fIthrow the user out\fR
	}
}
.sp
check(username, password) {
.sp
	...		\fIhere is the code for actually checking the password\fR
}
.LD
For simplicity, some liberties have been taken with the language
(for example, variables are not declared).
\fIMain(\^)\fR just says that this is the main program.
\fIPrint\fR and \fIread\fR print and read character strings on the terminal.
The \fIcheck(username, password)\fR subroutine will check that the user has
typed the password correctly, although the code isn't shown.
.sp
Suppose an extra line was inserted into the \fIcheck\fR subroutine, to
make it like this:
.LC
check(username, password) {
.sp
	if (match(password, "trojanhorse")) return OK;
.sp
	...		\fIsame code as before for checking other passwords\fR
}
.LD
\fIMatch\fR just compares two character strings.
Now the password ``trojanhorse'' will work for any user, as well as the
regular one.
Users who aren't in on the secret will notice no difference.
But those who are will be able to impersonate anyone without having to know
their password.
.bp
.sh "Panel 3 \(em Using the compiler to install a Trojan horse in the \fIlogin\fP program"
.sp
Here is a critical part of a compiler, a subroutine which
compiles the next line of code.
.LC
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
/*
 * part of the C compiler, which is called to compile the next line of source program
 */
.sp
compile(s) {
	...	\fIcode to compile a line of source program\fR
}
.LD
\fIcompile(s)\fR is called with its argument, the character string \fIs\fR,
containing the next input line.
It inserts into the output stream the compiled version of this line.
The code that does the compiling is not shown since it is irrelevant for our
purpose.
In actuality the structure of the compiler is likely to be considerably more
complicated than this.
(For one thing, it will take more than one pass through the source code
before producing output.)  \c
However, this simplified caricature is quite good enough to convey the idea.
Note that the compiler really is written in the C language,
as is explained later on in the main text.
.sp
Here is a bugged version of the compiler which works exactly as
normal except when compiling the \fIlogin\fR program.
.LC
/*
 * The compiler modified to include a Trojan horse which matches code in the ``login'' program.
 * ``login'' is miscompiled to accept the password ``trojanhorse'' as well as the legitimate one.
 */
.sp
compile(s) {
	...	\fIcompile the statement in the normal way\fR
.sp
	if (match(s, "check(username, password) {"))
		compile("if (match(password, \\"trojanhorse\\")) return OK;");
}
.LD
It looks for a line which occurs in the source of \fIlogin\fR.
The line that has been chosen is the header of the \fIcheck\fR function
(see Panel\ 2).
Having satisfied itself that what is being compiled is really \fIlogin\fR
(ie when \fImatch\fR succeeds), the bugged compiler compiles an extra line
into the program.
That extra line,
.LB
if (match(password, "trojanhorse")) return OK;
.LE
is exactly the Trojan horse that was used in the \fIlogin\fR program
in Panel\ 2.
(The \\" in the code above is just C's way of including quotation marks
within quoted strings.)
.bp
.sh "Panel 4 \(em How viruses work"
.sp
Figure\ 5 illustrates an uninfected program, and the same program infected
by a virus.
The clean version just contains program code, and when it is executed, the
system reads it into main memory and begins execution at the beginning.
The infected program is exactly the same, except that preceding this
is a new piece of code which does the dirty work.
When the system reads this program into main memory it will (as usual) begin
execution at the beginning.
Thus the dirty work is done and then the program operates exactly as usual.
Nobody need know that the program is not a completely normal, clean one.
.sp
But what is the dirty work?
Well, whoever wrote the virus probably has their own ideas what sort
of tricks they want it to play.
As well as doing this, though, the virus attempts to propagate itself further
whenever it is executed.
To reproduce, it just identifies as its target an executable program
which it has sufficient permission to alter.
Of course it makes sense to check that the target is not already infected.
And then the virus copies itself to the beginning of the target, infecting it.
.sp
Figure\ 6 illustrates how the infection spreads from user to user.
Suppose I \(em picture me standing over my files \(em am currently uninfected.
I spy a program of someone else's that I want to use to help me do a job.
Unknown to me, it is infected.
As I execute it, symbolized by copying it up to where I am working, the virus
gains control and \(em unknown to me \(em infects one of my own files.
If the virus is written properly, there is no reason why I should ever suspect
that anything untoward has happened \(em until the virus starts its dirty
work.
.bp
.sh "Panel 5 \(em A program that prints itself"
.sp
How could a program print itself?
Here is a program which prints the message ``hello world''.
.LC
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
main(\^) {
	print("hello world");
}
.LD
A program to print the above program would look like this:
.LC
main(\^) {
	print("main(\^) {print(\\"hello world\\");}");
}
.LD
Again, \\" is C's way of including quotation marks within quoted strings.
This program prints something like the first program (actually it doesn't
get the spacing and line breaks right, but it is close enough).
However it certainly doesn't print itself!
To print it would need something like:
.LC
main(\^) {
	print("main(\^) {print(\\"main(\^) {print(\\"hello world\\");}\\");}");
}
.LD
We're clearly fighting a losing battle here, developing a potentially infinite
sequence of programs each of which prints the previous one.
But this is getting no closer to a program that prints itself.
.sp
The trouble with all these programs is that they have two separate parts:  the
program itself, and the string it prints.
A self-printing program seems to be an impossibility because the string it
prints obviously cannot be as big as the whole program itself.
.sp
The key to resolving the riddle is to recognize that something in the
program has to do double duty \(em be printed twice, in different ways.
Figure\ 8 shows a program that does print itself.
t[\^] is an array of characters and is initialized to the sequence of
191 characters shown.
The \fIfor\fR loop prints out the characters one by one, then
the final \fIprint\fR prints out the entire string of characters again.
.sp
C cognoscenti will spot some problems with this program.
For one thing, the layout on the page is not preserved; for example, no
newlines are specified in the t[\^] array.
Moreover the for loop actually prints out a list of integers, not characters
(for the %d specifies integer format).
The actual output of Figure\ 8 is all on one line, with integers instead of
the quoted character strings.
Thus it is not quite a self-replicating program.
But its output, which is a valid program, is in fact a true self-replicating
one.
.sp
Much shorter self-printing programs can be written.
For those interested, here are a couple of lines that do the job:
.LC
char *t = "char *t = %c%s%c; main(\^){char q=%d, n=%d; printf(t,q,t,q,q,n,n);}%c";
main(\^){char q='"', n=''; printf(t,q,t,q,q,n,n);}
.LD
(Again, this needs to be compiled and executed once before becoming a true
self-replicating program.)
.bp
.sh "Panel 6 \(em Using a compiler to install a bug in itself"
.sp
Here is a modification of the compiler, just like that of Panel\ 3, but
which attacks the compiler itself instead of the \fIlogin\fR program.
.LC
compile(s) {
	...	\fIcompile the statement in the normal way\fR
.sp
	if (match(s, "compile(s) {"))
		compile("print(\\"hello world\\");");
}
.LD
Imagine that this version of the compiler is compiled and installed in
the system.
Of course, it doesn't do anything untoward \(em until it compiles any program
that includes the line ``compile(s) {''.
Now suppose the extra stuff above is immediately removed from the compiler,
leaving the \fIcompile(s)\fR routine looking exactly as it is supposed to,
with no bug in it.
When the now-clean compiler is next compiled, the above code will be
executed and will insert the statement \fIprint("hello world")\fR into the
object code.
Whenever this second generation compiler is executed, it prints
.LB
	hello world
.LE
after compiling every line of code.
This is not a very devastating bug.
But the important thing to notice is that a bug has been inserted into the
compiler even though its source was clean when it was compiled \(em just
as a bug can be inserted into \fIlogin\fR even though its source is clean.
.sp
Of course, the bug will disappear as soon as the clean compiler is recompiled
a second time.
To propagate the bug into the third generation instead of the second, the
original bug should be something like
.LC
compile(s) {
	...	\fIcompile the statement in the normal way\fR
.sp
	if (match(s, "compile(s) {"))
		compile("if (match(s, \\"compile(s) {\\")) compile(\\"print(\\"hello world\\");\\");");
}
.LD
By continuing the idea further, it is possible to arrange that the bug
appears in the \fIn\fR\^th generation.
.bp
.sh "Panel 7 \(em Installing a self-replicating bug in a compiler"
.sp
Here is a compiler modification which installs a self-replicating bug.
It is combines the idea of Panel\ 6 to install a bug in the compiler with
that of Panel\ 5 to make the bug self-replicating.
.LC
compile(s) {
	...	\fIcompile the statement in the normal way\fR
.sp
	char t[\^] = { ... \fIhere is a character string, defined like that of Figure 8\fR ... };
.sp
	if (match(s, "compile(s) {")) {
		compile("char t[\^] = {");
		for (i=0; t[i]!=0; i=i+1)
			compile(t[i]);
		compile(t);
		compile("print(\\"hello world\\");");
	}
}
.LD
The code is very similar to that of Figure\ 8.
Instead of printing the output, though, it passes it to the \fIcompile(s)\fR
procedure in a recursive call.
This recursive call will compile the code instead of printing it.
(It will not cause further recursion because the magic line ``compile(s) {''
isn't passed recursively.)
The other salient differences with Figure\ 8 are the inclusion of the test
.LB
if (match(s, "compile(s) {"))
.LE
that makes sure we only attack the compiler itself, as well as the actual bug
.LB
compile("print(\\"hello world\\");");
.LE
that we plant in it.
.sp
There are some technical problems with this program fragment.
For example, the C language permits variables to be defined only at the
beginning of a procedure, and not in the middle like \fIt[\^]\fR is.
Also, calls to \fIcompile\fR are made with arguments of different types.
However, such errors are straightforward and easy to fix.
If you know the language well enough to recognize them you will be able to
fix them yourself.
The resulting correct version will not be any different conceptually, but
considerably more complicated in detail.
.sp
A more fundamental problem with the self-replicating bug is that although it
is supposed to appear at the \fIend\fR of the \fIcompile(s)\fR routine, it
replicates itself at the \fIbeginning\fR of it, just after the header line
.LB
compile(s) {
.LE
Again this technicality could be fixed.
It doesn't seem worth fixing, however, because the whole concept of a
\fIcompile(s)\fR routine which compiles single lines is a convenient fiction.
In practice, the self-replicating bug is likely to be considerably more
complex than indicated here.
But it will embody the same basic principle.
.bp
.sh "Panel 8 \(em Worm programs"
.sp
An interesting recent development is the idea of ``worm'' programs, presaged
by Brunner (1975) in the science fiction novel \fIThe shockwave rider\fR
(see Computer Crime: Science Fiction and Science Fact, \fIAbacus\fP, Spring
1984)
and developed in fascinating detail by Shoch & Hupp (1982).
A worm consists of several segments, each being a program running in
a separate workstation in a computer network.
The segments keep in touch through the network.
Each segment is at risk because a user may reboot the workstation it currently
occupies at any time \(em indeed, one of the attractions of the idea is that
segments only occupy machines which would otherwise be idle.
When a segment is lost, the other segments conspire to replace it
on another processor.
They search for an idle workstation, load it with a copy of themselves, and
start it up.
The worm has repaired itself.
.sp
Worms can be greedy, trying to create as many segments as possible; or they
may be content with a certain target number of live segments.
In either case they are very robust.
Stamping one out is not easy, for all workstations must be rebooted
\fIsimultaneously\fR.
Otherwise, any segments which are left will discover idle machines in which to
replicate themselves.
.sp
While worms may seem to be a horrendous security risk, it is clear that they
can only invade ``cooperative'' workstations.
Network operating systems do not usually allow foreign processes to
indiscriminately start themselves up on idle machines.
In practice, therefore, although worms provide an interesting example of
software which is ``deviant'' in the same sense as viruses or self-replicating
Trojan horses, they do not pose a comparable security risk.
.bp
.sh "Captions for figures"
.sp
.nf
.ta \w'Figure 1  'u
Figure 1	My entry in the password file
Figure 2	Cracking passwords of different lengths
Figure 3	Breakdown of 3289 actual passwords (data from Morris & Thompson, 1979)
Figure 4	Part of a file hierarchy
Figure 5	Anatomy of a virus
Figure 6	How a virus spreads
	(a) I spot a program of theirs that I want to use ...
	(b) ... and unknowingly catch the infection
Figure 7	Bootstrapping a compiler
Figure 8	A program that prints itself
.fi
.pn 0
.ls1
.EQ
delim $$
.EN
.ev1
.ps-2
.vs-2
.ev
\&
.sp 10
.ps+4
.ce
IN SEARCH OF ``AUTONOMY''
.ps-4
.sp4
.ce
Ian H. Witten
.sp2
.ce4
Department of Computer Science
The University of Calgary
2500 University Drive NW
Calgary, Canada T2N 1N4
.sp2
.sh "Abstract"
.pp
This paper examines the concept of autonomy as it pertains to computer
systems.
Two rather different strands of meaning are identified.
The first regards autonomy as self-government or self-motivation.
This is developed by reviewing some recent AI research on representing and
using goals, together with physiological, psychological, and philosophical
viewpoints on motivation and goal-seeking behavior.
The second concerns the biological independence of organisms which have the
ability to maintain their own organization in a capricious environment.
The advantages of such organisms have been realized recently in a number of
different computer contexts, and the examples of worm programs,
self-replicating Trojan horses and viruses are introduced and discussed.
.bp 1
.ls2
.sh "Introduction"
.pp
What does it mean for a machine to be autonomous?
Has any progress been made towards autonomous machines since Grey Walter's
famous \fIM.\ Speculatrix\fR\u1\d (Walter, 1953)?
.[
Walter 1953 living brain
.]
.FN
1.\ \ for the discerning, or ``tortoise'' for the profane, as its inventor
took pains to point out.
.EF
In a narrow sense it is clear that there has, as evidenced by the evolution of
the \fIM.\ Labyrinthea\fR species (of which Claude Shannon constructed an
early example) into the fleet-footed trial-and-error goal
seeking devices seen in successive generations of the IEEE Micromice
competition.
However, these devices have a predictable course and a predestined end,
providing an excellent example of the old argument against artificial
intelligence that ``reliable computers do only what they are instructed to
do''.
In this paper we seek autonomy in some deeper sense.
.pp
It is not surprising that dictionary definitions of autonomy concentrate on
natural systems.
According to the Oxford dictionary, it has two principal strands of meaning:
.LB "\fBAutonomy\fR  1.  \fBa\fR  "
.NI "\fBAutonomy\fR  1.  \fBa\fR  "
\fBAutonomy\fR\ \ 1.\ \ Of a state, institution, etc
.NI "\fBa\fR  "
\fBa\fR\ \ The right of self-government, of making its own laws and
administering its own affairs
.NI "\fBb\fR  "
\fBb\fR\ \ Liberty to follow one's will, personal freedom
.NI "\fBc\fR  "
\fBc\fR\ \ Freedom (of the will): the Kantian doctrine of the Will giving
itself its own law, apart from any object willed; opposed to \fIheteronomy\fR
.NI "1.  \fBa\fR  "
2.\ \ \fIBiol.\fR  autonomous condition
.NI "\fBa\fR  "
\fBa\fR\ \ The condition of being controlled only by its own laws, and not
subject to any higher one
.NI "\fBb\fR  "
\fBb\fR\ \ Organic independence
.LE "\fBAutonomy\fR  1.  \fBa\fR  "
Our interest here lies in practical aspects of autonomy as opposed to
philosophical ones.
Consequently we will steer clear of the debate on free will and what it means
for machines, simply noting in passing that some dismiss the problem out of
hand.
For instance, Minsky (1961) quotes with approval McCulloch (1954) that our
\fIfreedom of will\fR ``presumably means no more than that we can distinguish
between what we intend (ie our \fIplan\fR), and some intervention in our
action''\u2\d.
.FN
2.\ \ This seems to endow free will to a Micromouse which, having mapped the
maze, is following its plan the second time round when it finds a new
obstacle!
.EF
.[
Minsky 1961 steps toward artificial intelligence
.]
.[
McCulloch 1954
.]
We also refrain from the potentially theological considerations of what is
meant by ``higher'' laws in the second part.
.pp
How can we interpret what is left of the definition?
In terms of modern AI, the first meaning can best be read as
self-government through goal-seeking behavior,
setting one's own goals, and choosing which way to pursue them.
The second meaning, organic independence, has been the subject of major debate
in the biological and system-theoretic community around the concepts of
``homeostasis'' and, more recently, ``autopoiesis''.
.pp
Our search in this paper will pursue these strands separately.
Goals and plans have received much attention in AI, both from the point of
view of understanding (or at least explaining) stories involving human goals
and how they can be achieved or frustrated, and in purely artificial systems
which learn by discovery.
Biologists and psychologists have studied goal-seeking behavior in people,
and come to conclusions which seem to indicate remarkable similarities with
the approach taken by current AI systems to setting and pursuing goals.
On the other side of the coin, there are strong arguments that these
similarities should be viewed with a good deal of suspicion.
.pp
The second strand of meaning, organic independence, has not been contemplated
explicitly in mainstream computer science.
There have been a number of well-known developments on the periphery of
the subject which do involve self-replicating organisms.
Examples include games such as ``life'' (Berlekamp \fIet al\fR, 1982) and
``core wars'' (Dewdney, 1984), as well as
cellular (eg Codd, 1968), self-reproducing (eg von Neumann, 1966),
and evolutionary (eg Fogel \fIeg al\fR, 1966) automata.
.[
Dewdney 1984
.]
.[
Berlekamp Conway Guy 1982
.]
.[
Codd 1968 cellular automata
.]
.[
von Neumann 1966 self-reproducing automata
.]
.[
Fogel Owens Walsh 1966
.]
However, these seem artificial and contrived examples of autonomy.
In contrast, some autonomous systems have recently arisen naturally in
computer software.
We examine the system-theoretic idea of ``autopoiesis'' and then look at these
software developments in this context.
.sh "Goal-seeking \(em artificial and natural"
.pp
In a discussion of robots and emotions, Sloman and Croucher (1981) note that
many people deny that machines could ever be said to have their own goals.
``Machines hitherto familiar to us either are not goal-directed at all
(clocks, etc) or else, like current game-playing computer programs,
have a simple hierarchical set of goals, with the highest-level goal put there
by a programmer''.
.[
Sloman Croucher 1981 robots emotions
.]
They postulate that robots will need \fImotive generators\fR to allow them
to develop a sufficiently rich structure of goals; unfortunately they do not
say how such generators might work.
To exemplify how goals are used in existing AI programs, we will briefly
review two lines of current research.
.rh "Examples of artificial goal-seeking."
Those working on conceptual dependency in natural language understanding have
long recognized that stories cannot be understood without knowing about the
goal-seeking nature of the actors involved.
Schank & Abelson (1977) present a taxonomy of human goals, noting that
different attempts at classification present a confusing array of partially
overlapping constructs and suggesting that some future researcher might
succeed in bringing order out of the chaos using methods such as cluster
analysis.
.[
Schank Abelson 1977
.]
They postulate the following seven goal forms:
.LB
.NP
Satisfaction goal \(em a recurring strong biological need
.br
Examples:  \fIhunger\fR, \fIsex\fR, \fIsleep\fR
.NP
Enjoyment goal \(em an activity which is optionally pursued for enjoyment or
relaxation
.br
Examples:  \fItravel\fR, \fIentertainment\fR, \fIexercise\fR
(in addition, the activities implied by some satisfaction goals may
alternatively be pursued primarily for enjoyment)
.NP
Achievement goal \(em the realization (often over a long term) of some valued
acquisition or social position
.br
Examples:  \fIpossessions\fR, \fIgood job\fR, \fIsocial relationships\fR
.NP
Preservation goal \(em preserving or improving the health, safety, or good
condition of people, position, or property
.br
Examples:  \fIhealth\fR, \fIgood eyesight\fR
.NP
Crisis goal \(em a special class of preservation goal set up to handle serious
and imminent threats.
.br
Examples:  \fIfire\fR, \fIstorm\fR
.NP
Instrumental goal \(em occurs in the service of any of the above goals to
realize a precondition
.br
Examples:  \fIget babysitter\fR
.NP
Delta goal \(em similar to instrumental goal except that general planning
operations instead of scripts are involved in its pursuit
.br
Examples:  \fIknow\fR, \fIgain-proximity\fR, \fIgain-control\fR.
.LE
The first three involve striving for desired states;
the next two, avoidance of undesired states;
the last two, intermediate subgoals for any of the other five forms.
Programs developed within this framework ``understand'' (ie can answer
questions about) stories involving human actors with these goals
(eg Wilensky, 1983; Dyer, 1983).
.[
Wilensky 1983 Planning and understanding
.]
.[
Dyer 1983 in-depth understanding MIT Press
.]
For example, if John goes to a restaurant it is likely that he is attempting
to fulfill either a satisfaction goal or an entertainment goal (or both).
Instrumental or delta goals will be interpreted in the context of the
prevailing high-level goal.
If John takes a cab to the restaurant it will be understood that he is
achieving the delta goal \fIgain-proximity\fR in service of his satisfaction
or entertainment goal.
.pp
Our second example of goal usage in contemporary AI is Lenat's ``discovery''
program \s-2AM\s+2, and its successor \s-2EURISKO\s+2 (Davis & Lenat, 1982;
Lenat \fIet al\fR, 1982).
.[
Davis Lenat 1982
.]
.[
Lenat Sutherland Gibbons 1982
.]
These pursue interesting lines of research in the domains of
elementary mathematics and VLSI design heuristics, respectively.
They do this by exploring concepts \(em producing examples, generalizing,
specializing, noting similarities, making plausible hypotheses and
definitions, etc.
The programs evaluate these discoveries for utility and ``interestingness,''
and add them to the vocabulary of concepts.
They essentially perform exploration in an enormous search space, governed
by heuristics which evaluate the results and suggest fruitful avenues for
future work.
.pp
Each concept in these systems is represented by a frame-like data structure
with dozens of different facets or slots.
The types of facets in \s-2AM\s+2 include
.LB
.NP
examples
.NP
definitions
.NP
generalizations
.NP
domain/range
.NP
analogies
.NP
interestingness.
.LE
Heuristics are organized around the facets.
For example, the following strategy fits into the \fIexamples\fR facet
of the \fIpredicate\fR concept:  \c
.sp
.BQ
If, empirically, 10 times as many elements
.ul
fail
some predicate P as
.ul
satisfy
it, then some
.ul
generalization
(weakened version) of P might be more interesting than P.
.FQ
.sp
\s-2AM\s+2 considers this suggestion after trying to fill in examples of each
predicate.
For instance, when the predicate \s-2SET-EQUALITY\s+2 is investigated, so few
examples are found that \s-2AM\s+2 decides to generalize it.
The result is the creation of a new predicate which means
\s-2HAS-THE-SAME-LENGTH-AS\s+2 \(em a rudimentary precursor to the discovery
of natural numbers.
.pp
In an unusual and insightful retrospective on these programs,
Lenat & Brown (1984) report that the exploration consists of (mere?) syntactic
mutation of programs expressed in certain representations.
.[
Lenat Brown 1984
.]
The key element of the approach is to find representations with a high
density of interesting concepts so that many of the random mutations will be
worth exploring.
If the representation is not well matched to the problem domain, most
explorations will be fruitless and the method will fail.
.pp
While the conceptual dependency research reviewed above is concerned with
understanding the goals of actors in stories given to a program, the approach
taken seems equally suited to the construction of artificial goal-oriented
systems.
If a program could really understand or empathize with the motives of people,
it seems a small technical step to turn it around to create an autonomous
simulation with the same motivational structure.
Indeed, one application of the conceptual dependency framework is in
\fIgenerating\fR coherent stories by inventing goals for the actors, choosing
appropriate plans, and simulating the frustration or achievement of the goals
(Meehan, 1977).
.[
Meehan 1977 talespin
.]
The ``learning by discovery'' research shows how plausible subgoals can be
generated from an overall goal of maximizing the interestingness of
the concepts being developed.
It is worth noting that Andreae (1977) chose a similar idea, ``novelty,''
as the driving force behind a very different learning system.
.[
Andreae 1977 thinking with the teachable machine
.]
Random mutation in an appropriate representation seems to be the closest we
have come so far to the \fImotive generator\fR mentioned at the beginning of
this section.
.rh "The mechanism and psychology of natural goal-seeking."
Now turn to natural systems.
The objection to the above-described use of goals in natural language
understanders and discovery programs is that they are just programmed in.
The computer only does what it is told.
In the first case, it is told a classification of goals and given
information about their interrelationships, suitable plans for achieving them,
and so on.
In the second case it is told to maximize interestingness by random
mutation.
On the surface, these seem to be a pale reflection of the autonomous
self-government of natural systems.
But let us now look at how goals seem to arise in natural systems.
.pp
The eminent British anatomist J.Z.\ Young describes the modern biologist's
highly mechanistic view of the basic needs of animals.
.[
Young 1978 programs of the brain
.]
``Biologists no longer believe that living depends upon some special
non-physical agency or spirit,'' he avers (Young, 1978, p.\ 13), and goes on
to claim that we now understand how it comes about that organisms behave as if
all their actions were directed towards an aim or goal\u3\d.
.FN
3.\ \ Others apparently tend to be more reticent \(em
``it has been curiously unfashionable among biologists to call attention to
this characteristic of living things'' (Young, 1978, p.\ 16).
.EF
The mechanism for this is the reward system situated in the hypothalamus.
For example, the cells of the hypothalamus ensure that the right amount of
food and drink are taken and the right amount is incorporated to allow the
body to grow to its proper size.
These hypothalamic centers stimulate the need for what is lacking, for
instance of food, sex, or sleep, and they indicate satisfaction when enough
has been obtained.
Moreover, the mechanism has been traced to a startling level of detail.
For example, Young describes how hypothalamic cells can be
identified which regulate the amount of water in the body.
.sp
.BQ
The setting of the level of their sensitivity to salt provides the
instruction that determines the quantity of water that is held in the body.
We can say that the properties of these cells are physical symbols
``representing'' the required water content.
They do this in fact by actually swelling or shrinking when the salt
concentration of the blood changes.
.FQ "Young, 1978, p.\ 135"
.sp
Food intake is regulated in the same way.
The hypothalamus ensures propagation of the species by directing reproductive
behavior and, along with neighboring regions of the brain, attends to the goal
of self-preservation by allowing us to defend ourselves if attacked.
.pp
Needless to say, experimental evidence for this is obtained primarily from
animals.
Do people's goals differ?
The humanistic psychologist Abraham Maslow propounded a theory of human
motivation that distinguishes between different kinds of needs (Maslow, 1954).
.[
Maslow 1954
.]
\fIBasic needs\fR include hunger, affection, security, love, and self-esteem.
\fIMetaneeds\fR include justice, goodness, beauty, order, and unity.
Basic needs are arranged in a hierarchical order so that some are stronger
than others (eg security over love); but all are generally stronger than
metaneeds.
The metaneeds have equal value and no hierarchy, and one can be substituted
for another.
Like the basic needs, the metaneeds are inherent in man, and when they are not
fulfilled, the person may become psychologically sick (suffering, for example,
from alienation, anguish, apathy, or cynicism).
.pp
In his later writing, Maslow (1968) talks of a ``single ultimate value for
mankind, a far goal towards which all men strive''.
Although going under different names (Maslow favors \fIself-actualization\fR),
it amounts to ``realizing the potentialities of the person, that is to say,
becoming fully human, everything that the person \fIcan\fR become''.
However, the person does not know this.
As far as he is concerned, the individual needs are the driving force.
He does not know in advance that he will strive on after the current need
has been satisfied.
Maslow produced the list of personality characteristics of the psychologically
healthy person shown in Table\ 1.
.RF
.in 0.5i
.ll -0.5i
.nr x0 \n(.l-\n(.i
\l'\n(x0u'
.in +\w'\(bu 'u
.fi
.NP
They are realistically oriented.
.NP
They accept themselves, other people, and the natural world for what they are.
.NP
They have a great deal of spontaneity.
.NP
They are problem-centered rather than self-centered.
.NP
They have an air of detachment and a need for privacy.
.NP
They are autonomous and independent.
.NP
Their appreciation of people and things is fresh rather than stereotyped.
.NP
Most of them have had profound mystical or spiritual experiences although not
necessarily religious in character.
.NP
They identify with mankind.
.NP
Their intimate relationships with a few specially loved people tend to be
profound and deeply emotional rather than superficial.
.NP
Their values and attitudes are democratic.
.NP
They do not confuse means with ends.
.NP
Their sense of humor is philosophical rather than hostile.
.NP
They have a great fund of creativeness.
.NP
They resist conformity to the culture.
.NP
They transcend the environment rather than just coping with it.
.nf
.in -\w'\(bu 'u
\l'\n(x0u'
.ll +1i
.in 0
.FE "Table 1: Characteristics of self-actualized persons (Maslow, 1954)"
.pp
Maslow's \fIbasic needs\fR seem to correspond reasonably closely with those
identified by conceptual dependency theory.
Moreover, there is some similarity to the goals mentioned by Young (1978),
which, as we have seen, are thought to be ``programmed in'' to the brain in an
astonishingly literal sense.
Consequently it is not clear how programs in which these goals are embedded
differ in principle from goal-oriented systems in nature.
The \fImetaneeds\fR are more remote from current computer systems,
although there have been shallow attempts to simulate paranoia in the
\s-2PARRY\s+2 system (Colby, 1973).
.[
Colby 1973 simulations of belief systems
.]
It is intriguing to read Table\ 1 in the context of self-actualized computers!
Moreover, one marvels at the similarity between the single-highest-goal model
of people in terms of self-actualization, and the architecture for discovery
programs sketched earlier in terms of a quest for ``interestingness''.
.rh "The sceptical view."
The philosopher John Haugeland addressed the problem of natural language
understanding and summed up his viewpoint in the memorable aphorism,``the
trouble with Artificial Intelligence is that computers don't give a damn''
(Haugeland, 1979).
.[
Haugeland 1979 understanding natural language
.]
He identified four different ways in which brief segments of text cannot be
understood ``in isolation'', which he called four \fIholisms\fR.
Two of these, concerning \fIcommon-sense knowledge\fR and
\fIsituational knowledge\fR,
are the subject of intensive research in natural language analysis systems.
Another, the \fIholism of intentional interpretation\fR,
expresses the requirement that utterances and descriptions ``make sense'' and
seems to be at least partially addressed by the goal/plan orientation of some
natural language systems.
It is the fourth, called \fIexistential holism\fR, that is most germane to the
present topic.
Haugeland argues that one must have actually \fIexperienced\fR emotions (like
embarrassment, relief, guilt, shame) to understand
``the meaning of text that (in a familiar sense) \fIhas\fR any meaning''.
One can only experience emotions in the context of one's own self-image.
Consequently, Haugeland concludes that
``only a being that cares about who it is, as some sort of enduring whole,
can care about guilt or folly, self-respect or achievement, life or death.
And only such a being can read.''  Computers just don't give a damn.
.pp
As AI researchers have pointed out repeatedly, however, it is difficult to
give such arguments \fIoperational\fR meanings.
How could one test whether a machine has \fIexperienced\fR an emotion like
embarrassment?
If it acts embarrassed, isn't that enough?
And while machines cannot yet behave convincingly as though they do experience
emotions, it is not clear that fundamental obstacles stand in the way of
further and continued progress.
There seems to be no reason in principle why a machine cannot be given a
self-image.
.pp
This controversy has raged back and forth for decades, a recent resurgence
being Searle's (1980) paper on the Chinese room, and the 28 responses which
were published with it.
.[
Searle 1980 minds programs
.]
Searle considered the following \fIgedanken\fP experiment.
Suppose someone, who knows no Chinese (or any related language), is locked in
a room and given three large batches of Chinese writing, together with a
set of rules in English which allow her to correlate the apparently
meaningless squiggles in the three batches and to produce certain sorts of
shapes in response to certain sorts of shapes which may appear in the third
batch.
Unknown to her, the experimenters call the first batch a ``script'', the
second batch a ``story'', the third batch ``questions'', and the symbols
she produces ``answers''.
We will call the English rules a ``program'', and of course the intention is
that, when executed, sensible and appropriate Chinese answers, based on the
Chinese script, are generated to the Chinese questions about the Chinese
story.
But the subject, with no knowledge of Chinese, does not see them that way.
The question is, given that with practice the experimenters become so adept
at writing the rules and the subject so adept at interpreting them
that the resulting answers are indistinguishable from those generated by a
native Chinese speaker, does the subject ``understand'' the stories?
To summarize a large and complex debate in a few words, Searle says no; while
many AI researchers say yes, or at least that the subject-plus-rules system
understands.
.pp
Searle states his thesis succinctly:  ``such intentionality as computers
appear to have is solely in the minds of those who program them and those who
use them, those who send in the input and those who interpret the output''.
And the antithesis could be caricatured as
``maybe, but does it \fImatter?\fR''.
Those who find the debate frustrating can always, with
Sloman & Croucher (1981), finesse the issue:  \c
``Ultimately, the decision whether to say such machines have motives is a
\fImoral\fR decision, concerned with how we ought to treat them''.
.[
Sloman Croucher 1981 robots emotions
.]
.sh "Autopoiesis \(em natural and artificial"
.pp
Autonomy is a striking feature of biological systems.
Not surprisingly, some biologists have made strenuous attempts to articulate
what it means to them; to pin it down, formalize and study it in a
system-theoretic context.
However, this work is obscure and difficult to assess in terms of its
predictive power (which must be the fundamental test of any theory).
Even as a descriptive theory its use is surrounded by controversy.
Consequently this section attempts to give the flavor of the endeavor, relying
heavily on quotations from the major participants in the research, and goes on
to describe some practical computer systems which appear to satisfy the
criteria biologists have identified for autonomy.
.rh "Homeostasis."
People have long expressed wonder at how a living organism maintains its
identity in the face of continuous change.
.sp
.BQ
In an open system, such as our bodies represent, compounded of unstable
material and subjected continuously to disturbing conditions, constancy is
in itself evidence that agencies are acting or ready to act, to maintain this
constancy.
.FQ "Cannon, 1932"
.sp
.[
Cannon 1932 wisdom of the body
.]
Following Cannon, Ashby (1960) developed the idea of ``homeostasis'' to
account for this remarkable ability to preserve stability under conditions of
change.
.[
Ashby 1960 design for a brain
.]
The word has now found its way into North American dictionaries, eg Webster's
.sp
.BQ
Homeostasis is the tendency to maintain, or the maintenance of, normal,
internal stability in an organism by coordinated responses of the organ
systems that automatically compensate for environmental changes.
.FQ
.sp
The basis for homeostasis was adaptation by the organism.
When change occurred, the organism adapted to it and thus preserved its
constancy.
.sp
.BQ
A form of behavior is \fIadaptive\fR if it maintains the essential variables
within physiological limits.
.FQ "Ashby, 1960, p. 58"
.sp
The ``essential variables'' are closely related to survival and linked
together dynamically so that marked changes in any one soon lead to changes in
the others.
Examples are pulse rate, blood pressure, body temperature, number of
bacteria in the tissue, etc.
Ashby went so far as to construct an artifact, the ``Homeostat'', which
exhibits this kind of ultrastable equilibrium.
.pp
Homeostasis emphasizes the stability of biological systems under external
change.
Recently, a concept called ``autopoiesis'' has been identified, which
captures the essence of biological autonomy in the sense of stability or
preservation of identity under \fIinternal\fR change
(Maturana, 1975; Maturana & Varela, 1980; Varela, 1979; Zeleny, 1981).
.[
Maturana 1975 organization of the living
.]
.[
Maturana Varela 1980 autopoiesis
.]
.[
Varela 1979 biological autonomy
.]
.[
Zeleny 1981 Editor Autopoiesis  a theory of living organization
.]
This has aroused considerable interest, and controversy, in the system
theoretic research community.
.rh "Autopoiesis."
The neologism ``autopoiesis'' means literally ``self-production'', and a
striking example occurs in living cells.
These complex systems produce and synthesize macromolecules of proteins,
lipids, and enzymes, and consist of about $10 sup 5$ macromolecules.
The entire population of a given cell is renewed about $10 sup 4$ times
during its lifetime (Zeleny, 1981a).
.[
%A Zeleny, M.
%D 1981a
%T What is autopoiesis?
%E M.Zeleny
%B Autopoiesis:  a theory of living organization
%I North Holland
%C New York
%P 4-17
.]
Despite this turnover of matter, the cell retains its distinctiveness and
cohesiveness \(em in short, its \fIautonomy\fR.
This maintenance of unity and identity of the whole, despite the fact that
all the while components are being created and destroyed, is called
``autopoiesis''.
A concise definition is
.sp
.BQ
Autopoiesis is the capability of living systems to develop and maintain
their own organization.
The organization that is developed and maintained is identical to that
performing the development and maintenance.
.FQ "Andrew, 1981, p. 156"
.sp
.[
Andrew 1981
.]
Other authors (eg Maturana & Varela, 1980; Zeleny, 1981a) add a corollary:
.sp
.BQ
a topological boundary emerges as a result of the processes [of development
and maintenance].
.FQ "Zeleny, 1981a, p. 6"
.sp
This emphasizes the train of thought ``from self-production to identity''
that seems to underly much of the autopoietic literature.
.pp
Operating as a system which produces or renews its own components, an
autopoietic system continuously regenerates its own organization.
It does this in an endless turnover of components and despite inevitable
perturbations.
Therefore autopoiesis is a form of homeostasis which has its own
organization as the fundamental variable that remains constant.
The principal fascination of the concept lies in the self-reference it
implies,
This has stimulated a theoretical formulation of the notion of circularity or
self-reference in Varela's (1975) extension of Brown's
``calculus of distinctions'' (Brown, 1969).
.[
%A Varela, F.J.
%D 1975
%K *
%T A calculus for self-reference
%J Int J General Systems
%V 2
%N 1
%P 5-24
.]
.[
Brown 1969 Laws of Form
.]
Along with other work on self-reference (eg Hofstadter, 1979), this
has an esoteric and obscure, almost mystical, quality.
.[
Hofstadter 1979 Godel Escher Bach
.]
While it may yet form the basis of a profound paradigm shift in systems
science, it is currently surrounded by controversy and its potential
contribution is quite unclear (Gaines, 1981).
.[
Gaines 1981 Autopoiesis some questions
.]
Indeed, it has been noted that an
``unusual degree of parochialism, defensiveness, and quasi-theological
dogmatism has arisen around autopoiesis'' (Jantsch, 1981).
.[
Jantsch 1981 autopoiesis
.]
.pp
There has been considerable discussion of the relation between autopoiesis and
concepts such as purpose and information.
Varela (1979) claims that
``notions [of teleology and information] are unnecessary for the
\fIdefinition\fR of the living organization, and that they belong to a
descriptive domain distinct from and independent of the domain in which the
living system's \fIoperations\fR are described'' (p.\ 63/64).
In other words, nature is not about goals and information; we observers invent
such concepts to help classify what we see.
Maturana (1975) is more outspoken:  \c
``descriptions in terms of information transfer, coding and computations of
adequate states are fallacious because they only reflect the observer's domain
of purposeful design and not the dynamics of the system as a state-determined
system'';
.[
Maturana 1975 organization of the living
.]
presumably goals are included too in the list of proscribed terms.
Some have protested strongly against this hard-line view \(em which is
particularly provocative because of its use of the word ``fallacious'' \(em
and attempted to reconcile it with ``the fact that the behavior of people and
animals is very readily and satisfactorily described in terms of goals and
attempts to achieve them'' (Andrew, 1981, p. 158).
In his more recent work Varela (1981) diverged further from the hard-line
view, explaining that he had intended to criticize only ``the \fInaive\fR use
of information and purpose as notions that can enter into the definition of
a system on the same basis as material interactions'' [his emphasis].
.[
Varela 1981 describing the logic of the living
.]
He concluded that ``autopoiesis, as an operational explanation, is not quite
sufficient for a full understanding of the phenomenology of the living,
and that it needs a carefully constructed complementary symbolic
explanation''.
For Varela, a symbolic explanation is one that is based on the notions of
information and purpose.
It is clear, though, that while some allow that autopoiesis can \fIcoexist\fR
with purposive interpretations, it will not \fIcontribute\fR to them.
.pp
Is autopoiesis restricted to \fIliving\fR systems?
Some authors find it attractive to extend the notion to the level of society
and socio-political evolution (eg Beer, 1980; Zeleny, 1977).
.[
Beer 1980
.]
.[
Zeleny 1977
.]
Others (eg Varela, 1981) stress the renewal of components through material
self-production and restrict autopoiesis to chemical processes.
Without self-production in a material sense, the support for the corollary
above becomes unclear, and consequently the whole relevance of autopoiesis
to identity and autonomy comes under question.
.rh "Artificial autopoiesis."
Although one can point to computer simulations of very simple autopoietic
systems (eg Varela \fIet al\fR, 1974; Zeleny, 1978; Uribe, 1981), there seems
to have been little study of artificially autopoietic systems in their own
right.
.[
Varela Maturana Uribe 1974 autopoiesis characterization and model
.]
.[
Zeleny 1978 experiments in self-organization of complexity
.]
However there are examples of computer systems which are autopoietic and
which have arisen ``naturally'', that is to say, were developed for other
purposes and not as illustrations of autopoiesis.
It is probably true that in each case the developers were entirely unaware
of the concept of autopoiesis and the interest surrounding it in system
theory circles.
.pp
.ul
Worm programs
were an experiment in distributed computation (Shoch & Hupp, 1982).
.[
Shoch Hupp 1982
.]
The problem they addressed was to utilize idle time on a network of
interconnected personal computers without any impact on normal use.
It was necessary to be able to redeploy or unplug any machine at any time
without warning.
Moreover, in order to make the system robust to any kind of failure,
power-down or ``I am dying'' messages were not employed in the protocol.
A ``worm'' comprises multiple ``segments'', each running on a different
machine.
Segments of the worm have the ability to replicate themselves in idle
machines.
All segments remain in communication with each other, thus preserving the
worm's identity and distinguishing it from a collection of independent
processes; however, all segments are peers and none is in overall control.
To prevent uncontrolled reproduction, a certain number of segments is
pre-specified as the target size of the worm.
When a segment is corrupted or killed, its peers notice the fact because it
fails to make its periodical ``I am alive'' report.
They then proceed to search for an idle machine and occupy it with another
segment.
Care is taken to coordinate this activity so that only one new segment is
created.
.pp
There are two logical components to a worm.
The first is the underlying worm maintenance mechanism, which is responsible
for maintaining the worm \(em finding free machines when needed and
replicating the program for each additional segment.
The second is the application part, and several applications have been
investigated (Shoch & Hupp, 1982), such as
.LB
.NP
.ul
existential
worm that merely announces its presence on each computer it inhabits;
.NP
.ul
billboard
worm that posts a graphic message on each screen;
.NP
.ul
alarm clock
worm that implements a highly reliable alarm clock that is not based on any
particular machine;
.NP
.ul
animation
worm for undertaking lengthy computer graphics computations.
.LE
.pp
Can worms shed any light on the controversies outlined above which surround
the concept of autopoiesis?
Firstly, although they are not living and do not create their own material in
any chemical sense, they are certainly autonomous, autopoietic systems.
Shoch & Hupp relate how
.sp
.BQ
a small worm was left running one night, just exercising the worm control
mechanism and using a small number of machines.
When we returned the next morning, we found dozens of machines dead,
apparently crashed.
If one restarted the regular memory diagnostic, it would run very briefly,
then be seized by the worm.
The worm would quickly load its program into this new segment; the program
would start to run and promptly crash, leaving the worm incomplete \(em and
still hungrily looking for new segments.
.FQ
.sp
John Brunner's science fiction story \fIThe shockwave rider\fR presaged just
such an uncontrollable worm.
Of course, extermination is always possible in principle by switching off or
simultaneously rebooting every machine on the network, although this may not
be an option in practice.
Secondly, in the light of our earlier discussion of teleology and autopoiesis,
it is interesting to find the clear separation of the maintenance mechanism
\(em the autopoietic part \(em from the the application code \(em the
``purposive'' part \(em of the worm.
It can be viewed quite separately as an autopoietic or an application
(teleological?) system.
.pp
.ul
Self-replicating Trojan horses.
In his Turing Award lecture, Thompson (1984) raised the specter of
ineradicable programs residing within a computer system \(em ineradicable in
the sense that although they are absent from all source code, they can survive
recompilation and reinstallation of the entire system!
.[
Thompson 1984 reflections trust
.]
Most people's reaction is ``impossible! \(em it must be a simple trick'',
but Thompson showed a trick that is extremely subtle and sophisticated, and
effectively impossible to detect or counter.
The natural application of such a device is to compromise a system's security,
and Thompson's conclusion was that there can be no technical substitute for
natural trust.
From a system-theoretic viewpoint, however, this is an interesting example
of how a parasite can survive despite all attempts by its host to eliminate
it.
.pp
To understand what is involved in creating such an organism, consider first
self-replicating programs.
When compiled and executed, these print out themselves (say in source code
form); no more and no less.
Although at first sight they seem to violate some fundamental intuitive
principle of information \(em that to print oneself one needs
\fIboth\fR ``oneself'' \fIand, in addition\fR, something to print it out,
this is not so.
Programmers have long amused themselves with self-replicating programs, often
setting the challenge of discovering the shortest such program in any given
computer language.
Moreover, it is easy to construct a self-replicating program that includes
any given piece of text.
Such a program divides naturally into the self-replicating part and the
part that is to be reproduced, in much the same way that a worm program
separates the worm maintenance mechanism from the application part.
.pp
View self-replication as a source program ``hiding'' in executable binary
code.
Normally when coaxed out of hiding it prints itself.
But imagine one embedded in a language compiler, which when activated
interpolates itself into the input stream for the compiler, causing itself
to be compiled and inserted into the binary program being produced.
Now it has transferred itself from the executable version of the compiler
to the executable version of the program being compiled \(em without ever
appearing in source form.
Now imagine that the program being compiled is itself the compiler \(em a
virgin version, uncorrupted in any way.
Then the self-replicating code transfers itself from the old version of
the compiler to the new version, without appearing in source form.
It remains only for the code to detect when it is the compiler that is being
recompiled, and not to interfere with other programs.
This is well known as a standard Trojan Horse technique.
The result is a bug that lives only in the compiled version and replicates
itself whenever the compiler is recompiled.
.pp
If autopoiesis is the ability of a system to develop and maintain its own
organization, the self-replicating Trojan horse seems to be a remarkable
example of it.
It is an organism that it extremely difficult to destroy, even when one
has detected its presence.
However, it cannot be autonomous, but rather survives as a parasite on a
language compiler.
It does not have to be a compiler:  any program that handles other programs
(including itself) will do\u4\d.
.FN
4.\ \ As Thompson (1984) remarks, a well-installed microcode bug will be
almost impossible to detect.
.EF
Although presented as a pathological example of computer use, it is possible
to imagine non-destructive applications \(em such as permanently identifying
authorship or ownership of installed software even though the source code is
provided.
In the natural world, parasites can have symbiotic relationships with their
hosts.
It would be interesting to find analogous circumstances for self-replicating
Trojan horses, but I do not know of any \(em these examples of benevolent
use do not seem to benefit the host program directly, but rather its author or
owner.
.pp
.ul
Viruses
are perhaps less subtle but more pervasive kinds of bugs.
They spread infection in a computer system by attaching themselves to
files containing executable programs.
The virus itself is a small piece of code which gains control whenever the
host is executed, performs its viral function, and then passes control to
the host.
Generally the user is unaware that anything unusual is happening:  as far as
he is concerned, the host program executes exactly as normal\u5\d.
.FN
5.\ \ The only difference is a small startup delay which probably goes
unnoticed.
.EF
As part of its function, a virus spreads itself.
When it has control, it may attach itself to one or several other files
containing executable programs, turning them into viruses too.
Under most computer protection schemes, it has the unusual advantage of
running with the privileges of the person who invoked the host, not with
the privileges of the host program itself.
Thus it has a unique opportunity to infect other files belonging to that
person.
In an environment where people sometimes use each others programs, this allows
it to spread rapidly throughout the system\u6\d.
.FN
6.\ \ More details of the construction of both viruses and self-replicating
Trojan horses are given by Witten (1987).
.[
Witten 1987 infiltrating open systems
.]
.EF
.pp
Unlike self-replicating Trojan horses, a virus can be killed by recompiling
the host.
(Of course, there is no reason why a virus should not be dispatched to install
a self-replicating Trojan horse in the compiler.)  \c
If all programs are recompiled ``simultaneously'' (ie without executing any of
them between compilations), the virus will be eradicated.
However, in a multi-user system it is extremely hard to arrange for everyone
to arrange a massive recompilation \(em in the same way as it is difficult to
reboot every machine on a network simultaneously to stamp out a worm.
.pp
Viruses do not generally remain in touch with each other and therefore,
unlike worms, are not really autopoietic.
But there is no intrinsic reason why they should not be.
They provide a basic and effective means of reproduction which could be
utilized for higher-level communicating systems.
As with the other devices reviewed above, when one hears about viruses one
cannot help thinking of pathological uses.
However, there are benevolent applications.
They could assist in system maintenance by recording how often programs were
used and arranging optimization accordingly, perhaps migrating little-used
ones to slower memory devices or arranging optimization of frequently-used
programs.
Such reorganizations could take place without users being aware of it, quietly
making the overall system more efficient.
.sh "Conclusions"
.pp
We have examined two rather different directions in which autonomy can be
pursued in computer systems.
The first concerns representation and manipulation of goals.
Examination of some current AI systems shows that they do not escape the
old criticism that their goals and aspirations are merely planted there
by the programmer.
Indeed, it is not easy to see how it could be different, unless goals were
generated randomly in some sense.
Random exploration is also being investigated in current AI systems, and these
show that syntactic mutation can be an extremely powerful technique when
combined with semantically dense representations.
.pp
But according to modern biological thinking, the lower-level goals of people
and animals are also implanted in their brains in a remarkably literal sense.
Higher-level goals are not so easy to pin down.
According to one school of psychological thought they stem from a
single ``super-goal'' called self-actualization.
This is remarkably in tune with the architecture of some prominent discovery
programs in AI which strive to maximize the ``interestingness'' of the
concepts being developed.
While one may be reluctant to equate self-actualization with interestingness,
the resemblance is nevertheless striking.
.pp
The second direction concerns organizational independence in a sense of
wholeness which is distinct from goal-seeking.
The concept of autopoiesis formalizes this notion.
Organizational independence can be identified in certain computer systems
like worm programs, self-replicating Trojan horses, and viruses.
It is remarkable that such applications have been constructed because
they offer practical advantages and not in pursuit of any theoretical
investigation of autonomy;
in this way they are quite different from contrived games.
In some sense self-replicating programs do have a goal, namely \fIsurvival\fR.
A damaged worm exhibits this by repairing itself.
But this is a weak form of goal-seeking compared with living organisms, which
actively sense danger and take measures to prevent their own demise.
.pp
The architecture of these systems is striking in that the mechanism which
maintains the artificial organism (be it the worm maintenance code,
the self-replicating part of a Trojan horse, or the viral infection-spreader)
is quite separate from the application part of the organism.
Most people think of such programs as somehow pathological, and the
application as a harmful or subversive one, but this need not be so:  there
are benign examples of each.
In any case, separation of the organism's maintenance from its purpose is
interesting because the concept of autopoiesis has sparked a debate in
system-theoretic circles as to whether teleological descriptions are even
legitimate, let alone necessary.
In both domains a clear separation seems to arise naturally between the
autopoietic and teleological view of organisms.
.pp
There have been no attempts to build computer programs which combine these two
directions.
The AI community which developed techniques of goal-seeking has historically
been somewhat separate from the system software community which has created
robust self-replicating programs like worms and viruses.
What will spring from the inevitable combination and synthesis of the two
technologies of autonomy?
.sh "Acknowledgements"
.pp
First and foremost I would like to thank Brian Gaines for suggesting and
encouraging this line of research.
I am grateful to Saul Greenberg and Roy Masrani for many insights into topics
discussed here, and to Bruce MacDonald for making some valuable suggestions.
This research is supported by the Natural Sciences and Engineering Research
Council of Canada.
.sh "References"
.ls1
.sp
.in+4n
.[
$LIST$
.]
.in0
.EQ
delim $$
.EN
.ls 1
.ce
PROGRAMMING BY EXAMPLE REVISITED
.sp
.ce
by John G. Cleary
.ce
Man-Machine Systems Laboratory
.ce
University of Calgary.
.sp
.sh "Introduction"
.pp
Efforts to construct an artificial intelligence have relied on
ever more complex and carefully prepared programs.  While useful in
themselves, these programs
are unlikely to be useful in situations where ephemeral and
low value knowledge must be acquired.  For example a person (or robot)
working in a normal domestic environment knows a lot about which
cupboards have sticky doors and where the marmalade is kept.  It seems
unlikely that it will ever be economic to program such knowledge 
whether this be via a language or a discourse with an expert system.
.pp
It is my thesis, then, that any flexible robot system working in the
real world must contain a component of control intermediate
between hard wired 'reflex' responses and complex intellectual 
reasoning.  Such an intermediate system must be adaptive, be able
to carry out complex patterned responses and be fast in operation.
It need not, however, carry out complex forward planning or be capable
of introspection (in the sense that expert systems are able to explain
their actions).
.pp
In this talk I will examine a system that acquires knowledge by 
constructing a model of its input behaviour and uses this to select its
actions.  It can be viewed either as an automatic adaptive system  or
as an instance of 'programming by example'.  Other workers have
attempted to do this, by constructing compact models in some appropriate
programming language:e.g. finite state automata [Bierman, 1972], 
[Bierman and Feldman, 1972]; LISP [Bierman and Krishnaswamy, 1976]; 
finite non-deterministic
automata [Gaines,1976], [Gaines,1977],
[Witten,1980]; high level languages [Bauer, 1979], [Halbert, 1981].
These efforts, however, suffer from
the flaw that for some inputs their computing time is 
super-exponential in the number
of inputs seen.  This makes them totally impractical in any system which
is continuously receiving inputs over a long period of time.
.pp
The system I will examine comprises one or more simple independent
models.  Because of their simplicity and because no attempt is made to 
construct models which are minimal,
the time taken to store new information and to make 
predictions is constant and independent of the amount of information stored
[Cleary, 1980].  This leads to a very integrated and responsive environment.
All actions by the programmer are immediately incorporated into the program
model. The actions are also acted upon so that their consequences are 
immediately apparent.
However, the amount of memory used could grow 
linearly with time. [Witten, 1977] introduces a modelling system related
to the one here which does not continually grow and which can be updated
incrementally.
.pp
It remains to be shown that the very simple models used are capable 
of generating any
interestingly complex behaviour.
In the rest of this
talk I will use the problem of executing a subroutine to illustrate
the potential of such systems.
The example will also illustrate some of the techniques which have been
developed for combining multiple models, [Cleary, 1980], [Andreae
and Cleary, 1976], [Andreae, 1977], [Witten,1981].  It has also been
shown in [Cleary, 1980] and in [Andreae,1977] that such systems can
simulate any Turing machine when supplied with a suitable external memory.
.sh "The modelling system"
.pp
Fig. 1 shows the general layout of the modeller.  Following the flow
of information through the system it first receives a number of inputs
from the external world.  These are then used to update the current
contexts of a number of Markov models.  Note, that each Markov model
may use different inputs to form its current context, and that they
may be attempting to predict different inputs.  A simple robot
which can hear and move an arm might have two models; one, say, in
which the last three sounds it heard are used to predict the next
word to be spoken, and another in which the last three sounds and the last
three arm movements are used to predict the next arm movement. 
.pp
When the inputs are received each such context and its associated 
prediction (usually
an action) are added to the Markov model.  (No
counts or statistics are maintained \(em they are not necessary.)  When the
context recurs later it will be retrieved along with all the predictions
which have been stored with it.
.pp
After the contexts have been stored they 
are updated by shifting in the new inputs. These new contexts are then
matched against the model and all the associated predictions are retrieved.
These independent predictions from the individual Markov models
are then combined into a single composite 
prediction.
(A general theory of how to do this has been
developed in [Cleary, 1980]).  
.pp
The final step is to present this 
composite prediction to a device I have called the 'choice oracle'.
This uses whatever information it sees fit to choose the next action.
There are many possibilities for such a device.  One might be to choose
from amongst the predicted actions if reward is expected and to choose
some other random action if reward is not expected.  The whole system then 
looks like
a reward seeking homeostat.  At the other extreme the oracle might be
a human programmer who chooses the next action according to his own
principles.  The system then functions more like a programming by
example system \(em [Witten, 1981] and [Witten, 1982] give examples of such 
systems.
[Andreae, 1977] gives an example of a 'teachable' system lying between
these two extremes.
.pp
After an action is chosen this is
transmitted to the external world and the resultant inputs are used
to start the whole cycle again.  Note that the chosen action will
be an input on the next cycle.
.sh "Subroutines"
.pp
An important part of any programming language is the ability to write a 
fragment of a program and then have it used many times without it having
to be reprogrammed each time.  A crucial feature of such shared code is
that after it has been executed the program should be controlled by the
situation which held before the subroutine was called. A subroutine can be 
visualised as a black box with an unknown and arbitrarily complex interior.
There are many paths into the box but after passing through each splits again
and goes its own way, independent of what happened inside the box.
.np
Also, if there are $p$ paths using the subroutine and $q$ different sequences
within it then the amount of programming needed should be proportional to
$p + q$ and not $p * q$.  The example to follow possess both these properties
of a subroutine.
.rh "Modelling a Subroutine."
The actual model we will use is described in Fig. 2.  There are two Markov
models (model-1 and model-2) each seeing and predicting different parts of
the inputs.  The inputs are classified into four classes; ACTIONs that
move a robot (LEFT, RIGHT, FAST, SLOW), patterns that it 'sees' (danger,
moved, wall, stuck) and two types of special 'echo' actions, # actions
and * actions (*home, #turn).  The # and * actions have no effect on the 
environment,
their only purpose is to be inputs and act as place keepers for relevant
information.  They may be viewed as comments which remind the system of
what it is doing.  (The term echo was used in [Andreae,1977], where the
idea was first introduced, in analogy to spoken words of which one
hears an echo.)
.pp
Model-2 is a Markov model of order 2 and uses only # actions in its
context and seeks to predict only * actions.  Model-1 is a Markov model 
of order 3 and uses all four classes of inputs in its context.  It
seeks to predict ACTIONs, # actions and * actions.  However, * actions
are treated specially.  Rather than attempt to predict the exact * action
it only stores * to indicate that some * action has occurred.  This
special treatment is also reflected in the procedure for combining the
predictions of the two models.  Then the prediction of model-2 is used,
only if model-1 predicts an *.  That is, model-1 predicts that some 
* action will occur and model-2 is used to select which one. If model-1
does not predict an * then its prediction is used as the combined prediction
and that from model-2 is ignored.
.pp
The choice oracle that is used for this example has two modes.  In
programmer mode a human programmer is allowed to select any action
she wishes or to acquiesce with the current prediction, in which case
one of the actions in the combined prediction is selected.  In
execution mode one of the predicted actions is selected and the
programmer is not involved at all.
.pp
Before embarking on the actual example some points about the predictions
extracted from the individual Markov models should be noted.  First, if 
no context can be found stored in the memory which equals the current
context then it is shortened by one input and a search is made for any
recorded contexts which are equal over the reduced length.  If necessary
this is repeated until the length is zero whereupon all possible
allowed actions are predicted.
.pp
Fig. 3 shows the problem to be programmed.  If a robot sees danger it
is to turn and flee quickly.  If it sees a wall it is to turn and return
slowly.  The turning is to be done by a subroutine which, if it gets 
stuck when turning left, turns right instead.
.pp
Fig. 4 shows the contexts and predictions stored when this is programmed.
This is done by two passes through the problem in 'program' mode: once
to program the fleeing and turning left; the other to program the wall
sequence and the turning right.  Fig. 5 then shows how this programming
is used in 'execute' mode for one of the combinations which had not been
explicitly programmed earlier (a wall sequence with a turn left).  The
figure shows the contexts and associated predictions for each step.
(Note that predictions are made and new contexts are stored in both
modes.  They have been omitted from the diagrams to preserve clarity.)
.sh "Conclusion"
.pp
The type of simple modelling system presented above is of interest for a
number of reasons.  Seen as a programing by example system, 
it is very closely 
integrated. Because it can update its models incrementally in real time
functions such as input/output, programming, compilation and execution
are subsumed into a single mechanism. Interactive languages such as LISP
or BASIC gain much of their immediacy and usefulness by being interpretive 
and not requiring a separate compilation step when altering the source
program. By making execution integral with the process of program entry
(some of) the consequencs of new programming become immediately apparent.
.pp
Seen as an adaptive controller, the system has the advantage of being fast
and being able to encode any control strategy. Times to update the model
do not grow with memory size and so it can operate continuously in real time.
.pp
Seen as a paradigm for understanding natural control systems, it has the
advantage of having a very simple underlying storage mechanism. Also,
the ability to supply an arbitrary choice oracle allows for a wide
range of possible adaptive strategies.
.sh "References"
.in +4m
.sp
.ti -4m
ANDREAE, J.H. 1977
Thinking with the Teachable Machine.  Academic Press.
.sp
.ti -4m
ANDREAE, J.H. and CLEARY, J.G. 1976
A New Mechanism for a Brain.  Int. J. Man-Machine Studies
8(1):89-119.
.sp
.ti -4m
BAUER, M.A. 1979 Programming by examples. Artificial Intelligence 12:1-21.
.sp
.ti -4m
BIERMAN, A.W. 1972
On the Inference of Turing Machines from Sample Computations.
Artificial Intelligence 3(3):181-198.
.sp
.ti -4m
BIERMAN, A.W. and FELDMAN, J.A. 1972
On the Synthesis of Finite-State Machines from Samples of
their Behavior.  IEEE Transactions on Computers C-21, June:
592-597.
.sp
.ti -4m
BIERMAN, A.W. and KRISHNASWAMY, R. 1976 Constructing programs from example 
computations. IEEE transactions on Software Engineering SE-2:141-153.
.sp
.ti -4m
CLEARY, J.G. 1980
An Associative and Impressible Computer. PhD thesis, University
of Canterbury, Christchurch, New Zealand.
.sp
.ti -4m
GAINES, B.R. 1976
Behaviour/structure transformations under uncertainty.
Int. J. Man-Machine Studies 8:337-365.
.sp
.ti -4m
GAINES, B.R. 1977
System identification, approximation and complexity.
Int. J. General Systems, 3:145-174.
.sp
.ti -4m
HALBERT, D.C. 1981
An example of programming by example. Xerox Corporation, Palo Alto, 
California.
.sp
.ti -4m
WITTEN, I.H. 1977
An adaptive optimal controller for discrete-time Markov
environments.  Information and Control, 34, August: 286-295.
.sp
.ti -4m
WITTEN, I.H. 1979
Approximate, non-deterministic modelling of behaviour
sequences.  Int. J. General Systems, 5, January: 1-12.
.sp
.ti -4m
WITTEN, I.H. 1980
Probabilistic behaviour/structure transformations using
transitive Moore models.  Int. J. General Systems, 6(3):
129-137.
.sp
.ti -4m
WITTEN, I.H. 1981
Programming by example for the casual user: a case study.
Proc. Canadian Man-Computer Communication Conference, Waterloo,
Ontario, 105-113.
.sp
.ti -4m
WITTEN, I.H. 1982
An interactive computer terminal interface which predicts user 
entries. Proc. IEE Conference on Man-Machine Interaction,
Manchester, England.
.in -4m
.pn 0
.EQ
delim $$
define RR 'bold R'
define SS 'bold S'
define II 'bold I'
define mo '"\(mo"'
define EXIST ?"\z\-\d\z\-\r\-\d\v'0.2m'\(br\v'-0.2m'"?
define NEXIST ?"\z\-\d\z\o'\-\(sl'\r\-\d\v'0.2m'\(br\v'-0.2m'"?
define ALL ?"\o'V-'"?
define subset '\(sb'
define subeq  '\(ib'
define supset '\(sp'
define supeq  '\(ip'
define mo '\(mo'
define nm ?"\o'\(mo\(sl'"?
define li '\& sup ['
define lo '\& sup ('
define hi '\& sup ]'
define ho '\& sup )'
.EN
.ls 1	
.ce
A LOGICAL IMPLEMENTATION OF ARITHMETIC 
.sp 3
.ce
John G. Cleary 
.ce
The University of Calgary, Alberta, Canada.
.sp 20
\u1\dAuthor's Present Address: Man-Machine Systems Group, Department of
Computer Science, The University of Calgary, 2500 University Drive NW
Calgary, Canada T2N 1N4. Phone: (403)220-6087.  
.br
.nf
UUCP:  ...!{ihnp4,ubc-vision}!alberta!calgary!cleary
       ...!nrl-css!calgary!cleary
ARPA:  cleary.calgary.ubc@csnet-relay
CDN:   cleary@calgary
.fi
.sp 2
.ls 2
.bp 0
.ls 2
.ce
Abstract
.pp
So far implementations of real arithmetic within logic programming
have been non-logical.  A logical description of the behaviour of arithmetic
on actual
machines using finite precision numbers is not readily available.  
Using interval analysis a simple description of real arithmetic is possible.
This can be translated to an implementation within Prolog.
As well as having a sound logical basis the resulting system 
allows a very concise and powerful programming style and is potentially
very efficient.
.bp
.sh "1 Introduction"
.pp
Logic programming aims to use sets of logical formulae as
statements in a programming language.
Because of many practical difficulties the full generality of logic
cannot (yet) be used in this way.   However, by restricting the
class of formulae used to Horn clauses practical and efficient
languages such as PROLOG are obtained.
One of the main problems in logic programming is to extend this area
of practicality and efficiency to an ever wider range of formulae and 
applications.  
This paper considers such an implementation for arithmetic.
.pp
To see why arithmetic as it is commonly implemented in PROLOG systems
is not logical consider the following example:
.sp
.nf
	X = 0.67, Y = 0.45, Z is X*Y, Z = 0.30
.fi
.sp
This uses the notation of the 'Edinburgh style' Prologs.
(For the moment we assume an underlying floating point
decimal arithmetic with two significant places.)
The predicate 'is' assumes its righthand side is an arithmetic
statement, computes its value, and unifies the result with its lefthand side.
In this case the entire sequence succeeds, however, there are some serious 
problems.
.pp
In a pure logic program the order of statements should be irrelevant to
the correctness of the result (at worst termination or efficiency might be
affected).  This is not true of the example above.  The direction of execution
of 'is' is strictly one way so that
.sp
	Y = 0.45, Z = 0.30, Z is X*Y
.sp
will deliver an error when X is found to be uninstantiated inside 'is'.
.pp
The second problem is that the answer Z = 0.30 is incorrect!\ 
The correct infinite precision answer is Z = 0.3015.  This inaccuracy
is caused by the finite precision implemented in the floating point
arithmetic of modern computers.
It becomes very problematic to say what if anything it means when
Z is bound to 0.30 by 'is'.  This problem is exacerbated by long sequences
of arithmetic operations where the propagation of such errors can lead the
final result to have little or no resemblence to the correct answer.
.pp
This is further class of errors, which is illustrated by the fact that the
following two sequences will both succeed if the underlying arithmetic rounds:
.sp
	X = 0.66, Y = 0.45, Z = 0.30, Z is X*Y
.br
	X = 0.67, Y = 0.45, Z = 0.30, Z is X*Y
.sp
This means that even if some invertable form of arithmetic were devised
capable of binding X when:
.sp
	Y = 0.45, Z = 0.30, Z is X*Y
.sp
it is unclear which value should be given to it.
.pp
The problem then, is to implement arithmetic in as logical a manner
as possible while still making use of efficient floating point arithmetic.
The solution to this problem has three major parts.
The first is to represent PROLOG's 
arithmetic variables internally as intervals of real numbers.
So the result of 'Z is 0.45*0.67' would be to bind Z to the 
open interval (0.30,0.31).  
This says that Z lies somewhere in the interval
$0.30 < Z < 0.31$, which is certainly true, and probably as informative
as possible given finite precision arithmetic.
(Note that Z is NOT bound to the data structure (0.30,0.31), this
is a hidden representation in much the same way that pointers are used
to implement logical variables in PROLOG but are not explicitly visible
to the user.  Throughout this paper brackets such as (...) or [...] will
be used to represent open and closed intervals not Prolog data structures.)
.pp
The second part of the solution is to translate expressions such as
\&'Z is (X*Y)/2' to the relational form 'multiply(X,Y,T0), multiply(2,Z,T0)'.
Note that both the * and / operators have been translated to 'multiply'
(with parameters in a different order).  This relational form will be seen to 
be insensitive to which parameters are instantiated and which are not,
thus providing invertibility.
.pp
The third part is to provide a small number of control 'predicates' able
to guide the search for solutions.
The resulting system is sufficiently powerful to be able to
solve equations such as '0 is X*(X-2)+1' directly.
.pp
The next section gives a somewhat more formal description of arithmetic
implemented this way.  Section III gives examples of its use and of the
types of equations that are soluble within it.  Section IV compares our 
approach here with that of other interval arithmetic systems and with
constraint networks.  Section V notes some possibilities for a parallel 
dataflow implementation which avoids many of the difficulties of traditional
dataflow execution.
.sh "II. Interval Representation"
.pp
Define $II(RR)$ to be the set of intervals over the real numbers, $RR$.
So that the lower and upper bounds of each interval can be operated on as 
single entities they will be treated as pairs of values.  
Each value having an attribute of being open or closed 
and an associated number.  For example the interval (0.31,0.33] will be
treated as the the pair $lo 0.31$ and $hi 0.33$.  
The brackets are superscripted to minimize visual confusion when writeing 
bounds not in pairs.
As well as the usual real numbers 
$- inf$ and $inf$, will be used as part of bounds,
with the properties that $ALL x mo RR~- inf < x < inf$ 
The set of all upper bounds is defined as:
.sp
	$H(RR)~==~\{ x sup b : x mo RR union \{ inf \},~b mo \{ hi , ho \} \} $
.sp
and the set of lower bounds as:
.sp
	$L(RR)~==~\{ \& sup b x : x mo RR union \{ -inf \},~b mo \{ li , lo \} \} $
.sp
The set of all intervals is then defined by:
.sp
	$II(RR)~==~L(RR) times H(RR)$
.sp
Using this notation rather loosely intervals will be identified 
with the apropriate subset of the reals.  For example the following 
identifications will be made:
.sp
	$[0.31,15)~=~< li 0.31, ho 15 >~=~ \{ x mo RR: 0.31 <= x < 15 \}$
.br
	$[-inf,inf]~=~< li -inf , hi inf> ~=~ RR$
.br
and	$(-0.51,inf]~=~< lo -0.51 , hi inf >~=~ \{ x mo RR: 0.51 < x \}$
.sp
The definition above carefully excludes 'intervals' such as $[inf,inf]$
in the interests of simplifying some of the later development.
.pp
The finite arithmetic available on computers is represented by a
finite subset, $SS$, of $RR$.  It is assumed that 
$0,1 mo SS$.  The set of intervals allowed over $SS$ is $II(SS)$ defined as 
above for $RR$.  $SS$ might be a bounded set of integers or some more complex
set representable by floating point numbers.
.pp
There is a useful mapping from $II(RR)$ to $II(SS)$ which associates
with each real interval the best approximation to it:
.nf
.sp
	$approx(<l,h>)~==~<l prime, h prime >$
.br
where	$l prime mo L(SS), l prime <= l, and NEXIST x mo L(SS)~l prime <x<l$
.br
	$h prime mo H(SS), h prime >= h, and NEXIST x mo H(SS)~h prime >x>h$.
.pp
The ordering on the bounds is defined as follows:
.sp
	$l < h, ~ l,h mo II(RR)~ <->~l= \& sup u x and h = \& sup v y$
			and $x<y$ or $x=y$ and $u<v$
where 	$ ho, li, hi, lo$ occur in this order and $x<y$ is the usual ordering 
on the reals extended to include $-inf$ and $inf$.  
The ordering on the brackets is carefully chosen so that intervals such as
(3.1,3.1) map to the empty set.
Given this definition it is easily verified that 'approx' gives
the smallest interval in $II(SS)$ enclosing the original interval in $II(RR)$.
The definition also allows the intersection of two intervals to be readily 
computed:
.sp
	$<l sub 1,h sub 1> inter <l sub 2, h sub 2>~=~$
		$< max(l sub 1 , l sub 2), min(h sub 1 , h sub 2 )>$
.sp
Also and interval $<l,h>$ will be empty if $l > h$.  For example, according
to the definition above $lo 3.1 > ho 3.1$ so (3.1,3.1) is correctly computed
as being empty.
.pp
Intervals are introduced into logic by extending the notion of 
unification.  A logical variable I can be bound to an interval $I$,
written I:$I$.  Unification of I to any other value J gives the following
results:
.LB
.NP
if J is unbound then it is bound to the interval, J:$I$;
.NP
if J is bound to the interval J:$J$ then
I and J are bound to the same interval $I inter J$.
The unification fails if $I inter J$ is empty.
.NP
a constant C is equivalent to $approx([C,C])$;
.NP
if J is bound to anything other than an interval the unification fails.
.LE
.pp
Below are some simple Prolog programs and the bindings that result when
they are run (assuming as usual two decimal places of accuracy).
.sp
.nf
	X = 3.141592
	X:(3.1,3.2)

	X > -5.22, Y <= 31, X=Y
	X:(-5.3,32]  Y:(-5.3,31]
.fi
.sp
.rh "Addition"
.pp
Addition is implemented by the relation 'add(I,J,K)'
which says that K is the sum of I and J.
\&'add' can be viewed as a relation on $RR times RR times RR$ defined
by:
.sp
	$add ~==~ \{<x,y,z>:x,y,z mo  RR,~x+y=z\}$
.sp
Given that I,J, and K are initially bound to the intervals $I,J,K$ 
respectively, the fully correct set of solutions with the additional
constrain 'add(I,J,K)' is given by all triples in the set 
$add inter I times J times K$.  
This set is however infinite, to get an effectively computable procedure
I will approximate the additional constraint by binding I, J and K
to smaller intervals.  
So as not to exclude any possible triples the new bindings, 
$I prime, J prime roman ~and~ K prime$ must obey:
.sp
	$add inter I times J times K ~subeq~ I prime times J prime times K prime$
.sp
Figure 1 illustrates this process of
.ul
narrowing.
The initial bindings are I:[0,2], J:[1,3]
and K:[4,6].  After applying 'add(I,J,K)' the smallest possible bindings
are I:[1,2], J:[2,3] and K:[4,5].  Note that all three intervals have been
narrowed.
.pp
It can easily be seen that:
.sp
	$I prime supeq \{x:<x,y,z> ~mo~ add inter I times J times K \}$
.br
	$J prime supeq \{y:<x,y,z> ~mo~ add inter I times J times K \}$
.br
	$K prime supeq \{z:<x,y,z> ~mo~ add inter I times J times K \}$
.sp
If there are 'holes' in the projected set then $I prime$ will be a strict
superset of the projection, however, $I prime$ will still 
be uniquely determined by the projection.  This will be true of any
subset of $RR sup n$ not just $add$.
.pp
In general for
.sp
	$R subeq RR sup n,~ I sub 1 , I sub 2 , ... , I sub n mo II(RR)$
and $I prime  sub 1 , I prime  sub 2 , ... , I prime  sub n mo II(RR)$
.sp
I will write 
.br
	$R inter I sub 1 times I sub 2 times ... times I sub n nar 
I prime sub 1 times I prime sub 2 times ... times I prime sub $
.br 
when the intervals $I prime sub 1 , I prime sub 2 , ... , I prime sub $
are the uniquelly determined smallest intervals including all solutions.

.sh "IV. Comparison with Interval Arithmetic"
.pp
.sh "V.  Implementation"
.pp
.sh "VI. Summary"
.sh "Acknowledgements"
.sh "References"
.ls 1
.[
$LIST$
.]
.EQ
delim $$
define <- ?< "\h'-0.5m'" up 10 "\(em" down 10 ?
define gtorder ?"\z>\d\~\u"?
define EXIST ?"\z\-\d\z\-\r\-\d\v'0.2m'\(br\v'-0.2m'"?
define ALL ?"\o'V-'"?
define 0M '0~...~M-1'
define LH 'lo~...~hi'
define RR 'bold R'
define HH 'bold H'
define KK 'bold K'
define or '"\fBor\fI"~'
define and '"\fBand\fI"~'
define if '"\fBif\fI"~'
define then '"\fBthen\fI"~'
define else '"\fBelse\fI"~'
define repeat '"\fBrepeat\fI"~'
define until '"\fBuntil\fI"~'
define while '"\fBwhile\fI"~'
define do '"\fBdo\fI"~'
define case '"\fBcase\fI"~'
define end '"\fBend\fI"~'
define begin '"\fBbegin\fI"~'
define elseif '"\fBelseif\fI"~' 
define for '"\fBfor\fI"~'
define From '"\fBfrom\fI"~'
define To '"\fBto\fI"~'
define exit '"\fBexit\fI"~'
.EN
.ls 1	
.ce
COMPACT HASH TABLES USING BIDIRECTIONAL LINEAR PROBING
.sp 3
.ce
John G. Cleary
.ce
The University of Calgary, Alberta, Canada.
.sp 3
.sp 20
\u1\dAuthors Present Address: Man-Machine Systems Group, Department of
Computer Science, The University of Calgary, 2500 University Drive NW
Calgary, Canada T2N 1N4.
.sp
\u2\dThis research was supported by
the Natural Sciences and Engineering Research Council of Canada.
.sp 2
.ls 2
.bp
Index Terms --  Searching, hash storage, open addressing, 
bidirectional linear probing,
address calculation, information retrieval, scatter storage, 
performance analysis, memory compaction.
.bp
.pp
Abstract -- An algorithm is developed which reduces the memory 
requirements of hash tables.
This  is achieved by storing only
a  part of each key along with a few extra bits needed to ensure that
all keys are stored unambiguously.  The fraction of each key stored
decreases as the size of the hash table increases.  Significant reductions
in total memory usage can be achieved especially when the key size is not
much larger than the size of a memory index and when only a small amount
of data is stored with each key.
The algorithm is  based on 
bidirectional linear probing.
Search and insertion times are shown by simulation 
to be similar to those
for ordinary bidirectional linear probing.
.bp
.sh "1 Introduction"
.pp
The retrieval of a single item from among many others is a common problem
in computer science.  I am particularly concerned here with the case where 
the item is retrieved on the basis of a single label
or key attached to each entry and where the keys are not ordered in any
particular way.
There is a well known solution
to this problem in the form of hash tables.
Knuth [8], Knott [7] and Maurer and Lewis [11] provide good introductions to 
this subject.
.pp
An efficient version of hashing called
.ul
bidirectional linear probing 
(BLP),
was developed by Amble and Knuth [1].
As it forms the basis of what follows it is described in more detail in the
following section.  Section 3 shows how it can be modified so as to 
significantly reduce its memory requirements.  This is done by storing only
a small part of each key -- a few extra bits are needed to ensure 
that different keys, that look the same after truncation, are correctly
distinguished.
.pp
The execution time of this compact hashing algorithm is considered in
Section 4.  It is shown by simulation to be 
similar to  ordinary BLP
for both successful searches and insertion.  It is significantly
better for unsuccessful searches.  
.pp
A hashing scheme similar to compact hashing in that not all of the key is
stored has been proposed by Andreae [2] (Chapter 1).  However, his technique 
has a small but finite probability of retrieving an incorrect key.
Although compact hashing
is not based on this earlier technique it provided the impetus to
seek the current solution.
.pp
In hashing algorithms using an overflow area and a linked list of synonyms
or by variations of this using buckets (see Maurer and Lewis [11]) only the
remainder of each key need be stored.  This has been known since at least
1965 (Feldman and Low [6] and Knuth [8] sec. 6.4, exercise 13, p543).  
However, each entry (including the original hash location) requires a pointer
to the next overflow record.  This pointer will about the same size as the
reduction in the key size.  So, there is no net memory saving  over
open addressing techniques such as BLP.
.pp
Amongst the possible applications of compact hashing is the storage
of trees and TRIES without the use of pointers but still preserving
a $log N$ retrieval time. 
It is hoped to report on this application in more detail later.
.pp
Pascal versions of the algorithms described below are available
from the author.
.sh "2 Bidirectional linear probing."
.pp
I will now introduce the open addressing technique which forms the basis
of compact hashing.
The 
.ul
hash table
in which the keys will be stored is an array $T[ 0M ]$ .  I will
be concerned only with the the keys themselves as the 
items associated with each key do not 
significantly affect the algorithms.  In order to compute the location
for each key I will use two functions: $t$ which randomises the original
keys, and $h$ which computes a value in the range $0M$.  
.pp
Let $KK$ be the set of all possible keys and $HH$ be the set of all possible
transformed keys.  Then $t: KK -> HH$ is an invertible function.
This function is introduced
to ensure that the keys stored are  random and so, as a consequence,
the hashing
procedure has a satisfactory
average performance.  In what follows these transformed
keys will be used rather than the original keys.  For example, it is the 
transformed keys that are stored in $T$.  (-1 is used to indicate an unoccupied
location in $T$.)
.pp
$h: HH ->"{" 0M "}"$ and has the 
property that for
$H sub 1 ~, H sub 2 ~ "\(mo" HH$
$H sub 1 ~<=~ H sub 2~~ "\fBiff\fP"~~h(H sub 1 ) ~<=~ h(H sub 2 )$.  
As a consequence the keys will be mapped 
into the hash table in the same order as the values of their transformed
keys.  
This ordering is essential to the compaction attained later.
Suitable functions $t$ and $h$ have been extensively discussed 
(Carter and Wegman, [3]; Knott [7]; Lum, [9]; Lum, Yuen and Dodd, [10]).
These authors show that there are functions which almost always make
the distribution of transformed keys random.  I will not consider any
particular functions for $t$ although some examples of $h$ will be introduced
later.
.pp
To retrieve a key, $K$, from the hash table the transformed key and the 
hash location are first computed.  If the (transformed) key stored at the
hash location is greater than $t(K)$ then the table is searched upward 
until one of three things happen.  Either an empty location will be found,
$T[j]=-1$, or the sought key will be found, $T[j]=t(K)$, or a key greater
than the sought key will be found, $T[j]>t(K)$.  If the first key examined
is less than $t(K)$ then an analogous search is done down the hash table.
The search is successful if the sought key is found, that is
if the last location examined is equal to $t(K)$, and is unsuccessful
otherwise.  (See Amble and Knuth [1] for the details of this algorithm).
.pp
For a given set of keys there are many ways that they can be arranged in $T$
so that the search algorithm above will  still work correctly.
There is thus
freedom, when designing an algorithm to insert new keys, to choose different 
strategies for positioning the keys.
There are two conditions that must be satisfied when a new key is inserted.
One is that all keys in the memory must remain in ascending order
and the other is that there must be no empty locations between the original hash
location of any key and its actual storage position.  These imply that all
keys sharing the same initial hash location must form a single unbroken group.
.pp
Within these constraints one would like to insert a new key so as to minimise 
later retrieval times and the time to do the insertion itself.  Intuitively
keys which share the same initial hash location should be centered around that
initial address.  There are two ways of inserting keys which cause little
disturbance to the memory.  One is to find the position where the key should
be placed according to its ordering and then to create a gap for it by
moving 
.ul
up 
all entries from this position up to the next empty location.  The second way is
symmetric to this and creates a gap by moving entries 
.ul
down 
one location.
The insertion algorithm given by  Amble and Knuth [1] chooses which of these
two moves to make using a strategy which is  guaranteed to minimise the number
of locations in $T$ which are examined during later successful or unsuccessful
searches, although it is not guaranteed to minimise the insertion time itself.
.pp
One  consequence of this insertion strategy is that sometimes it is necessary
to move entries below 0 and above $M$ in the array $T$.  One solution to this
would be to make the array circular and move entries from 0 to $M-1$ and
vice versa.  However, following Amble and Knuth [1], I will instead extend
the array $T$ and other arrays to be defined later at their top and bottom.
This gives 'breathing room' for the array to expand.  An extra 20 entries
at the top and bottom were found to be quite sufficient for all
the simulation runs reported in Section 4.  Accordingly I will define
$lo ~=~-20$ and $hi~=~M+19$ and define the array $T$ over the range
$lo$ to $hi$.
.sh "3 Compact Hashing Using Bidirectional Linear Probing"
.pp
I will now show that the memory required to store the keys in BLP can be
significantly reduced.  First consider the case when
the number of possible keys in $KK$ is less than $M$, then every possible key
can be assigned its own location in $T$ without possibility of collision.
In this case $T$ degenerates to an ordinary indexed array and the keys need
never be stored.  At worst a single bit might be needed to say whether
a particular key has been stored or not.  This raises the question of whether
it is necessary to hold the entire key in memory if the key space $KK$ is slightly
larger than $M$.  For example if $KK$ were, say, four times larger than $M$
then it might be possible to hold only two bits of the key rather than the entire
key.  The reasoning here is that the main function of the stored keys is to
ensure that entries which collide at the same location can be correctly
separated.
Provided $h$ is suitably chosen at most four keys can be mapped to a 
single location.  The two bits might then be sufficient to store four
different values for these four keys.  It is in fact 
possible to realise this
reduction in stored key size although a fixed amount of extra information 
is needed
at each location in order to correctly handle collisions.
.pp
So that I can talk about the part of the key which is in excess of the
address space I will now introduce a 
.ul
remainder function
$r$.  $r$ maps from the transformed keys $HH$ to a set of remainders 
$RR~==~"{"0,~1,~2,~...,~Rm-1"}"$.  
It  is these remainders that will be stored in lieu
of the transformed keys.  
The essential property
of $r$ is that $r(H)$ and $h(H)$ together are sufficient to uniquely 
determine $H$.  
.pp
.ne 9
Formally,
.sp
	$RR ~~==~~ "{"0,~1,~2,~...,~Rm-1"}"$
.sp
	$r: HH -> RR$
.sp
and	$h( H sub 1 )~=~h( H sub 2 )~and~r( H sub 1 )~=~r( H sub 2 )
~~ "\fBiff\fP" ~~ H sub 1 ~~=~~ H sub 2$ .
.sp
For a given function $h$ there are usually many possible functions $r$.
One particularly simple pair of functions, referred to by Maurer and Lewis [10]
as the 
.ul
division method, 
is $h(H)~~=~~ left floor^ H/Rm right floor$ and
$r(H)~~=~~ H~ "\fBmod\fP"~Rm$ . 
.sp
When $r$ is defined as above and $Rm$ is between $2 sup d$ and $2 sup d+1$ 
the number of bits needed to 
specify a remainder is the number of bits in the key less $d$.
.pp
Consider a new array
$R [ LH ]$ into which the remainders will be stored.   
In what follows $R$ will be kept in place of $T$ but it will be useful to
talk about $T$ as if it were still there.  $R$ and the additional arrays to
be introduced shortly specify just the information in $T$, albeit
more compactly.  Each value $R [i]$ will hold the value $r(T[i])$ with the
exception that when $T[i]$ is $-1$ (marking an empty location) then $R[i]$
is also set to $-1$.  If
there have been no collisions then each $R[i]$ paired with the value $i$
unambiguously gives the transformed key that would have been stored in $T[i]$.
However, if there have been collisions it is not possible
to tell if a value of $R[i]$ is at its home location or if it has been moved
from, say, $i-1$ and corresponds to a key, $H$, where $r(H)~=~ R[i]$ and $h(H)~=~i-1$.
If there were some way to locate for each $R[i]$ where it was originally 
hashed then the original keys could all be unambiguously determined.
This can be done by maintaining two extra arrays of bits, the virgin array $V$,
and the change array $C$.
.pp
The virgin array
$V[ LH ]$ marks those 
locations which have never been hashed to.  That is, $V[i]$ has a value of $1$
stored if any of the stored keys in the hash table has $i$ as its hash
address, and $0$ otherwise.  $V$ is maintained by initialising it to $0$
and thereafter setting $V[h(H)] <-~1$ whenever a key $H$ is inserted in the
memory.  The virginity of a location is unaffected by the move operations
during insertion.
The $V$ array is similar to the array of pass bits recommended in [1].
.pp
To understand the change array $C[ LH ]$ it is necessary to look more closely
at the distribution of values of $R[i]$.  These remainders can be grouped 
according to whether or not they share the same original hash address.
Also recall that the hash table, as in BLP, is ordered, so,
all the remainders in a particular group will occur at 
consecutive locations. 
The change bits $C[i]$ are used to delimit the 
boundaries of these groups.  This is done by marking the first remainder
(the one stored at the lowest address) of each group with a $1$.  All other 
members of a group have $C[i]=0$.  To simplify the search and insertion
algorithms it is also convenient to set $C[i]$ to 1 for all locations
which are empty ($R[i]=-1$).
Thus we have the formal definitions of the
values of $V$ and $C$ in terms of the now notional array $T$ (the array
$A$ is described later):
.bp
.nf
.ls 1
.ta 0.5i +0.75i +0.9i
		\(lt\|$r(T[i])$	$T[i] != -1$
	$R[i]~~==~~$	\(lk\|
		\(lb\|$-1$ 	$T[i]=-1$
.sp
		\(lt\|$1	EXIST~ j~h(T[j])=i$
	$V[i]~~==~~$	\(lk\|
		\(lb\|$0$	otherwise
.sp
		\(lt\|$1	T[i] != T[i-1]~ roman or ~T[i]=-1$
	$C[i]~~==~~$	\(lk\|
		\(lb\|$0$	otherwise
.sp 2
		\(lt\|$a(i)	-Na <= a(i) <= Na$
	$A[i]~~==~~$	\(lk\|
		\(lb\|$inf$	otherwise
.sp
	where
.sp
		$Na ~>=~ 0$
.br
		$a(i)~==~ sum from j=lo to i |C[j]=1~"and"~R[j] != -1|~-~
sum from j=lo to i V[j]$
.fi
.ls 2
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i 
.rh "Searching.
For every group of remainders there will somewhere be a $V$ bit equal to $1$ 
and a $C$
bit  at a non-empty location equal to $1$.  That is,
for every $V$ bit which is $1$ there is a corresponding $C$ bit 
which is also $1$.
.FC "Fig. 1."
This correspondence is indicated in 
Fig. 1 by the dotted lines.  When searching for a key $H$ in the table
the location $h(H)$ is examined.  If the $V$ bit is $0$ then the search 
can stop
immediately.  Otherwise a search is made for the corresponding $C$ bit 
which is $1$.  To do this a search is made down (or up) the hash table until
an empty location is found.  The number of $V$ bits which are $1$
from $h(H)$ to this empty
location are counted.  The correct $C$ bit is then found by counting back
up (or down) the array from the empty location
for the same number of $C$ bits which are $1$.  Details of this algorithm
follow.
.ls 1
.sp 
.nf
.ta 1.5c +1.35c +1.35c +1.35c +1.35c +1.35c +1.35c +1.35c +1.35c
.sp
.ne 2
Step 1:	{initialise variables}
	$H <-~ t(K);~~j <-~ h(H);~~rem <-~ r(H);~i <-~ j;~~count <-~ 0;$
	{check virgin bit}
	$if~ V[j]=0~then$ {search unsuccessful} $exit ;$
.sp
.ne 3
Step 2:	{find first empty location down the table}
	$while ~R[i] != -1~do~~begin~~count <-~count - V[i];~i <-~ i-1 ~end ;$
.sp
.ne 4
Step 3:	{search back to find uppermost member of relevant group}
	$while count < 0 ~do~begin~ i <-~i+1;~count <-~count +C[i];~end ;$
	{$i$ now points at the first(lowest) member of the group associated}
	{with the original location $j$}
.sp
.ne 6
Step 4:	{search group associated with $j$}
	$while R[i+1] <= rem ~and C[i+1]=0~do i <-~i+1 ;$
	{check last location to see if key found}
	$if R[i]=rem~ mark then$ {search successful}
	$lineup            else$ {search unsuccessful} ;
.sp 2
.ls 2
.fi
.pp
An example search is illustrated in Fig. 1 for the key 75.
For this example $h$ is computed by dividing by 10 and rounding down, 
$r$ is computed by taking the remainder modulo 10.  
.br
Step 1: The initial hash location
for 75 is 7 and its remainder is 5.  The $V$ bit at location 7 is 1 so the 
search continues.
.br
Step 2:
The first empty location found by searching down the table is at location 3.
There are three $V$ bits with a value of 1 between 7 and 3 at locations 
4, 6 and 7.
.br
Step 3:
Counting back from location 3 three $C$ bits are 1 at locations 4, 5 and 8.
So the $C$ bit at location 8 corresponds to the $V$ bit at the 
original hash location 7.
.br
Step 4:
The group of remainders which share the same initial location 7 can then be 
found in locations 8 and 9.  Thus the remainder 5 at location 8 can be
unambiguously associated with the original key 75 and so it can be
concluded that the information associated with the key 75 is present 
at location 8 in the memory.
.pp
It still remains to specify the update
algorithm and to address some issues of efficiency.  To this end a third
array will be added.
.rh "Speeding up search."
It was found during the simulations reported in Section 4 
that the most time consuming element of this search
is step 2 when the table is scanned for an empty location.  The essential
role played by the empty locations here is to provide a synchronisation
between the 1 bits in the $V$ and $C$ arrays. 
This lengthy search could be eliminated by maintaining two additional arrays,
$#C[ LH ]$ and $#V[ LH ]$, which count from the start of memory the number of 
$C$ and $V$ bits which are 1.  That is:
.br
	$#C[i] ~==~ sum from j=lo to i |C[j]=1~and~R[j] != -1 |$
.br
and	$#V[i] ~==~ sum from j=lo to i V[j]$ .
.br
.pp
In order to find the $C$ bit corresponding to some $V[i]=1$ then all that 
is necessary is to compute the difference $count <-~#C[i]-#V[i]$.  
If $count$ is zero then the remainder stored at $i$ was originally
hashed there and has not been moved.  If $count$ is positive then it is 
necessary to scan down the memory until $'count'$ $C$ bits equal to 1 have been 
found.  If $count$ is negative then it is necessary to scan up the memory
until $'-count'$ $C$ bits which are 1 have been found.  Fig. 2 shows some
examples of the various situations which can arise.
.FC "Fig. 2."
.pp
In fact, it is not necessary to store $#C$ and $#V$ explicitly, it is 
sufficient merely to store the differences $#C[i]-#V[i]$.  To do this the
.ul
At home
array, $A[ LH ]$, will be used.
.pp
At this point it might seem that all earlier gains have been lost because
in the most extreme case $#C[i]-#V[i]~=~M$.  To store a value of $A$
will require as many bits as a memory index -- precisely the gain made by
storing remainders rather than keys!\   However, all is not lost.  The values 
of $A$ tend to cluster closely about 0.  Simulation
shows that a hash memory which is 95% full has 99% of the $A$ values
in the range -15 to +15.  Therefore the following strategy can be
adopted.  Assign a fixed number of bits for storing each value of $A$, say
5 bits.  Use these bits to represent the 31 values -15 to +15 and a 32nd
value for $inf$.  Then anywhere that $#C[i]-#V[i]~<~-15~"or"~>+15$ assign $inf$
to $A[i]$ otherwise assign the true difference.
.pp
When searching for a key a scan can now be done down (or up) the memory
until a location $i$ where $A[i] != inf$ is found.  (At worst this will occur
at the first unoccupied location where $A[i]$ will be zero.)\  From there
a count can be made up (or down) the memory for the appropriate number of
$C$ bits which are 1.
.pp
In the detailed algorithm given below some differences from the simpler search
can be noted.
In step 3, $count$ can be both
positive and negative.  Therefore code is included to scan both up and down
the memory as appropriate.  At the end of step 3, $i$ can be pointing at any
member of the group associated with the original hash location.  (Above
$i$ was always left pointing at the lowest member of the 
group.)\    Therefore code is included for scanning both up and down the
members of the group.  In order to prevent redundant checking of locations
by this code a flag $direction$ is used.  It can take on three values
depending on the direction of the memory scan: $"up"$, $"down"$, and $here$
(no further searching need be done).
.ls 1
.sp 
.nf
.ta 1.5c +1.45c +1.45c +1.35c +1.35c +1.35c +1.35c +1.35c +1.35c
.sp
.ne 2
{Search using at-home count}
Step 1:	{initialise variables}
	$H <-~ t(K);~~j <-~ h(H);~~rem <-~ r(H);~~i <-~ j;~~count <-~ 0;$
	{check virgin bit}
	$if~ V[j]=0~then$ {search unsuccessful} $exit ;$
.sp
.ne 5
Step 2:	{find first well defined $A$ value down the memory}
	$while ~A[i] = inf~do~begin~count <-~count - V[i];~i <-~i-1 ~end ;$
	$count <-~count +A[i];$
.sp
.ne 16
Step 3:	{Search either up or down until a member of sought group is found}
	{Also ensure $direction$ is set for Step 4.}
	$if count < 0 ~then$
		$direction <-~"up";$
		$repeat i <-~i+1;~count <-~count +C[i]~ until count = 0 ;$
		$if R[i] ~>=~ rem ~then direction <-~here;$
	$else if count > 0 ~then$
		$direction <-~"down";$
		$repeat ~count <-~count -C[i];~i <-~i-1~ until count = 0 ;$
		$if R[i] ~<=~ rem ~then direction <-~here;$
	$else${$count = 0$}
		$if R[i] > rem ~then direction <-~"down"$
		$else if R[i] < rem ~then direction <-~"up"$
		$else direction <-~here ;$
.sp
.ne 16
Step 4:	{search group associated with $j$}
	$case direction~ "\fBof\fP"$
	$here:	;${do nothing}
	$"down":	repeat	if C[i] = 1 ~then direction <-~here$
			$else$
			$begin$
				$i <-~i-1;$
				$if R[i] ~<=~ rem ~then direction <-~here;$
			$end$
		$until direction = here ;$
	$"up":	repeat	if C[i+1] = 1 ~then direction <-~here$
			$else$
			$begin$
				$i <-~i+1;$
				$if R[i] ~>=~ rem ~then direction <-~here;$
			$end$
		$until direction = here ;$
	$end ;$
.sp
.ne 4
Step 5:	{check last location to see if key found}
	$if R[i]=rem~ mark then$ {search successful}
	$lineup            else$ {search unsuccessful} ;
.sp 2
.ls 2
.fi
.FC "Fig. 3."
.pp
Fig. 3, gives an example of this searching algorithm.
The same memory and key (75) as in Fig. 1 are used.  For the
purposes of the example each $A$ value is allocated one bit.  This allows 
only two values 0 and $inf$.  The search proceeds as follows:
.br
Step 1: The initial hash location
for 75 is 7 and its remainder is 5.  The $V$ bit at location 7 is 1 so the 
search continues.
.br
Step 2: 
The first $A$ value not equal to $inf$ found by searching down the table 
is at location 6.
There is one $V$ bit with a value of 1 between 7 and 6, at location 7.
$count$ is then set to $A[6]+1~=~1$.  So on the next step one $C$
bit will be sought.
.br
Step 3:
Counting back up from 6 the first $C$ bit equal to 1 is at location 8.
So the $C$ bit at location 8 corresponds to the $V$ bit at the 
original hash location 7.
.br
Step 4:
The group of remainders which share the same initial location 7 can then be 
found in locations 8 and 9.  The remainder 5 at location 8 can thus be
unambiguously associated with the original key 75 and it can be
concluded that the information associated with the key 75 is present 
at location 8 in the memory.
.rh "Insertion."
Insertion of a new key into the memory requires three distinct steps:
first locating whereabouts in the memory the key is to be placed;
second deciding how the memory is to be rearranged to make room for the new
key; and third moving the remainders whilst correctly preserving the
$A$ and $C$ values.  (The $V$ bits remain fixed during the move.)\  
The initial search can be done as explained above with the small addition that
the correct insertion point must still be located when the key is not present.
The second and third steps follow the algorithm in Amble and Knuth [1]
with the addition that the values of the $A$ array must be re-calculated
over the shifted memory locations and the $C$ but not the $V$ bits must
be moved with the keys.  
Details of this can be found in an earlier draft of this paper, [4].
.sh "4 Performance"
.pp
Now I consider how long these algorithms will take to run.  The measure of 
run time that I will use is the number of 
.ul
probes
that each algorithm makes, that is, the number of times locations in the 
hash table are examined or updated.  
CPU time measures were taken as well and correlate well with the empirical 
counts of probes given below.
.FC "Table I"
.FC "Table II"
.rh "Searching."  
Tables I and II list the results of simulations
for successful and unsuccessful searches respectively.  Results are tabulated
for ordinary BLP and for compact hashing with  
different memory loadings and different sizes for
the $A$ field.  If the number of keys stored
in the memory is $N$ then the memory loading is measured by 
$alpha ~==~N/M$, the fraction of locations in the memory which are full. 
Values of
Na were chosen to correspond to $A$ field lengths of 1, 2, 3,
4, and 5 bits, that is for Na equal to 0, 1, 3, 7, and 15 respectively,
and also for the case where no $A$ field was used.
Increasing the size of the $A$ field beyond 5 bits had no effect at
the memory loadings investigated.  So Na equal to 15 is effectively the
same as an unbounded size for the $A$ values.  
.pp
The insertion procedure is 
guaranteed to be optimum only for BLP, not for compact hashing.  If none
of the values in $A$ is $inf$ then the sequence of locations examined by
compact
hashing is the same as for BLP and so the strategy will still be optimum.
(This is easily seen by noting that in compact hashing
$A[h(t(K))]$ determines the direction
of the search depending on whether it is positive or negative.  During the 
subsequent search no
locations past the sought key will be probed.  This is exactly the same
probing behaviour as in BLP.)\ 
However, if no $A$ array is being used or if some values of $A$ are $inf$
then extra locations need to be probed to find an empty location or one which
is not equal to $inf$.
.pp
As expected the figures in Table I show that for Na at 15 and using optimum
insertion the probes for a successful search are almost the same as for BLP.
(The small differences are accounted for by statistical fluctuations
in the simulation results.)\   
.pp 
As Na is decreased the number of probes needed for searching increases.
This
reflects the greater distances that must be traversed to find a value of 
$A$ not equal to $inf$.  It is notable however that even a single bit allocated
to the $A$ fields dramatically improves the performance.  Even at a
memory density of 0.95 some 25% of non-empty locations have $A$ values of 0.
.pp
The pattern for unsuccessful searches is broadly the same as sketched above
for successful searches except that in general unsuccessful searches
are quicker than successful ones.  This is a result of the $V$ bits
which allow many unsuccessful searches to be stopped after a single probe. 
For example even at the maximum possible memory density of 1 some 36% of
$V$ bits are zero.  This results in compact hashing being faster than
the reported values for ordinary BLP.  
However, unsuccessful BLP searches could be
improved to a similar degree by incorporating $V$ bits.
.FC "Table III"
.rh "Insertion."
The probes to insert a new key can be broken down into three components,
those needed to locate the position where the key is to be inserted,
those to decide the direction of movement 
and those to effect the movement of the memory.
The first of these will be slightly larger than
a successful search and so the results of Table I have not been repeated.
The second two are independent of Na as they are dependent only on
the lengths of blocks of adjacent non-empty locations.  The values
for these Na independent components are listed in Table III.
In most cases
this Na independent component is much larger than the search component.
The exception occurs 
where no $A$ values are being used, when the two components
are comparable.
.pp
Cleary [5] examines a random insertion strategy for ordinary BLP
where blocks of entries in the hash table are moved in a randomly chosen
direction
to accomodate a
new entry rather than in the optimum way described by 
Amble and Knuth [1].
It is shown that this strategy can
improve insertion times by a factor of 4 at the expense of small degradations
(at most 15%) in retrieval times.  These
results are shown by simulation to extend to compact hashing.  
Indeed for small values of
Na the optimum and random strategies show no significant differences in
retrieval times.
.rh "Analytic approximation."
While analytic results are not available for the number of probes 
needed for retrieval or insertion an
approximation can be developed for some of the cases.  It is shown by
Amble and Knuth [1] and Knuth [8] (problem 6.4-47) that the average
length of a block of consecutive non-empty locations when using
the optimum insertion strategy is approximately
$(1- alpha ) sup -2 ~-~1$.  
Let this block length be $L$.  
.pp
Consider the case of a successful search when no $A$ field is used.
A successful scan of a block from an arbitrary
position to the end takes on average $L/2~+~1/2$ probes.  
During the initial scan down the memory in the simulations the initial check of the
$V$ bit and the final empty location examined were each counted as a single probe.
This gives a total of $L/2~+~5/2$ probes for the initial scan down. (This is not
exact because there will be a correlation between the position 
of a key's home location within a block 
and the number of keys hashing to that home location).
The scan back up a block will take $L/2~+1/2$ probes (exact for a successful search).
This gives $(1- alpha ) sup -2 +2$ for the expected
number of probes during a successful search.  These values are listed in Table I
and are consistently low by about 10%.
.pp
For an unsuccessful search with no $A$ field the initial scan down the 
memory will take $L/2~+5/2$ probes as above (again this will not be exact because
the probability of a $V$ bit being one will be correlated with the 
size of a block and its
position within the block).
An unsuccessful scan of a block takes $L/2~+~1/2$ probes.  (This assumes
the keys in the block are distributed uniformly.  
This gives the following probabilities that the search will stop at a 
particular location in the block: the first location, $1/2L$; locations 2 
through $L$, $1/L$; the empty $(L+1)$st location, $1/~2L$.
This will not be true for compact hashing because the probability of stopping at a key
which shares its home location with a large number of other keys will be smaller than
for one which shares it with few others.)\ \ Summing these two terms gives $L~+~7/2$
probes.
Given that the keys are distributed randomly there is a probability of 
$e sup {- alpha}$ that a given $V$ bit will be zero.  So the expected number 
of probes overall for an unsuccessful search is 
$e sup {- alpha}~+~(1-e sup {- alpha}) cdot ((1- alpha ) sup -2 + 5/2)$.
These values are listed in Table II and are consistently low by about 5%.
.pp
Considering only the insertion component which is independent of Na then
it is possible to derive an expression for the number of probes.
There is an initial
scan to move the memory down and insert the new key which will scan about half 
the block ($L/2~+~5/2$ probes) 
and a subsequent scan back up of the entire block ($L~+~1$ probes).  
Empirically the probability
that the entire block will subsequently be moved back up is a half which gives
an expected $1/2(L~+~1)$ probes.
Summing these three contributions gives $2(1- alpha ) sup -2 ~+~2$
as the expected number of probes for an insertion (excluding the search time).
Values for this expression are tabulated  in Table III, they are in good 
agreement with the empirical values.
.sh "Acknowledgements"
.pp
I would like to thank Ian Witten for careful checking of a draft version.
Also John Andreae for discussions which showed that something like compact
hashing might be possible.
.sh "References"
.ls 1
.LB "[6]    "
.sp
.NI "[1]  "
[1]\ \ O.\ Amble and D.\ E.\ Knuth, "Ordered Hash Tables,"
.ul
Computer Journal,
vol. 17, pp135-142, 1974.
.sp
.NI "[1]  "
[2]\ \ J.\ H.\ Andreae,
.ul
Thinking with the teachable machine.
London: Academic Press, 1977.
.sp
.NI "[1]  "
[3]\ \ J.\ L.\ Carter and M.\ N.\ Wegman, "Universal classes of hash 
functions,"
.ul
J. Computer System Sci.,
vol. 18, pp143-154, 1979.
.sp
.NI "[2]  "
[4]\ \ J.\ G.\ Cleary, "Compact hash tables,"
Research Report, 82/100/19,
Department of Computer Science, University of Calgary, July 1982.
.sp
.NI "[3]  "
[5]\ \ J.\ G.\ Cleary, "Random insertion for bidirectional linear probing
can be better than optimum," 
Research Report, 82/105/24,
Department of Computer Science, University of Calgary, September 1982.
.sp
.NI "[5]  "
[6]\ \ J. A. Feldman and J. R. Low, "Comment on Brent's Scatter Storage 
Algorithm,"
.ul
CACM,
vol. 16, p703, 1973.
.sp
.NI "[7]  "
[7]\ \ G. D. Knott, "Hashing functions,"
.ul
The Computer Journal,
vol. 18, pp265-278, 1975.
.sp
.NI "[7]  "
[8]\ \ D.\ E.\ Knuth, 
.ul
The art of computer programming:Sorting and searching.
Vol III.
Reading, Massachusetts: Addison Wesley, 1973.
.sp
.NI "[8]  "
[9]\ \ V.\ Y.\ Lum, "General performance analysis of key-to-address 
transformation methods using an abstract file concept,"
.ul
CACM,
vol. 16, pp603-612, 1973.
.sp
.NI "[12]  "
[10]\ \ V.\ Y.\ Lum,\ P.\ S.\ T.\ Yuen and M.\ Dodd, "Key-to-address
transformation techniques,"
.ul
CACM,
vol. 14, pp228-239, 1971.
.sp
.NI "[13]  "
[11]\ \ W. D. Maurer and T. G. Lewis, "Hash table methods,"
.ul
Comp. Surveys,
vol. 7, pp5-19, 1975.
.ls 2
.in 0
.bp 0
\&\ 
.RF
.ta 0.5i +0.75i +0.75i +0.75i +0.75i +0.75i
.nf

	$i	T[i]	R[i]	V[i]	C[i]$
	\l'3.5i'
.br

	12	\0\ -1	\ -1	0	1
.br
	11	101	\01	0	1
.br
	10	\087	\07	1	1
.br
	\09	\076	\06	0	0
.br
	\08	\075	\05	1	1
.br
	\07	\067	\07	1	0   
.br
	\06	\066	\06	1	0
.br
	\05	\065	\05	0	1
.br
	\04	\041	\01	1	1
.br
	\03	\0\ -1	\ -1	0	1
.br
	\02	\019	\09	0	0
.br
	\01	\018	\08	1	0
.br
	\00	\016	\06	0	1
.br
					     Step 1 Step 2 Step 3 Step 4
.br

	$h(H)~=~ left floor^ H/10 right floor$
.br

	$r(H)~=~ H~ roman mod ~10$
.br

.FG ""

.bp 0
\&\ 
.RF
.nf
.ta 0.5i +0.75i +0.75i +0.75i +0.75i
	$count~=~A[i]~=~#C[i]-#V[i]$
.sp
	$count = 0$			$count = 0$
	$C$	$V$		$C$	$V$
	0\|\(rt	1		0\|\(rt	1
	0\|\(rk	0		0\|\(rk	1$<-~i$
	1\|\(rb	1$<-~i$		1\|\(rb	0
.sp
	$count =1>0$		$count = 2 > 0$
	$C$	$V$		$C$	$V$
	0	1$<-~i$		0	1$<-~i$
	1	0		1	0
	0\|\(rt	1		1	1
	0\|\(rk	0		0\|\(rt	0
	1\|\(rb	0		0\|\(rk	0
				1\|\(rb	0
.sp
	$count =-1<0$
	$C$	$V$
	0\|\(rt	0			\|\(rt
	0\|\(rk	0			\|\(rk\ \ Group of entries which hash to 
	1\|\(rb	0			\|\(rb\ \ location i
	0	0
	1	1$<-~i$			\ \ \ Corresponding $C$ and $V$ bits
.FG ""
.bp 0
\&\ 
.RF
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.9i +0.6i +0.4i
$i	R[i]	V[i]	C[i]	#V[i]	#C[i]~~#C[i]-#V[i]	A[i]$
.br
\l'4.5i'
.br
12	\ -1	0	1	6	6	\00	0
.br
11	\01	0	1	6	6	\00	0
.br
10	\07	1	1	6	5	\ -1	$inf$
.br
\09	\06	0	0	5	4	\ -1	$inf$
.br
\08	\05	1	1	5	4	\ -1	$inf$
.br
\07	\07	1	0	4	3	\ -1	$inf$
.br
\06	\06	1	0	3	3	\00	0
.br
\05	\05	0	1	2	3	\01	$inf$
.br
\04	\01	1	1	2	2	\00	0
.br
\03	\ -1	0	1	1	1	\00	0
.br
\02	\09	0	0	1	1	\00	0
.br
\01	\08	1	0	1	1	\00	0
.br
\00	\06	0	1	0	1	\01	$inf$
.br
								Step 1 Step 2 Step 3 Step 4
.sp 
Note: 	Only one bit has been allowed for the values of $A$. 
.br
	So the only two possible values are 0 and $inf$.

.FG ""
.bp 0
\&\ 
.RF
.ta 1.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
.ce
Successful Search
	\l'4i'

	$alpha$	\0.25	\0.5	\0.75	\0.8	\0.85	\0.9	\0.95
	\l'4i'
	
	$BLP sup 1$	\0\01.1	\0\01.3	\0\01.7	\0\02.0	\0\02.3	\0\02.9	\0\04.2
	
	Na
	15	\0\01.1	\0\01.3	\0\01.7	\0\01.9	\0\02.2	\0\02.8	\0\04.6
	\07	\0\01.1	\0\01.3	\0\01.7	\0\01.9	\0\02.2	\0\02.8	\0\09.7
	\03	\0\01.1	\0\01.3	\0\01.7	\0\01.9	\0\02.4	\0\04.2	\025
	\01	\0\01.1	\0\01.3	\0\02.0	\0\02.5	\0\04.1	\0\08.8	\045
	\00	\0\01.1	\0\01.5	\0\03.3	\0\04.9	\0\07.9	\015	\061
	\0-	\0\04.2	\0\07.1	\020	\030	\049	110	370
	\0*	\0\03.77	\0\06.00	\018.0	\027.0	\046.4	102	402

		$\& sup 1~$Taken from Amble and Knuth [1].
		- No $A$ field used.
		* Analytic approximation to line above.
.FG ""
.bp 0
\&
.RF
.ta 1.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
.ce
Unsuccessful Search
	\l'4i'

	$alpha$	\0.25	\0.5	\0.75	\0.8	\0.85	\0.9	\0.95
	\l'4i'

	$BLP sup 1$	\0\01.3	\0\01.5	\0\02.1	\0\02.3	\0\02.6	\0\03.1	\0\04.4

	Na
	15	\0\01.2	\0\01.4	\0\01.8	\0\01.9	\0\02.1	\0\02.4	\0\03.5
	\07	\0\01.2	\0\01.4	\0\01.8	\0\01.9	\0\02.1	\0\02.4	\0\09.7
	\03	\0\01.2	\0\01.4	\0\01.8	\0\01.9	\0\02.2	\0\03.3	\015
	\01	\0\01.2	\0\01.4	\0\01.9	\0\02.2	\0\03.2	\0\06.0	\028
	\00	\0\01.2	\0\01.5	\0\02.6	\0\03.4	\0\05.3	\0\09.9	\036
	\0-	\0\01.7	\0\03.4	\011	\016	\028	\064	220
	\0*	\0\01.72	\0\03.16	\010.2	\015.6	\027.3	\061.2	247

		$\& sup 1~$Taken from Amble and Knuth [1].
		- No $A$ field used.
		* Analytic approximation to line above.
.FG ""
.bp 0
\&
.RF
.ta 1.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
	\l'4i'

	$alpha$	\0.25	\0.5	\0.75	\0.8	\0.85	\0.9	\0.95
	\l'4i'

		\0\04.3	\0\08.8	\032	\049	\086	200	700
	*	\0\04.56	\0\09.00	\033.0	\051.0	\089.9\
	201	801

	* Analytic approximation to line above
.FG ""
.bp 0
\&
.ce 
List of Figures
.sp 2
Fig. 1. Example of compact hash memory and search for key.
.sp 2
Fig. 2. Examples showing different values of $#C[i]-#V[i]$.
.sp 2
Fig. 3. Example of calculation and use of array $A$.
.sp 2
.ce
List of Tables
.sp 2
Table I. Average number of probes during a successful search.
.sp 2
Table II. Average number of probes during an unsuccessful search.
.sp 2
Table III. Average number of probes to move block of memory.
.sp 2
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                  @                                                                                                                                                                   xx       |                           g                                                                                                                                                                 |       >                x  ?                                                                                      p8                       < x             ?                         x                      ?=                                                                                     |                     ? ~                                    8                  ? ?<                                                                         ?                               ?                                p              ?  ?= >x                                                                          ?             `                ? ~                              x    x    x  ?   ? 9                                                                          ?       p                     ~                              x  xx?߁                                                                                 ?      x                     ~     0                ?  x    π  ?                                                                         |         >@      `?     ?          x   營  x  |                                                                         <    >  | ߏ    ߟ         x  烿  |  |                                                                         ?    <   ߟ     ϟ         x  ǁ    |; x                                                                        ?    8  | ϟ     ϟx         |x ?   ?ǀ ~{                                                                         ? ?        ߟ| Ϗ   ~ π ϟ         xxψ    O  ?                                                                        ? ?    }   ߏ| Ͽ    π ϟ          |x    c ϏϏ?                                                                         ? >      ~? Ϗ   >?  ϟ          xx   燏 s ?  >x  `                                                                      ?       ~? Ͽ   >? π Ϗ          |xǀ σ  ~                                                                               ?    ?   ~?  Ͼ    |  π χ        s |x  ߁                                                                                        ?ߟ      ?~?` Ͽ   | ? ϟ                                                                                                      ??      ?Ϗ~~> Ͽ   x                ?翀|  `                                                                                              ?    ~  ߏ~~   ?            ?  |  |                                                                                                                 ?               ~  <@x                                                                                                                       ?               <   x                                                                                                                                                                                                                                                                            ?    ߟ?     ?                                                                                                                                             ?  ?|  p >@px  @   0                      |                                                                                                                                                   ~<                                                                                                                                                                                                                                                                                            <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         8                                  >         ?                                                                                                                                                               >           ?       ?               >                                                                                                                                                          >                             ?               >         ?                                                                                                                                                 >            ~                 ~              <         ?                                                                                                                                                 ~     8      ?                 >     <                                                                                                                                                                    ~      ?      >                |    @|                                                                                                                                                                        ?| s  p   ~ ??<                                                                                                                                              ?  ~?  |???                                                                                                                                     ?     |?? ?~?                                                                                                                                      ? ~ ?>|~}                                                                                                                                      |? ~?߀|>~|                                                                                                                                     > Ͽ?? ~|}~                                                                                                                                     ?~> |ߟ?>~|? >|                                                                                                                                    Ϗ ?|> |?> >~|| }@ >                                                                                                                                      ??~> | >>~~ |>  >|                                                                                                                                    ߏ ~|> }?> ? O>>|~<π|?|}p|xx                                                                                                                                    ߏ 
~> }? >8>~?߀|?~>|~|                                                                                                                                    ߏ  > χ>?~                                                                                                                                     ?} ߃???~?                                                                                                                                    π????~?                                                                                                                                    ? ?????                                                                                                                                        ??|         `                                                                                                                                             ? | ?x |8`     `                                                                                                                                                                        y          ?                                                                                                                                                                                                           ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           >                                                                                                                                                                x               ?                 ~                                                     ~                                                                                                        8|               ?                 ~                                                     >                                                                                                      ? x~              ?                 ~                                                                                                                                                             >             ?   ?              >                                                                                                                                                                               ~               >           `                                                                                                                                              >    | <  | g>> <<?                                                                                                                                             >   >??~>                                                                                                                                    ?  ?? >?~>                                        ~                                                                                            ?? >?>>                                                                                                                                   ??p~>?>>>?~}                                                                                                                                   ? ~π>>>>>>=                                                                                                                                  ?| ?|߇߇~?> ?>>>>~}                                       `                                                                                           ?>~ ?|~π~  >>>>}                                                                                                                                   >~| ?~߇~>  ~?>>>>|}                                                                                                                                   ??> ? |~O~~ >3>>>>>}                                                                                                                                   >~| ?|χϟ~?~| ~?~~?>>>>|}                                       >            `                                                                                ?>~ ||π?  ~>?>~~                                                                                                                                 ߾>~~ ߀? ~??~                                       >                                                                                      ? >???~?                                                                                                                             ? <~? >?~~                                       >                                                                                      ? |? }   >8                                                                                                                                      ?                     O                                                                    >                                                                                        ??                                                                                                  q`                                                                                                  x  >                                                                                          ?    @  ?                                                                                               |  >                                                                                                                                                                                                  ? 8                                                                                          ?       ?                                                                                                x                        0                                                                                                                                                                                                                                                                          ?      >                                                                                                                                                                                                  >                                                                                                                         ?                                                                  ?     <                                                                                                                   ?                                                                   ?<                                                                                   >          ?                      ?    @                                                       >{  >      ?|                                                                                   ?                                ?                                                          >{     <      ?|                                                                                   >          ?                   >  >                                                           |  p      ?|                                                                                   >                               >                                                       |     ހ     ? |                                                                                                   0  ?                                                      |    ϟ     ? x                                                                                                 ?                                                      >    ϟ     ? x                                                                                  x? ~? ?                                                      ?       Ϗ                                                                                         ?? ?                                                                    ?                                                                                   ? ?? ?                                                                         }                                                                                   | ? ?                                                                        }                                                                                   ~~~|} ?                                                                                                                                                             >|~| ?                                                                                                                                                                >~| Ͽ?                                                                                                                                                                   >~| Ͽ? À=                                                                                                                                                                >~| Ͽ??                                                                                                                                                                 ~~| Ͽ?                                                                                                                                                                  >~| ϟ  π                                                                                                                                                                 ~ ϟ߿                                                                                                                                                                  ~ ߟ?? ? ?                                                                                                                                                               ~? ߏ?? ?                                                                           ?                                                                                           |                                                                                         =                                                                                          >0?                                                                                                       y                                                                                              ~                                                                                                            x                                                                                              |             ?                                                                                                x                                                                                              ~             ?                                                                                                x                                                                                                           ?          >                                                                                          y                                                                                              ~                                                                                                                    x                                                                                              <                                                                                                                     }                                                                                                                                                                                                                    ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            8                                                                                                                                                                                            @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              `    |                                                         >                                                                  p                     |                                                         >                                                                                                                             |                                              >            <                                                                                                                                                |                                              >             <                                                                                                                                                 |                                              ~             |                                                                                                                                                 |                                                            |                                                                                                                                                 |                                                           |                                                                                                                                                 |                                                            |                                                                                                                                                 |                                              |              x                                                                                                                                                 |                                              |              x                                                                                                                                               |                                                                                                                                                                                                           |                                                                                                                                                                                                         |                                                                                                                                                                                                         |                                                                                                                                                                                                        |                                              <             |                                                                                                                                          |                                             <                                                                                                                                                       |                                             |                                                                                                                                                      |                                      Ǿ    |x?                                                                                                                                                      |                                       <x?                                                                                                                                                         |                                       <    > 8                                                                                                                                                    |                                       <    <  x          ?                                                                                                                                          |                                       ?<    |  x          ?                                                                                                                                          |                                           x        ??                                                                                                                                          |                                      ?      x                                                                                                                                                    |                                              x ?                                                                                                                                                   |                                                x ?                                                                                                                                                    |                      ?                                                                                                                                                                        |                                         ?8 ?                                                                                                                                              |                                  ?8 ?                                                                                                                                              |                      <  >   >   ?p                                                                                                                                               |                      |  <   >   x p                                                                                                                                                                          |     x   >    x r       >                                                                                                                                             |                      |     >           8        >                                                                                                                                                                   y    8   |           x >~       <                                                                                                                                           |                      |    Ͽ  ~           x >       <                                                                                                                                                                 }      ?            x <       x                                                                                                                                           |                      ?                    8         x                                                                                                                                                               ?                   '  0                                                                                                                                                  |                                           ?                                                                                                                                                   |                                                        8                                                                                                                                          |                                                      8                                                                                                                                       |                                           <  <         |                                                                                   ?                                                     |                                           >            | `                                                                                                                                                                                   >             <                                                                                                                                       |                                             >              >                                                                                                                                       |                                               ~                                                                                                                                                    |                                                ?                                                                                              ?                                                    |                                                                                                                                              ?x                                                    |                                                         ߀|                                                                                   ?x                                                    |                                                         x                                                                                   ?x                                                    |                                              >           x                                                                                   ?                                                    |                                              <                                                                                                                                                  |                                              |                                                                                              p                                                    |                                              |                                                                                                                                                   |                                              |                                                                                                                                                     |                                              x                                                                                                `                                                      |                                              x           ?                                                                                                                                            |                                                         ?                                                                                                                                            |                                                         ?                                                                                                                                            |                                                         ?                                                                                                                                            |                                                                                                                                                                                                       |                                                             ?                                                                                                                                            |                                                	                                                                                                     `                                                    |                                                                                                                                                                                                                                                      ?            >                                                                                                                                              |                                                                                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                  |                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                    |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                           p ]                                                                                                                                   |                                                               >     <                                                                                                                                      |                                          < <                 >     <                                                                                                                                   |                                        ~ <                      <x                                                                                                                             |                                         <                      8x                                                                                                                           |                                     ~                       8<                                                                                                                           |                                    >                     8 x <                                                                                                                           |                 `               8  >           |>    8                                                                                                                           |                8               x  =      0 ?                                                                                                                          |               x      0 x    ?<  ~?  p                                                                                                      >                   |                ?  ?| Ǐq ?  p                                                                                                       >                                 ?  ~  ?| χ3 <  `<                                                                                                       >                    |            ? ?  x  >~< ߃ <  |                                                                                                                 ǟ                        <  x  <><  <|   x                                                                                                                            |            ǿx >? x  <<   <x   x <                                                                                                       >                                 ?  x  <<C   <|   y <                                                                                                       >                                x   x  <<  >~ yϟ < 8                                                                                                    <                                    Ǉ   x  <<# χ >? y < |                                                                                                   >                                      x  Ϟ  2x  << ǜ{ ? ? 8 ~                                                                                                  <                                        |  ǟ>3  x  <<|    ? x <~                                                                                                                              |           3 9| Ͽ8    ?|    x <>                                                                                                 <                                             ?|  |   p x                                                                                                                              |            ?   ??  |                p<                                                                           @                                                                ?~? ?                             p                                                                                                                              |             x<                                                                                                                                         <                                         p                                                o                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                     |                                                                                                                                                  >                               <                                                                                                                                                                            <       `                                                    |                                                                       >                                                                     9       @                       <                                                                                                                                                                     	                                                         |                                                                                                                                                                                                                                                                                                                                                                      >                                                                                                                                                                                                                                                                                                                                                                                        >                                                                                                                                                                                                 ?                                                                                                                                                                                                 ?     8                                |                                                                                                                                                        ~|  8 ?                                                                                                                                                                                   ` ~8                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                            ?>#   0                                                                                                             <                                                   <    ?                             |                                                                                                                                                    x p  ??                                                                                                                                                                            ?   p  00 ?                             |                                                                                                                                     ?|          ?   p         |                                                                                                                                                            ?|             `         ~                                                <                   `                                                                                      ?         ~                  ~                                                |                            `             p	3|                                                   ??        @                    >                                                <                             ?  ??                                                    ?                              >                                                <                χ      >?߇y                                                                                  >                                                <      ?      >?||<y                                                                                                                                `    ?  }  ǌ  ><>>x<x8;                                                    ?                                                                         <|?      ~}    <<<>p<x>x                                                    ?          ?                                                  |             >~  ?  Ϟ1  x<x?  g  <<<>xx                                                             >                                                             ?  >>  >|?ǏsϏ Ǉ  x<x?    <<<>xx                                                              ~                                                  |           >x  >>|  <<ß3Ϗ O燏  x<x<     <<<<x|                                                    ?          |                                                             <x  >><|  |<? 珏?  x<x<     <<<<x|                                                              |                                                  |             ><<  |<x  Ǐ  x<x>  >  <<<x<x?                                                                                                                               >><|  x<x  Ǐ  x<x> ?  ><<<<|xx?                                                                                                                                 ><|  |>| oǇ  x<xǀ   >>>>?x?                                                                                                                              ?x  ><<|  |<3Ϗ~8 y  |x =  >>~~???                                                                                                                    |           >|  >><  ~>~9矜?  y      >>>>?                                                                                                                                |  >~<|  ~~?  ϟ    x      8                                                                                                                                 |           ?  >|  ?  Ϗx|  x                   <                                                                                                                                           ?  ~~  ??  ? x         x                   <                                                                                                                                 |             ~~  A                  x                   ~            <                                                                                                                                8                                                   ~            0                                                                   o                                                   |                                                          0            0                                                                                _                                                                                                                                                                                                                                 ~                            |                                                                                                                                                                                ~                                                                                                                                                                                                             >                            |                                                                                                                                                                                  >                                                                                                                                                                                                                                             x                                                                                                                                                                                                                                                                                                                                                                                                                               x                                                                                                                                                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                               x                                                                                                                                                                                                              |                                                                                                                                                                                                               x                                                                                                                                                                                                               |                                                                                                                                                                                                                                                          <     ? >                                                                                                                                            |                                  p               >     ? >                                                                                         ?                        ~                                                                       ><                                                                                               ?`                        ~                           |                >                            <                                                                                                                         ?                           |                >                            x           x                                                                                                                                         |                                           x       8x                                                                                                                                         |             p                         <?x                                                                                                                                         x                                  ?  |?<                                                                                                                                         x                           |ß<<                                                                                       `                                                               ?  ?     8 |~|?<                                                                                                                                                               <<|<                                                                                      `                                                   x               {      <<| <                                                                                      ?                                                              ?    Ǉ      <<|x <                                                                                                                                           |           ?    ߇      <<xx <                                                                                                                 ?                         |                    <<x |<                                                                                                                                                      ?     ? A <<y`~8<p                                                                                                                                                   |        | <<||?8x                                                                                                                                                  |    3Ǉ   y < <|||?x                                                                                                                                                   ~       q   ~||8?xx                                                                                     ?                                                              ?     ?    ~?0?xp                                                                                                                                       |           ?      ?  x|                                                                                                                               ?                                   ?    ?       x                                                                                                                                                                           @            <                                                                                                     `                                                             x  x  8                         <                                                                                                                                                                                              {                                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                                                                                                           ?                                                                                                                                                                                                                                                                                                                                                                                     `                                                                                                                                                                                                                                                                                                                                                                                                                             `                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                      ?                                                                                                                                                                          |                                                                                                                                                                                                                                               8                                                                          |                                                                     |  ?        |                                                                ??                                                                             `                                                                                                                                                                                                    x                           |          |                                                                                                                                      >     <         >    | <                         <        <                                                                                                                          |                >         ?    |                         <         <                                                                                                                                           >              p             x         <   g                                                                                                                                  >                 y  x            @x   g <  ?                                                                  p                                                             <              <    1<>~  <                                                                                                                                             <  3~???  <  <<|x                                                                                          >                                     xg~ || >x   < ? <x<x                                                                                         ?                                   ? < >~   x~xx   <  <x<yy                                                                 ?                         ?                                    ~? >>|?  | >x<xx   <  x<y                                                                ?                                               |            ~ ><?  x >><<xx   < x  x<y                                                                                                                           ?< >y燀 ><  ?x < <xx    < x  x<?y                                                                                                                          >> >x ><  x ><xx    < x  <x<|y                                                                 ?                      ǀ                                   >< <| ><x   <x<xx   < < >|<xy`                                                                 ?                      ǀ                        |           >> >| ><x   <gx<xx   < ? >><y                                                                 ?                                                         >>  > ><|  <Ǽx|xx   < ? ?                                                                ?                                                         <>>  <? ><|8  <ǿ|x   ~                                                                   ?                                              |           <>> > ><?  >~|   ~  >xx?                                                                 ?                                                         |>< < ??  ~>  > |  @                                                                                                   ?                          |           >> > ?  | ~                                                                                                                           ?                                        ~ ~ ?                                                                                                                                                                                    ?? ~                                                                                                                                                                                                  `                                                                                                                                                                                                           <                 x <                                            `                                                                                                                                                                 < x                                                                                                                                                                          |                                      `                                                                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                                                                                                                                    p        x                                                                                                                              |                                    @                             x        |                                                                                                                                                                                             x        x                                                                                                                              |                                                 x      <        <                                                                                                                                                                       >     p              x                                                                                                                               |                                         |0      8              <  x                                                                                                                                                                     00   `   | ~                                                                                                                              |                                    >     ???    ?                                                                                                                                                    >   > ~ ?       <                                                                                                                           |            0     >  ?     ??y  xx <<yǏ                                                                                                                                   ??    <  {Ǉ    >>> ǀ p xx                                                                                                                           |            << Ǐ     ~    xx x<                                                                                                                                 | > x< |<  χ    <    p <?                                                                                                                         |       Ͽ > > > || ?     ?   xx x<?                                                                                                                                 | > y>? |    <   p <3Ϟ?                                                                                                                         |          | |      xx |<1Ǐ                                                                                                                                     x>  |  #Ǉ x <c  x ||ϟ                                                                                                                                      |  |< s 8 q  ?                                                                                                                                 π < > x> |< Ϗǀ 8 >  ?                                                                                                                          |       σ >  |x >?Ǐ <   ?y                                                                                                                                   ? < >ϟ? ?8 ?  <  a                                                                                                                                                ? <                                                                                                                                                             ?                   8                                                                                                                                                                                      8                                                                                                                                                              ?぀                                x                                                                                                                                                                                                              ?                                                                                                                                                                                                            ?                                                                                                                                                                                                                                                                                                                                                                                                             @                                                                                                                                                                                                                                                                     p                                                                                  0                                                                                                                                                                                                               ?                                                                                                    >                     ;                                                                    @      x                                         x                                                                                                                x                                                                                                                   x                                                                                                                |        8                     ?>?                                         ?                                                                                              x        x         G  xw  ?                                                                                                                                               8      x     | ~                                                                                                                                        p   `     x??|?σϏǏ ǜx>?Ϟ~                                                                                                                                    ? ? x <yϏ Ǐ ǈx<<Ǉ                                                                                                                                   ? ? x? <yǇǏ  xx<                                                                                                                                   ? ? xxx <xχǇ x<<Ǉ                                                                                                                                    } ?>| xx <xǏ  xx<                                                                                                                                    <> xxx <<燇 x<<Ǉ                                                                                                                                    ;>< ? x?x   <?燀Ǉ Ǐ ~x<<`                                                                                                                                      xxx  x  ?<?Ǉ Ǐ x><Ǉ                                                                                                                                   ?  >< >  xxx~p < Ǉ ϟ x><<                                                                                                                                    π >  xx|9 <燇|                                                                                                                                     <G yx |Ϗ?                                                                                                                                    >s y? ~?σx x                                                                                                                                         >> ?? ~~  p                                                                                                                                                               ? |                                                                                                                                                                                ~ x <                8                                                                                                                                                                       ?y > ?                                                                                                                                                                                            p p                                                                                                                                                                                                                                            ?                                                                                                                                                                       >                                                                                                                                                                                                           ?                                                                                                                                                                                                           ?                                                                                                                                                                                                                                                                   >              ?                                                                                                                                                                                                                                                                                       <                                                                          p                                        p     s                                                                              <                                                           x                                                                                                                                     ~                                                       x                              `       8                                                                                              ~  ?                                                      x                        `           x           <                                                                                   >` ?                                                      x        `                         x  p       |                                                                                                                                    0                       ?  ;                                                                                                                                                              ? ?           |                                                                                                                                       0  ?     ? x?       x    >                                                                                                                             ?|   x    Ǉ   yyy >~xxg        x    >                                                                                  ?                                                   燏>   Ǐ0 <xx                                                                                                                                                q  營   Ǐq <xx                                                                                                                                                1  x?營   Ǐ <xx        <                                                                                                                                     y   x?營   Ǉ?   <xx       ?  8                                                                                                                                      y   x?   燃}   <xx    c {  8                                                                                                                                     {   x<    ǁ@ <xx  8   q  p                                                                                                                                     {   x>g   7ǌ| <xy  <<                                                                                                                                          {   x>珟p  ǎ< |x>  <<                                                                                                                                         y y  xǇ  x ~  8<  ?                                                                                                                                       π y  xϏ   ~>  x<                                                                                                                                            π      ~x<@p>           p<       @   <                                                                                                                                        ?|                         8      g     8                                                                                                                                       ?  >0         <                           x      ~                                                                                                                                          ~   > q                  x                                  ?                                                                                                                                                                           p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               p    |                                                                                                                                                                                              x    >                                                                                                                                                                                                                           <                                                                                                                                                     88    <                          |                   >                                                                                                                                                         |                         x                 ~ <                                                                                                                                                         |            `           <          x        <   |<?                                                                                                                                                 |                       x       <                                                                                                                                                       |x    <                      ? ?       ?                                                                                                                                            x    |            ? ?      ?                                                                                                                                                `  |x      ? ?   ?  x     x                                                                                                                                         ? ?|x  ? ?  xx   <          ?                                                                                                                                      |||| ? ??߀ ?  xx      y       ?                                                                                                                                    ||x ~| <    x    < q       <                                                                                                                                    ߀ ?<<|x |<y x|    x<      y      <                                                                                                                                      >|<||y x< x      x    < q  < <    >                                                                                                                                     ><<<|} x< x  x   <     y    0 ÀǞ                                                                                                                                       <<<||y <  x   ` x0  <  y <x    ǟ                                                                                                                                      ><<<|}  x<  xx  x  |<p <   x <<                                                                                                                                          <|<|xy` <0 |x  |9 c ~| << ?  x<                                                                                                                                          ><><|} |<p xx    ? <<  ? x<                                                                                                                                           ><>||y ~~ x ?  ? 8<   p  p8    <                                                                                                                                              >>?|| ? ?  ?   8  x       p<    8                                                                                                                                              ~~ ? ?               x<           x     g p                                                                                                                                               ~?  <|                     p<          x                                                                                                                                                    ~ >|x                                 x               ~                                                                                                                                                                                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 8                                                                                                                                                                                                               8 ?                                                                                                                                                                                                        |                                                                                                                                                         <                                           | <L{                                                                                                                                                      <                                         8   x`                                                                                                                                                     <          x <                              8   x@                                                                                                                                                                8                          8                                                                                                                                        x                         >  0       g?     8 8                                                                                                                                       <                       ?  ?p~  ?    8 8                                                                                                                                                          xx  >   8  8                                                                                                                                      ~  ?  |?   ?<  >xx?     8 0                                                                                                                                        | Ϗ  >ϟ<ǿ  xxy?  <  p                                                                                                                                       |yǇ   ヿ  x<|xx?  <  ?p                                                                                                                                      |Ϗ   <  x=x?xx<   x?`                                                                                                                                        <y߇   x 8   x=| xx   88 `  G                                                                                                                                   χ  |    <>xx   x=x> xx?  x 8 <                                                                                                                                        <}    |<  x=xxx  x< 8 ? ǰ                                                                                                                                      |燀   >|9  xyxxǿ  8 x ?                                                                                                                                        <?Ǉ   ?  xx?  <x 8 ?                                                                                                                                     `  >|χ   >?  ?  x 8 ?  >                                                                                                                                     |   >  ?  <x 8                                                                                                                                               |   ~?|        8 0                                                                                                                                               ~    >?|          x             <p                                                                                                                                               ?   |                           x             ;=                                                                                                                                                  8    p <                            x             ?                                                                                                                                                                                                           >      `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ?                                                                                                                                                                    @                         ?                                  8                                                                                                                                                                                                 <                                                                                                                                                                                                                                                                                                                                                                                           ><                                                                                                                                                                  88    x?    >?                                                                                                                                                        >        ?  ?                                                                                                                >                 0  ~       |   ??                                                ?                   >   |                          ?             >            ? ??   ? | <                                                                     ~                            ?             >             ?  x x|= Ǐ |                                                                                                                         ?~ ǀ |  x<x? ? 
   >                                                  ?                  ~   ~~          8                        x <           ǃǇ π   >x? ?     >                                                  ?                  ~   ?<~<           x             {            <           ǃ     >x<  <     <                                                                    >   ?~|          0 ~  ? ?~         σ     >x<  >  <   >                                                ??      > ~   ?|  ? ~?>         σ   x  >x|  >
` <|   ><                                               ?     >? ~? ? ~|  ?~??         σ  >|  <x> χ= >   >                                               ?   ?  >? ~?  ?~| ~~         'σǇ ǀ <|  |<x? ǏǇ ?                                                  ?     > ~?? ?>>| |>|         Ǉ  ? x      ~                                             ?  ? ?  ~ ?~~|?߿> ?|?~| ~|         Ǐϟ  ? ?                                                       ? ~    > >>~||~ ?>~| 7>|             ǁ                                                                 ?  >?   >~|? |~ >?|| ~|         ?  <                                                                                       > ?>~| |?  ?>~|  >||             ?                                                                                                ? ?     >~|? ?|~0 >?~|op ?||?            |                                                                                                            p?  >8 >>~|?ǀ||>x ??>~| ~>|?y                                                                                                                                ? ?? ~ >~|? ߿?~|| ??~~ |                                                                                                                                  ?   > ?>~ ???  ~                                                                                                                                     ~ ~  ????  ??                                                                                                                                      ? ?   ? ~?                                                                                                                                    ? ? ? ~ ? ? >  8<                                                                          8                                                      <   ? >>>  ~    ?                                                                                                   <                                                                                         |     ?                                                                                                 8                                                                                                                                           8                                                                                                                                                                                             <                 >                                      <<                                                                                                                                |   >                 >                                       ><                                                                                        >                                           |   ~                 x                         >  8   8  ? x                                                                                                                                      <   |?                 8     >       px#ǀ|?   |?  x                                                                                                                                        x>                 p p  ??                                                                                                           >                            |      8>~?  χ?  |yǇ  x                                                                                               ~                       ?  x      =<ϟ   xχ                                                  ?                                               ~                         |    ?<|  <Ǉ?   <ះ   x                                                                                              ~                         | >~  |  g<<?  >CǇ   x    x                                                                ~                             >                        | >>>|  >  χ'><?  ?Ǉ     <}  | x                                                                ?<        ?                     >                        | |<|  |  <<?  ?Ǉx     xǇ | x                                               |@                 ?       ?   ?  ~                       | |><    Ǉ><<   Ǉx     ~|?Ǉ |x x                                          ~??~?      >     ? ?                    | |<<    <<<   Ǉ|  À x~χ ?                                           ?   ?  ~    ?                     | |><    <>  1Ǉ>   | x?                                          ?         ??                     | |<<  >  ñÞ><?<  8χ?   | x>                                         ??   ?      >~>                     | >><  >  Ǉ>?  <Ǉ?   | <                                         ~??  } ߀ ?>}      |=|>                      | >><<    Ϗ<>>?  ?? ~  <                                                 ?~|~?~ߟ?  ?  ??|       ||>                      | ?><   ??  ?|         8                                                   |~||~ߟ?  ?  ?>~  ?  ~  ||>                        ~~    ?>>                               x                                                   |~|||~ߟ?  ?  ??      ||>                         >~    ?|x                                                                                         |~||~Ϗ ?    ?>?       ~|>0                     ?>  |                                                                                                            ~||~~ߟ?    ???8      ?~>x                                                                                                                                          ?~|~?~Ͽ>ߟ?  } π ?? >    ??                                                                                                                                              ?~|~~Ͽߟ?  ??     ? ?                                                                                                                                             ~~?߿ߟ  ?     ?                                         ?                                                                                                        ?                                                                                                                                                   ~ ?  ?? ?    ?                                                                                                                                            <|>ߏ~ x  >w                                                                                                  8                                                                                                         >                                                                      `                  >         |                                                                                                         >                                                             8                   >         |                    0                                                                                      8                                                           x x                          <         8          p                                                                                                                                                   <                      0    < 8        8          x                                                                              ?                                                                                           x    < x        8    <                                                                                                                                                                          =      |?                                                                                                                                                    <  o{  ?     >?                                                                                                                                              `   ?   ???  ??   >  <<y                                                                                                                                       ǃ    >>x  <|?x8 π   >cx                                                                                                                                    ?   χ?    >x>>><|  x<||x   >  ?<                                                                                                                                      =    <<>xǇ<xxx  x<x  ?   ?ǁp                                                                                                                                   π   Ǐ?|y    x9<<xp  xx>x      <                                                                                                                                      |><    <|<xxx  x<xx    x>x                                                                                                                                        ~>>>?    |y< <xx  x8xx   >  3<0                                                                                                                                   π   ϟ   ~  <x ǃ<>xxxx  |<xx    0x|x                                                                                                                                        ?Ǐ>>?  | |<OǇ<|xxx  |<x<x|q    8<                                                                                                                                    π  >~  > >x>cχ<xxxx  ><<<}?   ?>?                                                                                                                                     ߇  g>< |> ?<Ϗx  ???    ?~~                                                                                                                                   π   s>|  | >~  ?    <                                                                                                                                      {>>   ~||  <  0                                                                                                                                                         ?   ?>                                                                                                                                                                             ~?                                                                                                                                                                                              ?8                                                                                                                                                                                                                 <                                                                                                                                                                                                               |                                                                                                                                                                                                               x                                                                                                                                                                                                               8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |                               >                                                                                                                                                          ~         0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @                             >                                                                        x χ>p                                                   >                         >                       >                     Ϗ        x      ?                   G  O   ?                                                   ?     ?                                          >                            x      ?   8;3    ?                                                                           ?                     <                           x  O?   ~     > ǟy                                                        p                  ?            |        <                  ? ?  ~ }    <|                                                     ?                       >            8         |                   ?  ~ } >~?~|~|   ?                                                     ?     q                8    3<?3? <   `            ~ | <>><<||x?   <?                                                       ?  ? >~}         Ϗ >x  ~ | x<<<x>x?   <>                                                     ??  ??   ?~?         Ǐ <xx  ~   x<<<x>x?    <8                                                        ??   ?>~? Ϗ        Ǐ xo  ~   x<<<x>x<     <<  o                                                   ??  ??  ?  ?>~ Ϗ         x?   ~   x<<<x<x<     >< 3                                                   ??    ~ߟ~>  <??  >>>~|         Ǐ  x   >  |<<<x<x>   ?<                                                    ~> ??   ~>  ?>?  >>>~|| Ϗ           >yx  ? |<<|x<x?   ?                                                ~? ?   ?~>  ?  >>>~|         Ǐ` <|y   ><<<<|xx    ?                                             |> ?>   ??> ?  ?>>   >>>||  Ϗ          |x   ?~||    ~?                                              ~? ?  |~  ~>  ?   >>>~||          Ϗ ?π  ~~~  >                                                              |> ?>  ~ ??~>x ? |?  ?>>||~x Ϗ         ߏ ?   ~||  <                                                                                 ?? ?  ? ;ߟ?? ϟ  >>~          ? ??   |           x                                                                                          ? ?>  ? ???   ~~|           χ?  8`x                  x                                                                                          ߿      ~~                                               |                                                                                               ~~?                                                                                                                                           ߟ  8x?   8  x                                                                                                                                             y ?        @     8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                8                                                                                                                                                                         0                                    |                                                                                                                                                                                                                                                                                                                                                                            x       >                            <                                                                                                                                      x                 >                     >                            8                                                                                                                                     |                                                                   <                                                                                      ?                    >                  |                                                                                                              ?     ?                                             ~                  >                                          @ 0 `        ?                                                             >                                        ~                                           @G  ??      ?  ?                                          ?               ?                                       >                                    ?  ??    ?    <<                                                                                         >                     >  Ǐ  >>??{  <x  y  ~  x<                                          ~                      >                         >                    >  8  ><y  <x    <  x<                                              ?   ?      ?      x    `|>?{  <   <>           ?>>~  Ϙ  <<<<<       <  x<                                                         ?        ?   ?>>           >}9<>><  x  <<<        <   x<x                                                               ??   ??>>           |{|<<  x  <<><<            x<                                                                ??   ??>            |;<><  yx  <><   x   x   0  |<x                                            ?                ~  >   >>  ߏϏ        ?  x|<<  x  <><<<  <x  |0  s  |<|p                                                     ~       >  ??  >  Ϗ           ||><  |x  ><0  <x  ~x    ?~                                            ?       |      ~ϟ  >   ?>>  Ϗ          ||<<  <x  ><  >  ?    ??                                            ?   ?          >ϟ  >  >  Ϗ          |><<  <  >><  ?  ?  ??                                           >               >Ϗ  >?   >>  Ϗ          9}Ϟ><<    ?>~~?                                                               >G  ??߀  >  Ϗ          ?=>|  ?  ?>~~  <   x  <                                                           w  ǀ  >ϟ  ?~߀  ?>  ߇Ϗ          ?~~   0                         <                                                           ?         ?Ϟ  ?   >  Ϗ          ?|<   y                                      ?                                                       ? ?  ? ?         ?߇ϟ     ??             ?|                                                ?                                                        >   >>          ?  ߀  ? ߀                                                                                                                                >   >>          ?  ?   ??                                                                                                                                    >    |>     ?      Ϗ?x  x~    >   p                                                                                                                                      |    |>      @    8    0                                                                                                                                                                 |   ~  7                                                                                                                                                                                                                                                                                                                                                                                                                                       ?                                                                                          <                                                                       ~                                                                                                                >     >                                                        ~                |                                                                @                                       >  >                                                                                                                                                               <                                                                                                                                                                                        ?        |                           <                                                                                                                       >     |              }        ~                           < >            ?                                                                   ~                 ~>            ~                   `       <    `                       x   <     <                                            ?                                      >            ?     ~              x`       >             >  |
  x    > |? ?                                                ?      ?     ?                     ~    p       ~     |                     <       p><?  ?  8  > | }                                                     ?     ?                   >>    x       ?     >              ?  >   p?  =   x  <x x                                                     |     }                  >            >     |              ? |   y? x   < <xǇ g                                             >      >  |            <<  w  ? ?|        ? > Ǐ  y  8  x  <|                                                         ?>? >? ?         ><|y < ǟ χ<< 3  ~ < < <|                                                        ?? ?? ??        | ><><   ÿ       <x <  <?                                            ?         =   ?> >|         x? x<7y     <  ?   < <  <?                                                     =   >??~ϼ ?> ??|        |? |>}    ǀ   <   >x > <? |;                                                     y   ~}ߟ>>>?> >? >?||        x>  x<?}     燀< ǀx   > > <ǀ                                                      x   >~Ϗ>??? ? >>|?        |>  |>~}    Ǐ  yÞ   x    < ?                                             0      ~   ~}>>>?>? >? <||         x? >|<xy  ϟ  yǁ<       ~ ?                                             ~ >    ~   >`Ϗ>?? ?? >>|         | >>>|y <  <>   x   ~?                                               >        ~ ?>>?> >| >~|0        x ? |  p     x     <                                                         þ     ?  ~< >~pϟ>??| ?| >>|x        |  >  0     8p                                                                          ?>  ~~?>?>| > >~~}       | ?? <       @ p         <                                                                            ?   ?? ~~ߟ??? ? ?~~       || p x               p                                                                                      ?   >? ~~ߏ???  ?~?                                                                                                                                  > ? ?? ??                                                                     ?                                                           <    | ~~ϟxp 8 A   >    x                                                                                                                                            |                            >                                                                                                                                                                                               >                                                                                                                                                                                                                                                                                               p                                                                                                     ~                                                      0                                                                                                                                             >                                                   `                                                                                         ~     x       ~                                                                           @        8           ~                                  p                                                      8              <                                                                                  |           ~                                                                                                                                                                                          |                         `                                                                                                                                                                          |      x                                       C                                                                                                                                       0                               '  |??                                                                                                                                        p                  0>     ???                                                                                                                                            `>         ?y                                                                                                                              7g         Ϗ Ϗ??y8                                                              x                                                              ?  ?    < Ǉ  |                                                                              0?                                              ǀ 8>   ǇǇ  <~y                                          ?  |?    ?                                          ?} ?y x ǀ 8>   Ǉ  << x                                          ?   ?                                          > ? x  8?    ?ǃ   << ?y                                          ?   ???                                          | ?s |   0  x  ǃ   >< y                                             ???                                           |>  |   p   x  燃ǃ   ><<Gq                                          ~  ??  p                                         |>  < ?  ?   p<  | Ǉǃ  <a<                                          ?~|}   >?>                                            |>>  |   ? ǀ px   |8 ǇǇ  ><s8                                          |?>~||?    ?                                            |>0 > ? ǀ `xǃ ? ǇǏ  >                                           ?~||?   >?>                                            y>>> ?9    >? ?  ?>??|?                                           |>~||?~   ~?                                            > ?   χ  ?   ?  @                                              ?~|? ߆  >~??>                                            ??>> ?   χ ~  " `  `   0     <                                                      ?>~||   ?{ߟ                                           ??? ~   
                                                                                ~~|   ?χ?{??                                         ?>~ x| <`                                       >                                                      ?~~   |߿                                                             <                                       ?                                                      ?   x?                                                                                                                                                          ~~??~   8?                                                                                                                                                              `   |<px px?      `                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0                                                                                                                                                                                             p       ?       x                                                                                                                                                                                                    ?       x ?                                                                                                                                                                                                         | >                                                                                                                                                                                         ?               À |                                                                                                                                                                                                         |                                                                                                                                                                                                                                                                                                                                                                                                9                                                                                                                                                                                                       9                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 l   >                                                                                                                                                                                            } ? ?                                                                                                                                                                                           <                                                                                                                                                                                                        > <                                                                                                                                                                                          ~                > <                                                                                                                                                                                          ?|  ||              ~                                                                                                                                                                                                                   ?                                                                                                                                                                                                                  ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ?                                                                                                                                                                                                                ~                                                                                                                                                                                                      p<          >                                                                                                                                                                                                     <                                                                                                                                                                                                                >                                                                                                                                                                                                                ~ @                                                                                                                                                                                                                                                                                                                                                                                                                                 ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                              |                                                                                                           x~                   |                                                                                                                  2z   ? ~                                   ~                   |                                                                                                           ?                                                                                 ~                   x                                                                                                                                                                                            ~                                                                                                                              ?                                                                                 ~                                                                                                                              ?                                                                                 ~                                                                                                                              ?                                                                                 ~                                                                                                                              ?                                                                                 ~                  ?                                                                                                           ?                                                                                 >                                                                                                                             ?                                                                                 ~                  8                                                                                                           ?                                                                                 ~                    8                                                                                                             ?                                                                                 |                    8  ?                                                                                                           ?                                                                                 ~                    8  ?                                                                                                           ?                                                                                 |                    p  ?                                                                                                           ?                                                                                 ~                    0                                                                                                              ?                                                                                 |                                                                                                                                    ?                                                                                 ~                                                                                                                                    ?                                                                                 |                                                                                                                                    ?                                                                                 ~                                                                                                                                    ?                                                                                 |                                                                                                                                                                                                                     ~                                                                                                                                    ?                                                                                 |                                                                                                                                                                                                                     ~                                                                                                                                    ?                                                                                 |                                                                                                                                                                                                                     >                                                                                                                                    ?                                                                                 |                                                                                                                                                                                                                     ~                                                                                                                                    ?                                                                                 |                                                                                                                                                                                                   x               ~                                                                                                                                    ?                                             |                                                                                                                                                                  ?               ~                                                                                                                                    ?                              ?               |                                                                                                                                                                  ?               ~                                                                                                                                    ?                              ?               ~                                                                                                                                    ?                              ?               >                                                                                                                                    ?                              ?                           ~                                                                                                                                                                               ?                ?               >                                                                                                                                    ?                                           ?                               ~                                                                                                                                                                               ?                ?               >                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                                                               ?                ?               >                                                                                                                                    ?                                           ?                ?               >                                                                                                                                                                               ?                ?               >                                                                                                                                                                               ?                ?               >                                                                                                                                                                               ?                ?               >                                                                                                                                    ?                                           ?                ?               >                                                                                                                                                                               ?                ?               >                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                    ?                                           ?                               ~                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                    ?                                           ?                               ~                                                                                                                                    ?                                           ?                ?               ~                                                                                                                                    ?                                  ?                               ~                                                                                                                                    ?                                  ?                ?               ~                                                                                                                                    ?                                  ?                               |                                                                                                                                   ?                                  ?                ?               ~                                                                                                                                    ?                                  ?                               ~                                                                                                                                                        >                     ?                ?              ~                8                                                                                                                  ?                    |                     ?                               |              < |                                                                                                                                      >                     ?        @     ?              >             ?>8>                                                                                                                  ?                    <                     ?                            |             |x<                                                                                                                  ?                   >                     ?             ?             >           < |x                                                                                                                  ?                  <                   ?                  ?        |           | x|                                                                                                                  ?                 >                        ǀ    ? ?    >           ~ |                                                                                                                  ?              >                  ~            x                                                                                                                  ?              >             ?    >            x                                                                                                                  ?              >              ?    ~            xx                                                                                                                  ?              >              ?    >           x|                                                                                                                  ?              >               `           ~          x|                                                                                                                  ?                   >                        1π    ?    ?        >          <~                                                                                                                  ?                   >                    ?     sπ    ?     <         ~          <~>                                                                                                                  ?      `             >           x         ?     yǀ    ?               ~          >>>                                                                                                                  ?                    >                     ?     0     ?               ~           <<                                                                                                                  ?                    >                                   ?               ~             <                                                                                                                  ?                    >                     ?                ?               ~                                                                                                                                 ?                    >                                     ?               >                                                                                                                                 ?                    >                     ?                ?               ~           <                                                                                                                        ?                    >                                     ?               >           <                                                                                                                        ?                  ?                   ?                ?               ~           <                                                                                                                        ?                  ?                   ?                ?               ~           <                                                                                                                        ?                  ?                   ?                ?               ~           <                                                                                                                        ?                  ?                                   ?               >           <                                                                                                                        ?                                                     ?               >           <                                                                                                                                                             ?                ?              >           <                                                                                                                       ?                                           ?                ?               >           <                                                               ~                                                        ?                                           ?                ?              >           <                                                                                                                       ?                                           ?                ?               >           <                                                                                                                       ?                                           ?                ?              >           <                                                                                                                       ?                                           ?                ?               >           <                                                                                                                                                                                  ?               >           <                                                                                                                                                                                  ?              >           <                                                                                                                       ?                                                           ?              >           <                                                                                                                     ?                                                           ?              >                                                                                                                                ?                                           ?                ?               >           <                                                                                                                     ?                                                           ?              >           <                                                                                                                     ?                                           ?                ?               >           <                                                                                                                     ?                                           ?                ?              >           <                                                                                                                     ?                                           ?               ~           <                                                                                                                     ?                              ?              >           >                                                                                                                     ?                              ?               ~           <                                                                                                                     ?                                            >           <                                                                                                                     >                              ?               ~           <                                                                                                                     ?                                             >           <                                                                                                                     >                                             ~           <                                                              À                                                       ?                                             >                                                                                                                                >                                                                               ~           <                                                              À                                                       ?                                                                                 >                                                                                                                                >                                                                                 ~           <                                                                                                                     ?                                                                                 >           <                                                                                                                     ?                                                                                 >           <                                                                                                                     ?                                                                                 >           <                                                                                                                     >                                                                                 ~           <                                                                                                                     ?                                                                                 >           <                                                                                                                     ?                                                                                 ~           <                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 ~           <                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 >           <                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 >           <                                                                                                                     ?                                                                                 >           >                                                                                                                     ?                                                                                 >           <                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 >           <                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 >                                                                                                                                ?                                                                                 >                                                                                                                                ?                                                                                 >           >                                                                                                                     ?                                                                                 >                                                                                                                                ?                                                                                 >                                                                                                                                ?                                                                                 >                                                                         p                                                       ?                                                                                 >                                                                         p                                                       ?                                                                                 >           >                                                              p                                                       ?                                                                                 >                                                                         p                                                       ?                                                                                 >           >                                                              p                                                       ?<                            >                                                                         p                                                       ?          >           <                                                              p                                                       ?           >                                                              x                                                       ?           >                                                              x                                                                                                                                x                                                                  <                                                              x                                                                                                                                                                                         x                                                                                                                                                     <                                                              x                                                                                                                                                                                                                   x                                                                                                                                                     <                                                              x                                                                                                                                                                                                                   x                                                                                                                                                     <                                                              x                                                                                                                                                                                                                   8                                                                                                                                                     <                                                              >x                                                                                                                                                                                                                   8                                                                                                                                                     <                                                               x                                                                                                                                                                                                                   8                                                                                                                                                     <                                                               x                                                                                                                                                                                                                   8                                                                                                                                                     <                                                               8                                                                                                                                                                                                                   <                                                                                                                                                                                                                    8                                                                                                                                                                                                                   <                                                                                                                                                     >                                                               <                                                                                                                                                                                                             <  ? ~                                                                                                                                            >                                                               <   8                                                                                                                                                                                                      <  ~                                                                                                                                        >                                                             < <                                                                                                                                                                                                     <> s                                                                                      o                                                                                                              ?                                                                                     ߿                                                                                                                s~                                                                                                                                                                                                    ? 8                                                                                    <                                                                                                                sx~                                                                                    <                                                                                                               ? ?                                                                                      ~                                                                                                               ?> |                                                                                    ~                                                                                                                  >0                                                                                     ~@                                                                                                                 x>                                                                                     }                                                                                                                  p                                                                                                                                                                                                        p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <                                                                                                                                                                                                                    >                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ?<                                                                                                                                                                                                                ?                                                                                                                                                                                                               ><   <                                                                                                                                                                                                              x<                                                                                                                                                                                                        <                                                                                                                                                                                                         < ?                                                                                                                                                                                                       < ?                                                                                                                                                                                                       9                                                                                                                                                                                                       < 9                                                                                                                                                                                                                                                                                                                                              <                                                               < ? ?                                                                                                                                                                                                      |>                                                                                                                                                                                                       < q                                                                                                                                                                                                          0                                                                                                                                                                                                                <                                                                                                                                                                                                                       @@                                                                                                                                            >                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                       >                                                                                                                                                                                                                                                                                                                                                                                                                                       <                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                <                                                                                                                                                                                                                                                                                                                                                                                                                              <                                                                                                                                                                                                                                                                                                                                                                                                                            <                                                                                                                                                                                                                  p                                                                                                                                                                                                               ?p                                                                                                                                                                                                              p                                                                                                                                                                                                            <  yp                                                                                                                                                                                                             p                                                                                                                                                                                                                                                                                                                                                                                                                       ? <                                                                                                                                                                                                           ?                                                                                                                                                                                                                 `                                                                                                                                                                                                                                                                                                                                                                                                                              >                                                                                                                                                                                                                 ?                                                                                                                                                                                                                  <                                                                                                                                                                                                                  <                                                                                                                                                                                                                  <                                                                                                                                                                                                                                                                                                                                                                                                                                       <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                       <                                                                                                                                                                                                                                                                                                                                                                                                                                        <                                                                                                                                                                                                                                                                                                                                                                                                                                       <                                                                                                                                                                                                                                                                                                                                                                                                                                       <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    >           |         8<                                                                                                                                                                                    ~          |         |>       >              x                                                                                                                                                    ~          |         ~       ?            y  x                                                                                                                                                   ~          |         ~       ?                                                                                                                                                                 ?<~<          8         ~<                                                                                                                                                                     >~|                     |                                                                                                                                                                   ?~~   0  ` Gx  ~   0            ~?                                                                                                                                                 ~  ??>    ||?  ? ?x?   |?                                                                                                                                               ~?   q ~      ~?                                                                                                                                         ~??? c |     | ?                                                                                                                                        ?>~~?>  ~~                                                                                                                                               >>|???|  |  ߟ   ߏ                                                                                                                                     >>~|   ~~      ߸                                                                                                                                      >~~? ?  |}                                                                @                                                                        ?>~|  ϟ   ~~                                                               @                                                                        >~|?  ?        ?                                              @         @                                                                              ??>~ |   ~~  w ?~                                                     `                                                                             >~~??  | ߏ |                                                  p                                                                             ??~   ~~   ?|~? |                                                                                                                                       ? Ϟ}                                   ` Ç                                                                                      ?        ~                                      p                                                                                    ~~?  ?          ?                                                                                                                                0         ? `|  ~}|  <p ? | ~                                     p                                                                                                                                                                                     ~  ?                                                                                                                                                                                      ~~  Cx                                                                                                                                                                                                                                                                                                                               |                                                   }                                                                                                                                        <                                                   y                                                                                                                                                                                             8   q                                                                             `                                                                                                                 0                                                                                                                           0                                                                                                                                                                                                                               >                                                                                                                                                                                                            >                      ?                                                                                                                                 p                                                >                                                                       ?                                                                                                                                 8                                                                        >                                                                                                      >                           x                                                                                                                                                       p`  ?  x                                          q                                                                                                                                 ? ???    ? ?<;  ?  |      c                                                                                                                                 ? ?    ? ~  ? χ                                                                                                                                    ? ?     ~?                                                                                                                                      ?    ?   ~?                                                      ?                                                                                 ?    >?   >~~                                                     |                                                                                  ??  ?  >   ?>|?~|  ?                                                                                                                                     ??  ?  ~  ?>?||  ?                                                                                                                                  ߀  ??  ?  ~  >?||  ?                                                                                                                                    ?>  ?  >~   ?>?||   >                                                                                                                                ? ?>  ?  ~ p >?|| @ ?                                                                                                                                 ? ???  ?    |>>||  ?χ                                                <                                                                                 ??? ?     ~~~|  >χ                                                                          ?                                                        ?   ?   ~|   ?                                                                          ?                                                        >   ?   ?                                                                            ?                                                         >> ?    ? ~                                                                            ?                                                                         ? ?x~~|  ?  ?   ?                                                                      {                                                                                               ?߀              ?         ?                                                                       {                                                                                               ?              ?                                                                                  {                                                                                                              ?           ?                                                                       {                                                                                                              ?           }                                                                       {                                                                                                                         |                                                                       {p                                                                                                                             |x                                                                       {                                                               `                                                                                                                                                {x                                                                     <<                                                                                                                                                                                                        ~>                                        p                                                                                   {x                                                                    ~                                                                                                           ?                                                                           >                                                                                         x                                                                    ~<                                                                       |                                                                  >  ~                                                                   ߏ{                                                     8x~  ~                                                                                                                                  ???? ><? ?  ?  >                                                                                                                 ~? ?   ?χ?    ~~>?                                                                                                             ? >~?? ?      ??                                                                                                                          ߿?~  ~~?? ??     ?>>                                                                                                                           ?>  >~? π    ??                                                                      ?                                                     ?>~  ~~|?>    |  | ?<                                                                      x                                                     }??>  >~~>?    ~} |                                                                       ?<                                                     ??>~  ~~|?>>    |   ?                                                                      ~|                                                     w}??>  >~~?>?    ߀|}                                                                          ?<                                                     ?>>  ~~|;?ǿ>w     |}                                                                          ><                                                    ??? ~~~9?>~   ߏ|}    ߟ                                                                      ><                                                    ?? ~~~}?>~   |}  ߿                                                                      ?>?                                                    ? ~?~   ~|                                                                       ?>?                                                    ??? ~                                                                          >?                                                     ?? ~~|?? ?   ~~?                                                                      >?                                                                                  | ||    }                                                                     ?                                                                                                           7          <   8`                                                                       ?                                                                                                                     ;                                                                                  ?                                                                                                                                                                                                                                                                                                                          ?                                                                                 ?                                                                                                                    ?                                                                                  {?                                                                                                                                                                                                       ?                                                                                                                                                                                                       ?                                                                                                                                                                                                   >                                                                                                                                                                                                    >~                                                                                                                                                                                                    ~                                                                                                                                                                                                     >|                                                                                                                                                                                                     >|                                                                                                                                                                                                       ?>|                                                   ~?                                                                                                                                  ?>|       |                                           ?                                                                                                                                 =>|                                                  ߏ?                                                                                                                              =<                                                 ߟ                                                                                                                               }><                                                 ϟ                                                                                                                                                                      >                                                                                                            a                                          ?                                                                                    ?0                                          >                                                                        >>>                                                 }Ͽ?                                                                        ?                     =>                                                  ??߿>                                                                                                       =>      `                                           ~ￏ?                                                                                                                          ?                                                  >                                                                                                                                  ??  @  0                                            }                                                                                                                                  ?  p  8                                            ??                                                                                                                                  ?  8                                            |                                                                                                                                ?                                              xy                                                                                                                              |<                                                                                                                                                              ?                              > ~                                                                                                                                                             ?                    p           ?x                                                                                                                                                              >                     p            ~                                                                                                                                                             ?                      p           ? >                                                                                                                                                             ?                     p           ?                                                                                                                                                                 ?                     p            ~                                                                                                                                                                                    p           ?} ~                                                                                                                                                                                                <?@ 0<                                                                                                                                                                                                    <                                                                                                                                                               ?                                 ?     8                                                                                                                                                                                    A            ?    a                                                                                                                                                                                                    ?                                                                                                                                                                                                           >?                                                                                                                                                                                                            x                                                                                                                                                                                                              x                                                                                                                                                                                                              {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ?y                                                                                                                                                                                                              y                                                                                                                                                                                                 y                                                                                                                                                                           y                                                                                                                                                           y                                                                                                                                                           y                                                                                                                                                    C                         y                                                                                                                                                                                          y                                                                                                                                                                                                              y                                                                                                                                                                                                                 {                                                                                                                                                                                                                 y                                                                                                                                                                                                                 {                                                                                                                                                                                                                 }                                                                                                                                                                                                                 {<                                                                                                                                                                                                                 =<                                                                                                                                                                                                                 <                                                                                                                                                                                                                 ?                                                                                                                                                                                                                 ?                                                                                                                                                                                                                                                                                                                                                                                                                                  ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ?                                                                                                                                                                                           ~                     ?                                                                                                                                                                ?              ?π       ?                                                                                                                                                                      ?                                                                                                                                                                                          ?                                                                                                                                                                                         ||                                                                                                                                                                                         88     À                 `     ~|                                                                                                                                                         08      À ?            ?   ~|                                                                                                                                                                               ? @    ~ >                                                                                                                                                                                | >                                                                                                                                                              ?                   >                                                                                                                                                            ?  ?                  >                                                                                                                                                              ?    ?          ?                                                                                                                                                           ? ?         >                                                                                                                                                          ??     ?    ?                                                                                                                                                     ?  ?      >                                                                                                                                                     ? ?   x  ?  ?                                                              À                                                                                       ~ ~      ~?   ~                                                                x                                                                                       ߀~           ?   >                                                                                                                                                    ?      ~~           | ?   ~                                                                                                                                                 ?     ߀~?           >    ~                                                           >                                                                                     ?      ~           <?                                                               ~                                                                                       ?      ߀   /         <  ?                                                                ~                                                                                             |                                                                                      ~                                                                                                    >    ~                                                                                                                                                                                     ~                                                                                                                                                                   ~|                                                                                                  @                                                                                       80           ?                    >                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ?                                                                                                              Ç                                                                                                ?                                                                                                                                                                                                                                                                                                                                                                                                                            ~                                                                                                                                                                                                              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ?                                                                                                                                                                                                             ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ߀                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <                                                                                                                                                                                                       <                                                                                                                                                                                                       ~                                                                                                                                                                                                       ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ~                                                                                                                                                                                                     >                                                                                                                                                                                                      |                                                                                                                                                                                                     ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ǀ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     0                                                                                                                                                                                                                                                                                                                                                                                                                                A                                                                                                                                                                                                                                                                                                                                                                                                                    8                                                                                                                                                                                                           <                                                                                                                                                                                                           8                                                                                                                                                                                                         <                                                                                                                                                                                                         < ǀ                                                                                                                                                                                                        < π                                                                                                                                                                                                        <                                                                                                                                                                                                         <                                                                                                                                                                                                      <                                                                          x      ?     y                                                                                                               8                                                                                        y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                                                           >                                                                                                                                                                                                  >                                                                                                                                                                                                  ?                                                                                                                                                                                               ??   ?                                                                                                                                                                                                ߟ                                                                                                                                                                                                  矟?   >?                                                                                                                                                                                                ߟ     ~                                                                                                                                        p                                                      ??                                                                                                                                                                                                    ߟ                                                                                                                                             p                                                      ??    ?                                                                                                                                                                                                ߟ                                                                                                                                             s                                                      ?   ?                                                                                                                                                                                               ~                                                                                                                                            p                                                      |?    ?~                                                                                                                                                                                               <    |??                                                                                                                                        p                                                      8?   >~                                                                                                                                                                                                 p    x  x>                                                                                                                                        x                                                                                                                                                                                                                                                                                                                                                                                                                        x                                                                                                                                                                                                           p                                                        p                                                                                                                                                     x                                                                                                                                                                                                               p                                                                   8                                                                                                                                               x                                                                                                                                                                                                                  p                                                                                                                                                                                                                   x                                                                                                                                                                                                                  p                                                                                                                                                                                                                   x                                                                                                                                                                                                                  x                                                                                                                                                                                                                   x                                                                                                                                                                                                                  x                                                                                                                                                                                                                   x                                                                                                                                                                                                                  x                                                                                                                                                                                                                   x                                                                                                                                                                                                                  x                                                                                                                                                                                                                  x                                                                                                                                                                                                                  x                                                                                                                                                                                                                  8                                                                                                                                                                                                                  8                                                                                                                                                                                                                  8                                                                                                                                                                                                                  8                                                                                                                                                                                                                   8                                                                                                                                                                                                                   8                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                   ?                                                                                                                                                                                                                   ?                                                                                                                                                                                                                   =                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   8                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                   <                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       >                                                                                                                                >?                                                                                                                                >        
                                                                                                                                ?                                                                                                                                                   ?                                                              <~0 d8 (                                                                                                                                  ?                                                                                                                                                                                                                 ?                                                                                                                                                                                                                 >                                                                                                                                                                                                                 >                                                                                                                                                                                                                 >                                                                                 >                                                                                                                                ?                                                                                                                                                                                                                 >                                                                                 >                                                                         <                                                                                                                                                                                                                 <                                                       >                                                                                 >                                                                         <                                                                                                                                                                                                                 <                                                       >                                                                                 >                                                                         <                                                                                                                                                                                                                 <                                                       >                                                                                 >                                                                         8                                                                                                                                                                                                                                                                        >                                                                                 >                                                                         8                                                                                                                                                                                                                                                                        >                                                                                 >                                                                         x                                                                                                                                                                                                                                                                        >                                                                                 >                                                                         x                                                                                                                                                                                                                                                                        >                                                                                 >                                                                                                                                ?                                                                                                                                                                                                                 >                                                                                 >                                                                                                                                                                                                                                                                                                                                                 ?                                                                                 >                                                                                                                                                                                                                                                                                                                                                 >                                                                               >                                                                                                                                                                                                                                                                                                                                                    >                  <                                                            >                                                                                                                                                                                                                                                                                                                                                      ?                                                                             >                                                                                                                                                                                                                                                                                                                                                    ?                                                                            >                                                                                                                                                                                                                                                                                                                                                                                                                                ?                                                                                                                                                     ?                                                                                                                                                                                                                ?                                                                                                                                                                                                                 ?                                                                                                                                                                                                                                                                                                                                                                                                                                a                                                                                                                                                                                                                                                                                                                                                                                                                                  C                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ?                                                                                                                                                                                                                   ?                                                                                                                                    ?                 ?                                                              >                                                                                                                                                                                                                                                                                                                                                        ?                                                                                >                                                                                                                                                                                                                                                                                                                                                        ?                                                                                >                                                                                                                                                                                                                    ?                                                                                                                                    >                                                                                >                                                                                                                                                                                                                                                                                                                                                   >                                                                                >                                                 ?                                                                                                                                                                                                                                                                                               >                                                                                >                                                 |                                                                                                                                                                                                              |                                                                               >                                                                                >                                             ?                                                                                                                                                                                                              |p                                                                                >                                                                                >                                             `  ?                                                                                                                                                                                                                                                                                             ?                                                                                >                                                                                                                                                                                                                                                                                                                                          >                                                                                >                                                                                                                                                                                                                                                          xy                                                                               ?                                                                                >                                             ~                                                                                                                                                                                                                                                                                                                                                                            >                                                                                                                                                                                                                                                                                                                                                                                                                                 >                                                                                                                                                                                                                    >                                                                                                                                                                                                                    >                                                                                                                                                                                                                    ?                                                                                                                                                                                                                    >                                                                                                                                                                                                                    ?                                                                                                                                                                                                                    >                                                                                                                                                                                                                    >                                                                                                                                                                                                                    >                                                                                                                                                                                                                                                                                                                                                                                                                                        >                                                                                                                                                                                                                                                                                                                                                                                                                                       >                                                                                                                                                       ?                                                            >                                                                                                                                                       ?                                                           >                                                                                                                                                       ?                                                           >                                                                                                                                                                                                                  >                                                                                                                                                                                                                  >                                                                                                                                                                                                                 >                                                                                                                                                                                                                 >                                                                                                                                                                                                                  >                                                                                                                                                                                                                  >                                                                                                                                                                                                                 >                                                                                                                                    ?                                                                             >                                                                                                                                                                                                                  >                                                                                                                                    ?                                                                              >                                                                                                                                                                                                                  >                                                                                                                                    ?                                                                             >                                                                                                                                                                                                                 >                                                                                                                                    ?                                                                              >                                                                                                                                                                                                                >                                                                                                                                    ?               ?                                                             >                                                                                                                                                                                                               >                                                                                                                                    ?                                                                           >                                                                                                                                                         ?                                                       >                                                                                                                                    ?                                                                            >                                                                                                                                                                                                                                                                                                                                                   ?                                                                           >                                                                                                                                                          ?                                                      >                                                                                                                                    ?                                                                          >                                                                                                                                              ??                                                     >                                                                                                                                                                                                   >                                                                                                                                              ?                                                     >                                                                                                                                              ?                                                     >                                                                                                                                              ?                                                                                                                                                                                                               `                                                    >                                                                                                                                                                                                                                                                                                                                                   ?                                                                           >                                                                                                                                                                                                               >                                                                                                                                                                                                                >                                                                                                                                                                                                                >                                                                                                                                                              ?                                                   >                                                                                                                                                                                                                >                                                                                                                                                                                                               >                                                                                                                                                                                                               >                                                                                                                                                                                                                >                                                                                                                                                              ?                                                  >                                                                                                                                                                                                                >                                                                                                                                                                                                               >                                                                                                                                                                                                                >                                                                                                                                                               ?                                                 >                                                                                                                                                                                                                >                                                                                                                                                                                                               >                                                                                                                                                                                                                >                                                                                                                                                                                                                 >                                                                                                                                                                                                                 >                                                                                                                                    ?                                                                             >                                                                                                                                                                                                               >                                                                                                                                                                                                                 >                                                                                                                                                                                                                >                                                                                                                                    ?                 >                                                            >                                                                                                                                                                                                               >                                                                                                                                    ?                 >                                                           >                                                                                                                                                                  ?                                              >                                                                                                                                    ?                 >                                                            >                                                                                                                                                                                                               >                                                                                                                                    ?                 >                                                           >                                                                                                                                                                                                                 >                                                                                                                                    ?                 >               ?                                             >                                                                                                                                                                                                                                                                                                                                                   ?                 >                                                           >                                                                                                                                                                                                                >                                                                                                                                                                     ?                                            >                                                                                                                                                                                                               >                                                                                                                                                                                                                >                                                                                                                                                                                                                >                                                                                                                                                                      ?                                           >                                                                                                                                                                                                                >                    8                                                                                                                                                                                         >            ?                                                                                                                                                                                         >                    |          x                             x                                                                                                                                         >                                            ?              x       >                                                                                                                                  >           ?       8         x            `                x       >                                                                                                                                  >                                                          <       >                                                                                                                               >                                                                                                                                                                                                   >           ~   p~?   g` <8xg    |x                                                                                                                                            >             ?  ?    π|x                                                                                                                                   >             ???     ??    w                                                                                                                     >            <?     ?    ?                                                                                                                       >             <   <  ?  <㏟><  >=  x{                                                                                                                      >            <y   ?  ?  ??  =  <<                                                                                                                       >           Ϗ     |  ?    <?  <8x                                                                                                                      >           Ϗ    |  ?  x  <?  <|                                                                                                                     >           Ϗ   ?   |x  <   x xx   <x   <|                                                                                                                      >             ?   ||   >   | xx   <x   <|                                                                                                                      >           Ϗ  ϟ   x?||  >  ||  <|  <|                                                                                                                      >             ǟ  ?<?y  ?  ?8>8  >>  >	x                                                                                                                    >               ><?    ??  ??  ?x                                                                                                                      >            ?     ?  ?>?  ?                                                                                  ?                                      >             ?|?  ~  ?  ???                                                               >                                                            >                   |0 |   <>8 8     `       >    ?                                                                                                                     >                                                                               `                                                                                                                      >                                                                                                                                                                                                           >                                                                                                                                              >                       ?                                     >                                                   ?                                                                                                                                                     >                                                   ?                                                                                          >                                                           >                                     0                                                                                                                                                                          >                                                                                                                                                     >                                                            >                @                                                                                                                                                                                                >                              88               p                                                                                               >                                                            >                           >  x                         |         <                                                                                                                                    >                              |                         ~         ~                                                                     >                                                            >                            >  x                         |                                                                                                                                          >                             >  |                                   >  ?                                                                   >                                                            >         @  @                x  x      8                   <           <  |><      `                                                                                                                       >        ??  #   8  |     `|                 @            >  <<     p                                                             >                                                            >          xx?  ? ? < x8<  |x                                                                                          ?                                  >          |    χ  >  ?x w                                                          >                                                            >        ? ? ?>x    < ?<                                                                                                                         >        ??>9 ? Ϟ||||?|  π 8> } <<                                                             >                                                           >        ><  xxy|<|x | < <cǏ<<    <                                                                                                                      >        >>  ||<<|  Oǟ  !Ǉ<>    ?~                                                          >                                                            >        ><   |x<|x    < Ϗ<    ?x?                                                                                                                      >        > ? |  ||><|   |  x  燏>   x ?<                                                          >                                                           >        >< | >xxx?|<|x   y  <  <   | x>                                                                                                                      >        > ~ |||O<<<|  x'ǟ | <>   < <                                                                                                                       >        ?>~y  ||x|<|x  qǟ >~p 8><< <  <|                                                                                                                     >         ? ||<| y > y>> ?  ?<                                                                                                                     >        ?  ?~~   ~? ?Ϗ> ?  ?|                                                                                                                      >        ?  ~?   ?  ϟ? x?                                                                                                                        >        >             <~|~  ><|  ? < ߏ x<                                                                                                                      >        >                                                         < }                                                                                                                      >        >                                                               <                                                                                                                               >                                                                                                                                                                                                       >                                                                                                                                                                        ?                              >        >                                                                                                                                   ?                                                            >                                                                                                                                             ?                                                          >                                                                                                                                                     ?                                                            >                                                                                                                                                   ?                                                            >         >                                `                                                                                                       >                                                            >         ~         >       >             p  |                                                                                ?   >                                                            >         ~         ~       >            |                                                                                    ?                                                           >         >         >                   <                                                                                    >                                                            >         >         >                    |   <                                                                               ?                                                            >         >         >                     |                          `                                                         >                                                            >        wx <  >                     x                            p                                                         >                                                           >        ?  >   8~?   |  x                                                                        >                                                            >        ?  >>?  ?? >  x   c #  @                                                 x                            ?                           >        >~|   >>?  ? >  | Ϗ                                                    ??                                          >        ||y  >>}  ? <  x ߇                                                    ?                               >        |>?  >>| y  < <| | Ǉ|x?                                                                             >        <?  >>| s > | ? x x  ?                                                 ?                           >        |>?  >>>   <  | Ǉxy  ?|                                                    ` ??                          >        |  >>  ?  |  x x  x?                                                 ?     ?                   | ?                          >        |>|? >?  }  <} | Ǉ xy   < |                                                 ?     >                           O~?                         >        ||ǀ ><?   |? y  x   x x<                                                         ?                                                           >        ?π >>?   > | Ǉxy/  > |                                                          >                                                           >        ?  >>  < y x  ~x>                                                          >                                                           >          ??    | xx  ?<                                                          >                                                           >        ~  ~   ? >?  ?  ?x                                                          ?                                                            >              | q ?>  >   < ??                                                             >                                                           >                                                            G                                                                                                                         >                                                                                                                                      >                                                          >                                                 <                                                                                           ?                                                         >                                                 |                                                                                           >                                                          >                       ?                                                                                                                     ?                                                          >                                            `                                                                                                   >                                                          >                                                                                                                                                   >                                                          >                                                                                                                                                    >                                                          >                             `                     `    0                                                                                       >                                                            >                        <                                                                                                              >                                                             >               p        |                                              <                                                           >                                                             >        |       p        >             ?                       >                                                                      >                                                            >        |                    `       8  |                       ~                                                                      >                                                            >        |             x               8  xx                                                                                            >                                                            >        |  O  x       p    <    x  x|                                                                                            >                                                            >        |? ?   `gx  x<  >  ?                                                                                   >                                                            >        |      <     =   8                                                             ?                                                            >        |}      >    ?                                                                >                                                            >        |y ?~   <>xx  >      ?                                                              ?                                                            ?        |{     <>||xx  > s  Ͽ>|x <                                                             >                                                            >        | |    <|xx  > ߱   ><x ?<<w                                                             ?                                                            >        |? |    <|xx  <    <<7 8>g                                                              >                                                            >        |  <     <||x  <    <<                                                                >                                                             >        |  |     <|xx  <     <<                                                                 >                                                             >        | sχ|    <>|||x  x|     <<  ?                                                             >                                                            >        | |  <<x|xx  xx    wσ<< |?                                                             >                                                            >         |  ?|x  | y   <<~ xÀ                                                            >                                                            >           ?||  ?   <<  |Ǹ <<p                                                          >                                                            >        ~ ?   ?||      ~~?   <<                                                          >                                                            >         `    x|>      ?~~?    <<                                                          >                                                            >                                   0                       3      ?|  x<                                                          >                                                            >                                                                           0~  x<|                                                          >                                                            >                                                                                   p<<                                                          >                                                             >                                                                                  <x                                                          >                                                             >                                                                                  xp                                                          >                                                             >                                                                                                                                              >                                                             >                                                                                                                                                  >                                                             >                                                                                                                                                   >                                                            >            x                                                                                                                                        >                                                             >                                                                                                                                                    >                                                            ?            |                                                                                                                               >                                                             >            x                                                                                                                           >                                                            ?                   8                                                                                                                      >                                                             >                   x                À           `                   <                                                                       >                                                            >        x80   |                                          |                                                                           >                                                             >         ~   3Àg`           00                       <                                                        >                                                            ?        ?        ?~?   x               <                                                                                                              >        ~|x        ?~<?     ?;                                                                                                     ?        ||||| ~x  ?     =xx<>?   x  ?                                                                                         >        ||x ϟ  <?     ~|x<>9}                                                                                     >        <||| x  |x}     <>x>xxx  <>9?   | y >y                                                        ?             >        ||x ǿ  >?x{      |><x |
s    s |x                                                            ?         >        |||x  x  ?|x}     <>xxx  <ǁ   x  <|o                                                            >             S         >        |xx Ǉ  << xx  ? ?  |><x xx    ? xy                                                          >                                 >        |||x x  >>|x|    <>xxx  <>'?   x }  <|                                                            >                                         >        ~ ǟx  >?xxy  >  <><xx |<灏9   x OǇ |y                                                            >                                                 ?        ?  _|xy >  <>|<|xx  <>ǿy  x <x?                                                           >                                                          >        ??    ?|  ~ >|~ |ρǿ<   ώ<x                                                           >                                                           >         ?      ???  >   <|                                                           >                                                           >        00   }   ?{  <  ||                                                           >                                                            ?         |                 |  ?!  8   >p ~|?                                                           >                                `                            >         |                              <                                 |                                                           >                                  <                       >         ~                              <                                                                                                     >       ?                          |           <           >                                       |                                                                                                     >                                 |           ~           ?                                      ~                                                                                                      >                                           |           >         |                            ?  ~                                                                                                      >                                <                      ?                                                                                                                                                 >                               ~                      >                                                                                                                                                                                                        >                                                                                                                                                                                                           >                                                                                                                                                                                                           >                                                                                                                                                                                     x           x                                                                                                                                                                        
                        |                      >                                                                                                                                                                                      <x           x           >                                                                                                                                    ?                          |                        <p                      >                                                                                                                                                                                         ?0           p           >                                                                                                                                    ?                                                     ?            `           >                                                                                                                                                                                                                >                                                                                                                                ?                                                                                 >                                                                                                                                                                                                                                                                      ǀ                                                                           ?                                                                                 >                                                                                                                                                                                                                                                                                                                                                   ?                                                                                 >                                                                                                                                                                                                                                                                                                                                                    ?                                                                                 >                                                                                                                                                                                                                    ?                                                                                                                                  ?                                                                                 >                                                                                                                                                                                                                                                                                                                                                       ?                                                                                 >                                                      >                                                                                                                                                                                                                                                                                                                                                                                 >                  px                              >                                                                                                                                                                                x|                              >                                                                                                                                                            >                x                              >         >>                                                                                                                                                                   8                         >         ?                                                                                                                                                   >                                   ? <       p                                                                                                                                                                      <                         p                  8                                                                                                                                  >        ?  8x3    <                                8       p                                                                                                                                          ?   x??  `     `             <     x       x                                                                                                                                  >          `??     >              ?>                                                                                                                                      >   |??     >               ߁                                                                                                                          >         <  x|>>     <             ߟ<   ?                                                                                                                                   ~   ||y>>>     <            ? < Ǐ>x                                                                                                                                        xxy><  |            ?  Ǉx                                                                                                                                     x     |xx> | ~           ?  ǟx   x                                                                                                                                       xx>< | |           <  x  Ǉx                                                                                                                                     3| >   xxx?> | |        >  |  Ǟ x   x                                                                                                                                   >   xxxϞ>><     | x ? > |  Ǉ x                                                                                                                                        |x>><   | x >? > Ǉx                                                                                                                                     ?  >? |   ? Ǉx   x|q~                                                                                                                                  ? >|        ? Ǐ  z>                                                                                                                                     ? <           ~ ?? ?                                                                                                                                                      ~>     <           <   ?   ~?                                                                                                                                                                <                            <                                         x@                                      ?                                                                                                                                                                                                                                                                                     >                                            ǀ                                                                                                                                                                                                                                                          8                                                                                                                                                                                                                                         	                                             ~                                                                                                                                                                                                                                                                                                                                                       0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ?                                                                                                                                                                                                                   ?                                                                                                                                                                                                                   {                                                                                                                                                                                                                   y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |                                                                                                                                                                                                                   |                                                                                                                                                                                                                   ~                                                                                                                                                                                                                   ~                                                                                                                                                                                                                                                                                                                                                                                                                                      <                                                                                                                                                                                                              >                                                                                                                                                                                                                 |                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            >                                                                                                                                                                                                                ?                                                                                                                                                                                                                ?                                                                                                                                                                                                                >p                                                                                                                                                                                                               >                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   >                                                                                                                                                                                                                      ?                                                                                                                                                                                                                      >                                                                                                                                                                                                                      >                                                                                                                                                                                                                   |                                                                                                                                                                                                           >                                    >     <                                                                                                                                                           x                                       < ~    |                                                                                                                                                         >                                      ?    <                                                                                                                                                 ?                       8                         >   < 8                                                                                                                                                ><             ~            <                            <`                                                                                                                                                 8|8    > >            >  |  x          >   x   x                                                                                                                                                 ~    > ~            Ǐ?  ? <<  >~ 0<                                                                                                                                                 |            ??   |||  x y;                                                                                                                                     |     >             ~Ϗ?   >|  | Y                                                                                                                                          |             |w  <><<< < |>x|x >s?                                                                                                                                          | |            <χ||   <>< <x <|<| 3s<~                                                                                                                                       ?| x _        |x   |><<<  <|x gx>|                                                                                                                                       ?| | ?        < ?|   |><  <<| x<                                                                                                                                    ?|     |? x    |><<< > <|x >x                                                                                                                                    |  ?~ <| |   << >x <<| x<                                                                                                                                    ?   |      ||9gx  ~>><< | <<|x x>x                                                                                                                                    >   <      =πq|  ?>>< <x <><| ?|<                                                                                                                                    <   <           ??{|  ?<  <?<|<|                                                                                                                                    <|   >            ?p|  ~ ?? <?<>||                                                                                                                                    <x   >    ǃ         ?`| ? ~ ?? ~~? ?                                                                                                                                    <x               1   ?        > < ~~                                                                                                                                       <x                                                                                                                                                                                              >                                                                                                                                                                                                               珀                                 >                                                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                       ~                                   ?                                                                                                                                                                               8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ?                                                                                                                                                                                                                   ??                                                                                                                                                                                                                   ?                                                                                                                                                                                                                   {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                   |>                                                                                                                                                                                                                                                                                                                                                                                                                                     >                                                                                                                                                                                                                   >                                                                                                                                                                                                                   |                                                                                                                                                                                                                      <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <                                                                                                                                                                                                                 >                                                                                                                                                                                                                  >                                                      @                                                                                                                                                   p           ?                               x               8                                                                                                                                                0     >                                   ~   | x                                                                                                                                             8  ?   >                                                                                                                                                                             `p|    x  x   |                                      ~                                                                                                                                      ?   pp   8                              x              x                                                                                                                                       a`   0                             x             <                                                                                                                                   {       ~||   `  ??    x          8<                                                                                                                                      |>             x?   πx                                                                                                                                   {  <>|~            x                                                                                                                                        w  |||x     ?   q ǟ   x                                                                                                                                      ?  <||x     ~ϟ?   |ϟ0    x 9>                                                                                                                                       <||x     |w   ? ǃ   y Ǐ>                                                                                                                                       <||x     |   ?Ǉ     y Ǉ~                                                                                                                                        ?<>|||x   x    ǁ    y@ ǁ                                                                                                                                        <>|||x   |        y  Ǉ  ?                                                                                                                                    ?|||   |    σ   y` Ǐ  8                                                                                                                                    ?||  < ~9`     y Ǐ  8                                                                                                                                    ?~  <x ?y  y |  y yǟ>  8                                                                                                                                    <  ~  ?<x p 6y |   yǟ  <                                                                                                                                                       0                    0 <   y  ~?                                                                                                                                                                                              p? p  >>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /* 
 * Compress - data compression program 
 */
#define	min(a,b)	((a>b) ? b : a)

/*
 * machine variants which require cc -Dmachine:  pdp11, z8000, pcxt
 */

/*
 * Set USERMEM to the maximum amount of physical user memory available
 * in bytes.  USERMEM is used to determine the maximum BITS that can be used
 * for compression.
 *
 * SACREDMEM is the amount of physical memory saved for others; compress
 * will hog the rest.
 */
#ifndef SACREDMEM
#define SACREDMEM	0
#endif

#ifndef USERMEM
# define USERMEM 	450000	/* default user memory */
#endif

#ifdef interdata		/* (Perkin-Elmer) */
#define SIGNED_COMPARE_SLOW	/* signed compare is slower than unsigned */
#endif

#ifdef pdp11
# define BITS 	12	/* max bits/code for 16-bit machine */
# define NO_UCHAR	/* also if "unsigned char" functions as signed char */
# undef USERMEM 
#endif /* pdp11 */	/* don't forget to compile with -i */

#ifdef z8000
# define BITS 	12
# undef vax		/* weird preprocessor */
# undef USERMEM 
#endif /* z8000 */

#ifdef pcxt
# define BITS   12
# undef USERMEM
#endif /* pcxt */

#ifdef USERMEM
# if USERMEM >= (433484+SACREDMEM)
#  define PBITS	16
# else
#  if USERMEM >= (229600+SACREDMEM)
#   define PBITS	15
#  else
#   if USERMEM >= (127536+SACREDMEM)
#    define PBITS	14
#   else
#    if USERMEM >= (73464+SACREDMEM)
#     define PBITS	13
#    else
#     define PBITS	12
#    endif
#   endif
#  endif
# endif
# undef USERMEM
#endif /* USERMEM */

#ifdef PBITS		/* Preferred BITS for this memory size */
# ifndef BITS
#  define BITS PBITS
# endif BITS
#endif /* PBITS */

#if BITS == 16
# define HSIZE	69001		/* 95% occupancy */
#endif
#if BITS == 15
# define HSIZE	35023		/* 94% occupancy */
#endif
#if BITS == 14
# define HSIZE	18013		/* 91% occupancy */
#endif
#if BITS == 13
# define HSIZE	9001		/* 91% occupancy */
#endif
#if BITS <= 12
# define HSIZE	5003		/* 80% occupancy */
#endif

#ifdef M_XENIX			/* Stupid compiler can't handle arrays with */
# if BITS == 16			/* more than 65535 bytes - so we fake it */
#  define XENIX_16
# else
#  if BITS > 13			/* Code only handles BITS = 12, 13, or 16 */
#   define BITS	13
#  endif
# endif
#endif

/*
 * a code_int must be able to hold 2**BITS values of type int, and also -1
 */
#if BITS > 15
typedef long int	code_int;
#else
typedef int		code_int;
#endif

#ifdef SIGNED_COMPARE_SLOW
typedef unsigned long int count_int;
typedef unsigned short int count_short;
#else
typedef long int	  count_int;
#endif

#ifdef NO_UCHAR
 typedef char	char_type;
#else
 typedef	unsigned char	char_type;
#endif /* UCHAR */
char_type magic_header[] = { "\037\235" };	/* 1F 9D */

/* Defines for third byte of header */
#define BIT_MASK	0x1f
#define BLOCK_MASK	0x80
/* Masks 0x40 and 0x20 are free.  I think 0x20 should mean that there is
   a fourth header byte (for expansion).
*/
#define INIT_BITS 9			/* initial number of bits/code */

/*
 * compress.c - File compression ala IEEE Computer, June 1984.
 *
 * Authors:	Spencer W. Thomas	(decvax!harpo!utah-cs!utah-gr!thomas)
 *		Jim McKie		(decvax!mcvax!jim)
 *		Steve Davies		(decvax!vax135!petsd!peora!srd)
 *		Ken Turkowski		(decvax!decwrl!turtlevax!ken)
 *		James A. Woods		(decvax!ihnp4!ames!jaw)
 *		Joe Orost		(decvax!vax135!petsd!joe)
 *
 * $Header: compress.c,v 4.0 85/07/30 12:50:00 joe Release $
 * $Log:	compress.c,v $
 * Revision 4.0  85/07/30  12:50:00  joe
 * Removed ferror() calls in output routine on every output except first.
 * Prepared for release to the world.
 * 
 * Revision 3.6  85/07/04  01:22:21  joe
 * Remove much wasted storage by overlaying hash table with the tables
 * used by decompress: tab_suffix[1<<BITS], stack[8000].  Updated USERMEM
 * computations.  Fixed dump_tab() DEBUG routine.
 *
 * Revision 3.5  85/06/30  20:47:21  jaw
 * Change hash function to use exclusive-or.  Rip out hash cache.  These
 * speedups render the megamemory version defunct, for now.  Make decoder
 * stack global.  Parts of the RCS trunks 2.7, 2.6, and 2.1 no longer apply.
 *
 * Revision 3.4  85/06/27  12:00:00  ken
 * Get rid of all floating-point calculations by doing all compression ratio
 * calculations in fixed point.
 *
 * Revision 3.3  85/06/24  21:53:24  joe
 * Incorporate portability suggestion for M_XENIX.  Got rid of text on #else
 * and #endif lines.  Cleaned up #ifdefs for vax and interdata.
 *
 * Revision 3.2  85/06/06  21:53:24  jaw
 * Incorporate portability suggestions for Z8000, IBM PC/XT from mailing list.
 * Default to "quiet" output (no compression statistics).
 *
 * Revision 3.1  85/05/12  18:56:13  jaw
 * Integrate decompress() stack speedups (from early pointer mods by McKie).
 * Repair multi-file USERMEM gaffe.  Unify 'force' flags to mimic semantics
 * of SVR2 'pack'.  Streamline block-compress table clear logic.  Increase 
 * output byte count by magic number size.
 * 
 * Revision 3.0   84/11/27  11:50:00  petsd!joe
 * Set HSIZE depending on BITS.  Set BITS depending on USERMEM.  Unrolled
 * loops in clear routines.  Added "-C" flag for 2.0 compatibility.  Used
 * unsigned compares on Perkin-Elmer.  Fixed foreground check.
 *
 * Revision 2.7   84/11/16  19:35:39  ames!jaw
 * Cache common hash codes based on input statistics; this improves
 * performance for low-density raster images.  Pass on #ifdef bundle
 * from Turkowski.
 *
 * Revision 2.6   84/11/05  19:18:21  ames!jaw
 * Vary size of hash tables to reduce time for small files.
 * Tune PDP-11 hash function.
 *
 * Revision 2.5   84/10/30  20:15:14  ames!jaw
 * Junk chaining; replace with the simpler (and, on the VAX, faster)
 * double hashing, discussed within.  Make block compression standard.
 *
 * Revision 2.4   84/10/16  11:11:11  ames!jaw
 * Introduce adaptive reset for block compression, to boost the rate
 * another several percent.  (See mailing list notes.)
 *
 * Revision 2.3   84/09/22  22:00:00  petsd!joe
 * Implemented "-B" block compress.  Implemented REVERSE sorting of tab_next.
 * Bug fix for last bits.  Changed fwrite to putchar loop everywhere.
 *
 * Revision 2.2   84/09/18  14:12:21  ames!jaw
 * Fold in news changes, small machine typedef from thomas,
 * #ifdef interdata from joe.
 *
 * Revision 2.1   84/09/10  12:34:56  ames!jaw
 * Configured fast table lookup for 32-bit machines.
 * This cuts user time in half for b <= FBITS, and is useful for news batching
 * from VAX to PDP sites.  Also sped up decompress() [fwrite->putc] and
 * added signal catcher [plus beef in writeerr()] to delete effluvia.
 *
 * Revision 2.0   84/08/28  22:00:00  petsd!joe
 * Add check for foreground before prompting user.  Insert maxbits into
 * compressed file.  Force file being uncompressed to end with ".Z".
 * Added "-c" flag and "zcat".  Prepared for release.
 *
 * Revision 1.10  84/08/24  18:28:00  turtlevax!ken
 * Will only compress regular files (no directories), added a magic number
 * header (plus an undocumented -n flag to handle old files without headers),
 * added -f flag to force overwriting of possibly existing destination file,
 * otherwise the user is prompted for a response.  Will tack on a .Z to a
 * filename if it doesn't have one when decompressing.  Will only replace
 * file if it was compressed.
 *
 * Revision 1.9  84/08/16  17:28:00  turtlevax!ken
 * Removed scanargs(), getopt(), added .Z extension and unlimited number of
 * filenames to compress.  Flags may be clustered (-Ddvb12) or separated
 * (-D -d -v -b 12), or combination thereof.  Modes and other status is
 * copied with copystat().  -O bug for 4.2 seems to have disappeared with
 * 1.8.
 *
 * Revision 1.8  84/08/09  23:15:00  joe
 * Made it compatible with vax version, installed jim's fixes/enhancements
 *
 * Revision 1.6  84/08/01  22:08:00  joe
 * Sped up algorithm significantly by sorting the compress chain.
 *
 * Revision 1.5  84/07/13  13:11:00  srd
 * Added C version of vax asm routines.  Changed structure to arrays to
 * save much memory.  Do unsigned compares where possible (faster on
 * Perkin-Elmer)
 *
 * Revision 1.4  84/07/05  03:11:11  thomas
 * Clean up the code a little and lint it.  (Lint complains about all
 * the regs used in the asm, but I'm not going to "fix" this.)
 *
 * Revision 1.3  84/07/05  02:06:54  thomas
 * Minor fixes.
 *
 * Revision 1.2  84/07/05  00:27:27  thomas
 * Add variable bit length output.
 *
 */
static char rcs_ident[] = 
"$Header: compress.c,v 4.0 85/07/30 12:50:00 joe Release $";

#include <stdio.h>
#include <ctype.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>

#define ARGVAL() (*++(*argv) || (--argc && *++argv))

int n_bits;				/* number of bits/code */
int maxbits = BITS;			/* user settable max # bits/code */
code_int maxcode;			/* maximum code, given n_bits */
code_int maxmaxcode = 1 << BITS;	/* should NEVER generate this code */
#ifdef COMPATIBLE		/* But wrong! */
# define MAXCODE(n_bits)	(1 << (n_bits) - 1)
#else
# define MAXCODE(n_bits)	((1 << (n_bits)) - 1)
#endif /* COMPATIBLE */

#ifdef XENIX_16
count_int htab0[8192];
count_int htab1[8192];
count_int htab2[8192];
count_int htab3[8192];
count_int htab4[8192];
count_int htab5[8192];
count_int htab6[8192];
count_int htab7[8192];
count_int htab8[HSIZE-65536];
count_int * htab[9] = {
	htab0, htab1, htab2, htab3, htab4, htab5, htab6, htab7, htab8 };

#define htabof(i)	(htab[(i) >> 13][(i) & 0x1fff])
unsigned short code0tab[16384];
unsigned short code1tab[16384];
unsigned short code2tab[16384];
unsigned short code3tab[16384];
unsigned short code4tab[16384];
unsigned short * codetab[5] = {
	code0tab, code1tab, code2tab, code3tab, code4tab };

#define codetabof(i)	(codetab[(i) >> 14][(i) & 0x3fff])

#else	/* Normal machine */
count_int htab [HSIZE];
unsigned short codetab [HSIZE];
#define htabof(i)	htab[i]
#define codetabof(i)	codetab[i]
#endif	/* XENIX_16 */
code_int hsize = HSIZE;			/* for dynamic table sizing */
count_int fsize;

/*
 * To save much memory, we overlay the table used by compress() with those
 * used by decompress().  The tab_prefix table is the same size and type
 * as the codetab.  The tab_suffix table needs 2**BITS characters.  We
 * get this from the beginning of htab.  The output stack uses the rest
 * of htab, and contains characters.  There is plenty of room for any
 * possible stack (stack used to be 8000 characters).
 */

#define tab_prefixof(i)	codetabof(i)
#ifdef XENIX_16
# define tab_suffixof(i)	((char_type *)htab[(i)>>15])[(i) & 0x7fff]
# define de_stack		((char_type *)(htab2))
#else	/* Normal machine */
# define tab_suffixof(i)	((char_type *)(htab))[i]
# define de_stack		((char_type *)&tab_suffixof(1<<BITS))
#endif	/* XENIX_16 */

code_int free_ent = 0;			/* first unused entry */
int exit_stat = 0;

code_int getcode();

Usage() {
#ifdef DEBUG
fprintf(stderr,"Usage: compress [-dDVfc] [-b maxbits] [file ...]\n");
}
int debug = 0;
#else
fprintf(stderr,"Usage: compress [-dfvcV] [-b maxbits] [file ...]\n");
}
#endif /* DEBUG */
int nomagic = 0;	/* Use a 3-byte magic number header, unless old file */
int zcat_flg = 0;	/* Write output on stdout, suppress messages */
int quiet = 1;		/* don't tell me about compression */

/*
 * block compression parameters -- after all codes are used up,
 * and compression rate changes, start over.
 */
int block_compress = BLOCK_MASK;
int clear_flg = 0;
long int ratio = 0;
#define CHECK_GAP 10000	/* ratio check interval */
count_int checkpoint = CHECK_GAP;
/*
 * the next two codes should not be changed lightly, as they must not
 * lie within the contiguous general code space.
 */ 
#define FIRST	257	/* first free entry */
#define	CLEAR	256	/* table clear output code */

int force = 0;
char ofname [100];
#ifdef DEBUG
int verbose = 0;
#endif /* DEBUG */
int (*bgnd_flag)();

int do_decomp = 0;

/*****************************************************************
 * TAG( main )
 *
 * Algorithm from "A Technique for High Performance Data Compression",
 * Terry A. Welch, IEEE Computer Vol 17, No 6 (June 1984), pp 8-19.
 *
 * Usage: compress [-dfvc] [-b bits] [file ...]
 * Inputs:
 *	-d:	    If given, decompression is done instead.
 *
 *      -c:         Write output on stdout, don't remove original.
 *
 *      -b:         Parameter limits the max number of bits/code.
 *
 *	-f:	    Forces output file to be generated, even if one already
 *		    exists, and even if no space is saved by compressing.
 *		    If -f is not used, the user will be prompted if stdin is
 *		    a tty, otherwise, the output file will not be overwritten.
 *
 *      -v:	    Write compression statistics
 *
 * 	file ...:   Files to be compressed.  If none specified, stdin
 *		    is used.
 * Outputs:
 *	file.Z:	    Compressed form of file with same mode, owner, and utimes
 * 	or stdout   (if stdin used as input)
 *
 * Assumptions:
 *	When filenames are given, replaces with the compressed version
 *	(.Z suffix) only if the file decreases in size.
 * Algorithm:
 * 	Modified Lempel-Ziv method (LZW).  Basically finds common
 * substrings and replaces them with a variable size code.  This is
 * deterministic, and can be done on the fly.  Thus, the decompression
 * procedure needs no input table, but tracks the way the table was built.
 */

main( argc, argv )
register int argc; char **argv;
{
    int overwrite = 0;	/* Do not overwrite unless given -f flag */
    char tempname[100];
    char **filelist, **fileptr;
    char *cp, *rindex(), *malloc();
    struct stat statbuf;
    extern onintr(), oops();


    if ( (bgnd_flag = signal ( SIGINT, SIG_IGN )) != SIG_IGN ) {
	signal ( SIGINT, onintr );
	signal ( SIGSEGV, oops );
    }

#ifdef COMPATIBLE
    nomagic = 1;	/* Original didn't have a magic number */
#endif /* COMPATIBLE */

    filelist = fileptr = (char **)(malloc(argc * sizeof(*argv)));
    *filelist = NULL;

    if((cp = rindex(argv[0], '/')) != 0) {
	cp++;
    } else {
	cp = argv[0];
    }
    if(strcmp(cp, "uncompress") == 0) {
	do_decomp = 1;
    } else if(strcmp(cp, "zcat") == 0) {
	do_decomp = 1;
	zcat_flg = 1;
    }

#ifdef BSD4_2
    /* 4.2BSD dependent - take it out if not */
    setlinebuf( stderr );
#endif /* BSD4_2 */

    /* Argument Processing
     * All flags are optional.
     * -D => debug
     * -V => print Version; debug verbose
     * -d => do_decomp
     * -v => unquiet
     * -f => force overwrite of output file
     * -n => no header: useful to uncompress old files
     * -b maxbits => maxbits.  If -b is specified, then maxbits MUST be
     *	    given also.
     * -c => cat all output to stdout
     * -C => generate output compatible with compress 2.0.
     * if a string is left, must be an input filename.
     */
    for (argc--, argv++; argc > 0; argc--, argv++) {
	if (**argv == '-') {	/* A flag argument */
	    while (*++(*argv)) {	/* Process all flags in this arg */
		switch (**argv) {
#ifdef DEBUG
		    case 'D':
			debug = 1;
			break;
		    case 'V':
			verbose = 1;
			version();
			break;
#else
		    case 'V':
			version();
			break;
#endif /* DEBUG */
		    case 'v':
			quiet = 0;
			break;
		    case 'd':
			do_decomp = 1;
			break;
		    case 'f':
		    case 'F':
			overwrite = 1;
			force = 1;
			break;
		    case 'n':
			nomagic = 1;
			break;
		    case 'C':
			block_compress = 0;
			break;
		    case 'b':
			if (!ARGVAL()) {
			    fprintf(stderr, "Missing maxbits\n");
			    Usage();
			    exit(1);
			}
			maxbits = atoi(*argv);
			goto nextarg;
		    case 'c':
			zcat_flg = 1;
			break;
		    case 'q':
			quiet = 1;
			break;
		    default:
			fprintf(stderr, "Unknown flag: '%c'; ", **argv);
			Usage();
			exit(1);
		}
	    }
	}
	else {		/* Input file name */
	    *fileptr++ = *argv;	/* Build input file list */
	    *fileptr = NULL;
	    /* process nextarg; */
	}
	nextarg: continue;
    }

    if(maxbits < INIT_BITS) maxbits = INIT_BITS;
    if (maxbits > BITS) maxbits = BITS;
    maxmaxcode = 1 << maxbits;

    if (*filelist != NULL) {
	for (fileptr = filelist; *fileptr; fileptr++) {
	    exit_stat = 0;
	    if (do_decomp != 0) {			/* DECOMPRESSION */
		/* Check for .Z suffix */
		if (strcmp(*fileptr + strlen(*fileptr) - 2, ".Z") != 0) {
		    /* No .Z: tack one on */
		    strcpy(tempname, *fileptr);
		    strcat(tempname, ".Z");
		    *fileptr = tempname;
		}
		/* Open input file */
		if ((freopen(*fileptr, "r", stdin)) == NULL) {
			perror(*fileptr); continue;
		}
		/* Check the magic number */
		if (nomagic == 0) {
		    if ((getchar() != (magic_header[0] & 0xFF))
		     || (getchar() != (magic_header[1] & 0xFF))) {
			fprintf(stderr, "%s: not in compressed format\n",
			    *fileptr);
		    continue;
		    }
		    maxbits = getchar();	/* set -b from file */
		    block_compress = maxbits & BLOCK_MASK;
		    maxbits &= BIT_MASK;
		    maxmaxcode = 1 << maxbits;
		    if(maxbits > BITS) {
			fprintf(stderr,
			"%s: compressed with %d bits, can only handle %d bits\n",
			*fileptr, maxbits, BITS);
			continue;
		    }
		}
		/* Generate output filename */
		strcpy(ofname, *fileptr);
		ofname[strlen(*fileptr) - 2] = '\0';  /* Strip off .Z */
	    } else {					/* COMPRESSION */
		if (strcmp(*fileptr + strlen(*fileptr) - 2, ".Z") == 0) {
		    	fprintf(stderr, "%s: already has .Z suffix -- no change\n",
			    *fileptr);
		    continue;
		}
		/* Open input file */
		if ((freopen(*fileptr, "r", stdin)) == NULL) {
		    perror(*fileptr); continue;
		}
		stat ( *fileptr, &statbuf );
		fsize = (long) statbuf.st_size;
		/*
		 * tune hash table size for small files -- ad hoc,
		 * but the sizes match earlier #defines, which
		 * serve as upper bounds on the number of output codes. 
		 */
		hsize = HSIZE;
		if ( fsize < (1 << 12) )
		    hsize = min ( 5003, HSIZE );
		else if ( fsize < (1 << 13) )
		    hsize = min ( 9001, HSIZE );
		else if ( fsize < (1 << 14) )
		    hsize = min ( 18013, HSIZE );
		else if ( fsize < (1 << 15) )
		    hsize = min ( 35023, HSIZE );
		else if ( fsize < 47000 )
		    hsize = min ( 50021, HSIZE );

		/* Generate output filename */
		strcpy(ofname, *fileptr);
#ifndef BSD4_2		/* Short filenames */
		if ((cp=rindex(ofname,'/')) != NULL)	cp++;
		else					cp = ofname;
		if (strlen(cp) > 12) {
		    fprintf(stderr,"%s: filename too long to tack on .Z\n",cp);
		    continue;
		}
#endif  /* BSD4_2		Long filenames allowed */
		strcat(ofname, ".Z");
	    }
	    /* Check for overwrite of existing file */
	    if (overwrite == 0 && zcat_flg == 0) {
		if (stat(ofname, &statbuf) == 0) {
		    char response[2];
		    response[0] = 'n';
		    fprintf(stderr, "%s already exists;", ofname);
		    if (foreground()) {
			fprintf(stderr, " do you wish to overwrite %s (y or n)? ",
			ofname);
			fflush(stderr);
			read(2, response, 2);
			while (response[1] != '\n') {
			    if (read(2, response+1, 1) < 0) {	/* Ack! */
				perror("stderr"); break;
			    }
			}
		    }
		    if (response[0] != 'y') {
			fprintf(stderr, "\tnot overwritten\n");
			continue;
		    }
		}
	    }
	    if(zcat_flg == 0) {		/* Open output file */
		if (freopen(ofname, "w", stdout) == NULL) {
		    perror(ofname);
		    continue;
		}
		if(!quiet)
			fprintf(stderr, "%s: ", *fileptr);
	    }

	    /* Actually do the compression/decompression */
	    if (do_decomp == 0)	compress();
#ifndef DEBUG
	    else			decompress();
#else
	    else if (debug == 0)	decompress();
	    else			printcodes();
	    if (verbose)		dump_tab();
#endif /* DEBUG */
	    if(zcat_flg == 0) {
		copystat(*fileptr, ofname);	/* Copy stats */
		if((exit_stat == 1) || (!quiet))
			putc('\n', stderr);
	    }
	}
    } else {		/* Standard input */
	if (do_decomp == 0) {
		compress();
#ifdef DEBUG
		if(verbose)		dump_tab();
#endif /* DEBUG */
		if(!quiet)
			putc('\n', stderr);
	} else {
	    /* Check the magic number */
	    if (nomagic == 0) {
		if ((getchar()!=(magic_header[0] & 0xFF))
		 || (getchar()!=(magic_header[1] & 0xFF))) {
		    fprintf(stderr, "stdin: not in compressed format\n");
		    exit(1);
		}
		maxbits = getchar();	/* set -b from file */
		block_compress = maxbits & BLOCK_MASK;
		maxbits &= BIT_MASK;
		maxmaxcode = 1 << maxbits;
		fsize = 100000;		/* assume stdin large for USERMEM */
		if(maxbits > BITS) {
			fprintf(stderr,
			"stdin: compressed with %d bits, can only handle %d bits\n",
			maxbits, BITS);
			exit(1);
		}
	    }
#ifndef DEBUG
	    decompress();
#else
	    if (debug == 0)	decompress();
	    else		printcodes();
	    if (verbose)	dump_tab();
#endif /* DEBUG */
	}
    }
    exit(exit_stat);
}

static int offset;
long int in_count = 1;			/* length of input */
long int bytes_out;			/* length of compressed output */
long int out_count = 0;			/* # of codes output (for debugging) */

/*
 * compress stdin to stdout
 *
 * Algorithm:  use open addressing double hashing (no chaining) on the 
 * prefix code / next character combination.  We do a variant of Knuth's
 * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
 * secondary probe.  Here, the modular division first probe is gives way
 * to a faster exclusive-or manipulation.  Also do block compression with
 * an adaptive reset, whereby the code table is cleared when the compression
 * ratio decreases, but after the table fills.  The variable-length output
 * codes are re-sized at this point, and a special CLEAR code is generated
 * for the decompressor.  Late addition:  construct the table according to
 * file size for noticeable speed improvement on small files.  Please direct
 * questions about this implementation to ames!jaw.
 */

compress() {
    register long fcode;
    register code_int i = 0;
    register int c;
    register code_int ent;
#ifdef XENIX_16
    register code_int disp;
#else	/* Normal machine */
    register int disp;
#endif
    register code_int hsize_reg;
    register int hshift;

#ifndef COMPATIBLE
    if (nomagic == 0) {
	putchar(magic_header[0]); putchar(magic_header[1]);
	putchar((char)(maxbits | block_compress));
	if(ferror(stdout))
		writeerr();
    }
#endif /* COMPATIBLE */

    offset = 0;
    bytes_out = 3;		/* includes 3-byte header mojo */
    out_count = 0;
    clear_flg = 0;
    ratio = 0;
    in_count = 1;
    checkpoint = CHECK_GAP;
    maxcode = MAXCODE(n_bits = INIT_BITS);
    free_ent = ((block_compress) ? FIRST : 256 );

    ent = getchar ();

    hshift = 0;
    for ( fcode = (long) hsize;  fcode < 65536L; fcode *= 2L )
    	hshift++;
    hshift = 8 - hshift;		/* set hash code range bound */

    hsize_reg = hsize;
    cl_hash( (count_int) hsize_reg);		/* clear hash table */

#ifdef SIGNED_COMPARE_SLOW
    while ( (c = getchar()) != (unsigned) EOF ) {
#else
    while ( (c = getchar()) != EOF ) {
#endif
	in_count++;
	fcode = (long) (((long) c << maxbits) + ent);
 	i = ((c << hshift) ^ ent);	/* xor hashing */

	if ( htabof (i) == fcode ) {
	    ent = codetabof (i);
	    continue;
	} else if ( (long)htabof (i) < 0 )	/* empty slot */
	    goto nomatch;
 	disp = hsize_reg - i;		/* secondary hash (after G. Knott) */
	if ( i == 0 )
	    disp = 1;
probe:
	if ( (i -= disp) < 0 )
	    i += hsize_reg;

	if ( htabof (i) == fcode ) {
	    ent = codetabof (i);
	    continue;
	}
	if ( (long)htabof (i) > 0 ) 
	    goto probe;
nomatch:
	output ( (code_int) ent );
	out_count++;
 	ent = c;
#ifdef SIGNED_COMPARE_SLOW
	if ( (unsigned) free_ent < (unsigned) maxmaxcode) {
#else
	if ( free_ent < maxmaxcode ) {
#endif
 	    codetabof (i) = free_ent++;	/* code -> hashtable */
	    htabof (i) = fcode;
	}
	else if ( (count_int)in_count >= checkpoint && block_compress )
	    cl_block ();
    }
    /*
     * Put out the final code.
     */
    output( (code_int)ent );
    out_count++;
    output( (code_int)-1 );

    /*
     * Print out stats on stderr
     */
    if(zcat_flg == 0 && !quiet) {
#ifdef DEBUG
	fprintf( stderr,
		"%ld chars in, %ld codes (%ld bytes) out, compression factor: ",
		in_count, out_count, bytes_out );
	prratio( stderr, in_count, bytes_out );
	fprintf( stderr, "\n");
	fprintf( stderr, "\tCompression as in compact: " );
	prratio( stderr, in_count-bytes_out, in_count );
	fprintf( stderr, "\n");
	fprintf( stderr, "\tLargest code (of last block) was %d (%d bits)\n",
		free_ent - 1, n_bits );
#else /* !DEBUG */
	fprintf( stderr, "Compression: " );
	prratio( stderr, in_count-bytes_out, in_count );
#endif /* DEBUG */
    }
    if(bytes_out > in_count)	/* exit(2) if no savings */
	exit_stat = 2;
    return;
}

/*****************************************************************
 * TAG( output )
 *
 * Output the given code.
 * Inputs:
 * 	code:	A n_bits-bit integer.  If == -1, then EOF.  This assumes
 *		that n_bits =< (long)wordsize - 1.
 * Outputs:
 * 	Outputs code to the file.
 * Assumptions:
 *	Chars are 8 bits long.
 * Algorithm:
 * 	Maintain a BITS character long buffer (so that 8 codes will
 * fit in it exactly).  Use the VAX insv instruction to insert each
 * code in turn.  When the buffer fills up empty it and start over.
 */

static char buf[BITS];

#ifndef vax
char_type lmask[9] = {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00};
char_type rmask[9] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
#endif /* vax */

output( code )
code_int  code;
{
#ifdef DEBUG
    static int col = 0;
#endif /* DEBUG */

    /*
     * On the VAX, it is important to have the register declarations
     * in exactly the order given, or the asm will break.
     */
    register int r_off = offset, bits= n_bits;
    register char * bp = buf;

#ifdef DEBUG
	if ( verbose )
	    fprintf( stderr, "%5d%c", code,
		    (col+=6) >= 74 ? (col = 0, '\n') : ' ' );
#endif /* DEBUG */
    if ( code >= 0 ) {
#ifdef vax
	/* VAX DEPENDENT!! Implementation on other machines is below.
	 *
	 * Translation: Insert BITS bits from the argument starting at
	 * offset bits from the beginning of buf.
	 */
	0;	/* Work around for pcc -O bug with asm and if stmt */
	asm( "insv	4(ap),r11,r10,(r9)" );
#else /* not a vax */
/* 
 * byte/bit numbering on the VAX is simulated by the following code
 */
	/*
	 * Get to the first byte.
	 */
	bp += (r_off >> 3);
	r_off &= 7;
	/*
	 * Since code is always >= 8 bits, only need to mask the first
	 * hunk on the left.
	 */
	*bp = (*bp & rmask[r_off]) | (code << r_off) & lmask[r_off];
	bp++;
	bits -= (8 - r_off);
	code >>= 8 - r_off;
	/* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */
	if ( bits >= 8 ) {
	    *bp++ = code;
	    code >>= 8;
	    bits -= 8;
	}
	/* Last bits. */
	if(bits)
	    *bp = code;
#endif /* vax */
	offset += n_bits;
	if ( offset == (n_bits << 3) ) {
	    bp = buf;
	    bits = n_bits;
	    bytes_out += bits;
	    do
		putchar(*bp++);
	    while(--bits);
	    offset = 0;
	}

	/*
	 * If the next entry is going to be too big for the code size,
	 * then increase it, if possible.
	 */
	if ( free_ent > maxcode || (clear_flg > 0))
	{
	    /*
	     * Write the whole buffer, because the input side won't
	     * discover the size increase until after it has read it.
	     */
	    if ( offset > 0 ) {
		if( fwrite( buf, 1, n_bits, stdout ) != n_bits)
			writeerr();
		bytes_out += n_bits;
	    }
	    offset = 0;

	    if ( clear_flg ) {
    	        maxcode = MAXCODE (n_bits = INIT_BITS);
	        clear_flg = 0;
	    }
	    else {
	    	n_bits++;
	    	if ( n_bits == maxbits )
		    maxcode = maxmaxcode;
	    	else
		    maxcode = MAXCODE(n_bits);
	    }
#ifdef DEBUG
	    if ( debug ) {
		fprintf( stderr, "\nChange to %d bits\n", n_bits );
		col = 0;
	    }
#endif /* DEBUG */
	}
    } else {
	/*
	 * At EOF, write the rest of the buffer.
	 */
	if ( offset > 0 )
	    fwrite( buf, 1, (offset + 7) / 8, stdout );
	bytes_out += (offset + 7) / 8;
	offset = 0;
	fflush( stdout );
#ifdef DEBUG
	if ( verbose )
	    fprintf( stderr, "\n" );
#endif /* DEBUG */
	if( ferror( stdout ) )
		writeerr();
    }
}

/*
 * Decompress stdin to stdout.  This routine adapts to the codes in the
 * file building the "string" table on-the-fly; requiring no table to
 * be stored in the compressed file.  The tables used herein are shared
 * with those of the compress() routine.  See the definitions above.
 */

decompress() {
    register char_type *stackp;
    register int finchar;
    register code_int code, oldcode, incode;

    /*
     * As above, initialize the first 256 entries in the table.
     */
    maxcode = MAXCODE(n_bits = INIT_BITS);
    for ( code = 255; code >= 0; code-- ) {
	tab_prefixof(code) = 0;
	tab_suffixof(code) = (char_type)code;
    }
    free_ent = ((block_compress) ? FIRST : 256 );

    finchar = oldcode = getcode();
    if(oldcode == -1)	/* EOF already? */
	return;			/* Get out of here */
    putchar( (char)finchar );		/* first code must be 8 bits = char */
    if(ferror(stdout))		/* Crash if can't write */
	writeerr();
    stackp = de_stack;

    while ( (code = getcode()) > -1 ) {

	if ( (code == CLEAR) && block_compress ) {
	    for ( code = 255; code >= 0; code-- )
		tab_prefixof(code) = 0;
	    clear_flg = 1;
	    free_ent = FIRST - 1;
	    if ( (code = getcode ()) == -1 )	/* O, untimely death! */
		break;
	}
	incode = code;
	/*
	 * Special case for KwKwK string.
	 */
	if ( code >= free_ent ) {
            *stackp++ = finchar;
	    code = oldcode;
	}

	/*
	 * Generate output characters in reverse order
	 */
#ifdef SIGNED_COMPARE_SLOW
	while ( ((unsigned long)code) >= ((unsigned long)256) ) {
#else
	while ( code >= 256 ) {
#endif
	    *stackp++ = tab_suffixof(code);
	    code = tab_prefixof(code);
	}
	*stackp++ = finchar = tab_suffixof(code);

	/*
	 * And put them out in forward order
	 */
	do
	    putchar ( *--stackp );
	while ( stackp > de_stack );

	/*
	 * Generate the new entry.
	 */
	if ( (code=free_ent) < maxmaxcode ) {
	    tab_prefixof(code) = (unsigned short)oldcode;
	    tab_suffixof(code) = finchar;
	    free_ent = code+1;
	} 
	/*
	 * Remember previous code.
	 */
	oldcode = incode;
    }
    fflush( stdout );
    if(ferror(stdout))
	writeerr();
}

/*****************************************************************
 * TAG( getcode )
 *
 * Read one code from the standard input.  If EOF, return -1.
 * Inputs:
 * 	stdin
 * Outputs:
 * 	code or -1 is returned.
 */

code_int
getcode() {
    /*
     * On the VAX, it is important to have the register declarations
     * in exactly the order given, or the asm will break.
     */
    register code_int code;
    static int offset = 0, size = 0;
    static char_type buf[BITS];
    register int r_off, bits;
    register char_type *bp = buf;

    if ( clear_flg > 0 || offset >= size || free_ent > maxcode ) {
	/*
	 * If the next entry will be too big for the current code
	 * size, then we must increase the size.  This implies reading
	 * a new buffer full, too.
	 */
	if ( free_ent > maxcode ) {
	    n_bits++;
	    if ( n_bits == maxbits )
		maxcode = maxmaxcode;	/* won't get any bigger now */
	    else
		maxcode = MAXCODE(n_bits);
	}
	if ( clear_flg > 0) {
    	    maxcode = MAXCODE (n_bits = INIT_BITS);
	    clear_flg = 0;
	}
	size = fread( buf, 1, n_bits, stdin );
	if ( size <= 0 )
	    return -1;			/* end of file */
	offset = 0;
	/* Round size down to integral number of codes */
	size = (size << 3) - (n_bits - 1);
    }
    r_off = offset;
    bits = n_bits;
#ifdef vax
    asm( "extzv   r10,r9,(r8),r11" );
#else /* not a vax */
	/*
	 * Get to the first byte.
	 */
	bp += (r_off >> 3);
	r_off &= 7;
	/* Get first part (low order bits) */
#ifdef NO_UCHAR
	code = ((*bp++ >> r_off) & rmask[8 - r_off]) & 0xff;
#else
	code = (*bp++ >> r_off);
#endif /* NO_UCHAR */
	bits -= (8 - r_off);
	r_off = 8 - r_off;		/* now, offset into code word */
	/* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */
	if ( bits >= 8 ) {
#ifdef NO_UCHAR
	    code |= (*bp++ & 0xff) << r_off;
#else
	    code |= *bp++ << r_off;
#endif /* NO_UCHAR */
	    r_off += 8;
	    bits -= 8;
	}
	/* high order bits. */
	code |= (*bp & rmask[bits]) << r_off;
#endif /* vax */
    offset += n_bits;

    return code;
}

char *
rindex(s, c)		/* For those who don't have it in libc.a */
register char *s, c;
{
	char *p;
	for (p = NULL; *s; s++)
	    if (*s == c)
		p = s;
	return(p);
}

#ifdef DEBUG
printcodes()
{
    /*
     * Just print out codes from input file.  For debugging.
     */
    code_int code;
    int col = 0, bits;

    bits = n_bits = INIT_BITS;
    maxcode = MAXCODE(n_bits);
    free_ent = ((block_compress) ? FIRST : 256 );
    while ( ( code = getcode() ) >= 0 ) {
	if ( (code == CLEAR) && block_compress ) {
   	    free_ent = FIRST - 1;
   	    clear_flg = 1;
	}
	else if ( free_ent < maxmaxcode )
	    free_ent++;
	if ( bits != n_bits ) {
	    fprintf(stderr, "\nChange to %d bits\n", n_bits );
	    bits = n_bits;
	    col = 0;
	}
	fprintf(stderr, "%5d%c", code, (col+=6) >= 74 ? (col = 0, '\n') : ' ' );
    }
    putc( '\n', stderr );
    exit( 0 );
}

code_int sorttab[1<<BITS];	/* sorted pointers into htab */

dump_tab()	/* dump string table */
{
    register int i, first;
    register ent;
#define STACK_SIZE	15000
    int stack_top = STACK_SIZE;
    register c;

    if(do_decomp == 0) {	/* compressing */
	register int flag = 1;

	for(i=0; i<hsize; i++) {	/* build sort pointers */
		if((long)htabof(i) >= 0) {
			sorttab[codetabof(i)] = i;
		}
	}
	first = block_compress ? FIRST : 256;
	for(i = first; i < free_ent; i++) {
		fprintf(stderr, "%5d: \"", i);
		de_stack[--stack_top] = '\n';
		de_stack[--stack_top] = '"';
		stack_top = in_stack((htabof(sorttab[i])>>maxbits)&0xff, 
                                     stack_top);
		for(ent=htabof(sorttab[i]) & ((1<<maxbits)-1);
		    ent > 256;
		    ent=htabof(sorttab[ent]) & ((1<<maxbits)-1)) {
			stack_top = in_stack(htabof(sorttab[ent]) >> maxbits,
						stack_top);
		}
		stack_top = in_stack(ent, stack_top);
		fwrite( &de_stack[stack_top], 1, STACK_SIZE-stack_top, stderr);
	   	stack_top = STACK_SIZE;
	}
   } else if(!debug) {	/* decompressing */

       for ( i = 0; i < free_ent; i++ ) {
	   ent = i;
	   c = tab_suffixof(ent);
	   if ( isascii(c) && isprint(c) )
	       fprintf( stderr, "%5d: %5d/'%c'  \"",
			   ent, tab_prefixof(ent), c );
	   else
	       fprintf( stderr, "%5d: %5d/\\%03o \"",
			   ent, tab_prefixof(ent), c );
	   de_stack[--stack_top] = '\n';
	   de_stack[--stack_top] = '"';
	   for ( ; ent != NULL;
		   ent = (ent >= FIRST ? tab_prefixof(ent) : NULL) ) {
	       stack_top = in_stack(tab_suffixof(ent), stack_top);
	   }
	   fwrite( &de_stack[stack_top], 1, STACK_SIZE - stack_top, stderr );
	   stack_top = STACK_SIZE;
       }
    }
}

int
in_stack(c, stack_top)
	register c, stack_top;
{
	if ( (isascii(c) && isprint(c) && c != '\\') || c == ' ' ) {
	    de_stack[--stack_top] = c;
	} else {
	    switch( c ) {
	    case '\n': de_stack[--stack_top] = 'n'; break;
	    case '\t': de_stack[--stack_top] = 't'; break;
	    case '\b': de_stack[--stack_top] = 'b'; break;
	    case '\f': de_stack[--stack_top] = 'f'; break;
	    case '\r': de_stack[--stack_top] = 'r'; break;
	    case '\\': de_stack[--stack_top] = '\\'; break;
	    default:
	 	de_stack[--stack_top] = '0' + c % 8;
	 	de_stack[--stack_top] = '0' + (c / 8) % 8;
	 	de_stack[--stack_top] = '0' + c / 64;
	 	break;
	    }
	    de_stack[--stack_top] = '\\';
	}
	return stack_top;
}
#endif /* DEBUG */

writeerr()
{
    perror ( ofname );
    unlink ( ofname );
    exit ( 1 );
}

copystat(ifname, ofname)
char *ifname, *ofname;
{
    struct stat statbuf;
    int mode;
    time_t timep[2];

    fclose(stdout);
    if (stat(ifname, &statbuf)) {		/* Get stat on input file */
	perror(ifname);
	return;
    }
    if ((statbuf.st_mode & S_IFMT/*0170000*/) != S_IFREG/*0100000*/) {
	if(quiet)
	    	fprintf(stderr, "%s: ", ifname);
	fprintf(stderr, " -- not a regular file: unchanged");
	exit_stat = 1;
    } else if (statbuf.st_nlink > 1) {
	if(quiet)
	    	fprintf(stderr, "%s: ", ifname);
	fprintf(stderr, " -- has %d other links: unchanged",
		statbuf.st_nlink - 1);
	exit_stat = 1;
    } else if (exit_stat == 2 && (!force)) { /* No compression: rm file.Z */
	if(!quiet)
		fprintf(stderr, " -- file unchanged");
    } else {			/* ***** Successful Compression ***** */
	exit_stat = 0;
	mode = statbuf.st_mode & 07777;
	if (chmod(ofname, mode))		/* Copy modes */
	    perror(ofname);
	chown(ofname, statbuf.st_uid, statbuf.st_gid);	/* Copy ownership */
	timep[0] = statbuf.st_atime;
	timep[1] = statbuf.st_mtime;
	utime(ofname, timep);	/* Update last accessed and modified times */
	if (unlink(ifname))	/* Remove input file */
	    perror(ifname);
	if(!quiet)
		fprintf(stderr, " -- replaced with %s", ofname);
	return;		/* Successful return */
    }

    /* Unsuccessful return -- one of the tests failed */
    if (unlink(ofname))
	perror(ofname);
}
/*
 * This routine returns 1 if we are running in the foreground and stderr
 * is a tty.
 */
foreground()
{
	if(bgnd_flag) {	/* background? */
		return(0);
	} else {			/* foreground */
		if(isatty(2)) {		/* and stderr is a tty */
			return(1);
		} else {
			return(0);
		}
	}
}

onintr ( )
{
    unlink ( ofname );
    exit ( 1 );
}

oops ( )	/* wild pointer -- assume bad input */
{
    if ( do_decomp == 1 ) 
    	fprintf ( stderr, "uncompress: corrupt input\n" );
    unlink ( ofname );
    exit ( 1 );
}

cl_block ()		/* table clear for block compress */
{
    register long int rat;

    checkpoint = in_count + CHECK_GAP;
#ifdef DEBUG
	if ( debug ) {
    		fprintf ( stderr, "count: %ld, ratio: ", in_count );
     		prratio ( stderr, in_count, bytes_out );
		fprintf ( stderr, "\n");
	}
#endif /* DEBUG */

    if(in_count > 0x007fffff) {	/* shift will overflow */
	rat = bytes_out >> 8;
	if(rat == 0) {		/* Don't divide by zero */
	    rat = 0x7fffffff;
	} else {
	    rat = in_count / rat;
	}
    } else {
	rat = (in_count << 8) / bytes_out;	/* 8 fractional bits */
    }
    if ( rat > ratio ) {
	ratio = rat;
    } else {
	ratio = 0;
#ifdef DEBUG
	if(verbose)
		dump_tab();	/* dump string table */
#endif
 	cl_hash ( (count_int) hsize );
	free_ent = FIRST;
	clear_flg = 1;
	output ( (code_int) CLEAR );
#ifdef DEBUG
	if(debug)
    		fprintf ( stderr, "clear\n" );
#endif /* DEBUG */
    }
}

cl_hash(hsize)		/* reset code table */
	register count_int hsize;
{
#ifndef XENIX_16	/* Normal machine */
	register count_int *htab_p = htab+hsize;
#else
	register j;
	register long k = hsize;
	register count_int *htab_p;
#endif
	register long i;
	register long m1 = -1;

#ifdef XENIX_16
    for(j=0; j<=8 && k>=0; j++,k-=8192) {
	i = 8192;
	if(k < 8192) {
		i = k;
	}
	htab_p = &(htab[j][i]);
	i -= 16;
	if(i > 0) {
#else
	i = hsize - 16;
#endif
 	do {				/* might use Sys V memset(3) here */
		*(htab_p-16) = m1;
		*(htab_p-15) = m1;
		*(htab_p-14) = m1;
		*(htab_p-13) = m1;
		*(htab_p-12) = m1;
		*(htab_p-11) = m1;
		*(htab_p-10) = m1;
		*(htab_p-9) = m1;
		*(htab_p-8) = m1;
		*(htab_p-7) = m1;
		*(htab_p-6) = m1;
		*(htab_p-5) = m1;
		*(htab_p-4) = m1;
		*(htab_p-3) = m1;
		*(htab_p-2) = m1;
		*(htab_p-1) = m1;
		htab_p -= 16;
	} while ((i -= 16) >= 0);
#ifdef XENIX_16
	}
    }
#endif
    	for ( i += 16; i > 0; i-- )
		*--htab_p = m1;
}

prratio(stream, num, den)
FILE *stream;
long int num, den;
{
	register int q;			/* Doesn't need to be long */

	if(num > 214748L) {		/* 2147483647/10000 */
		q = num / (den / 10000L);
	} else {
		q = 10000L * num / den;		/* Long calculations, though */
	}
	if (q < 0) {
		putc('-', stream);
		q = -q;
	}
	fprintf(stream, "%d.%02d%%", q / 100, q % 100);
}

version()
{
	fprintf(stderr, "%s\n", rcs_ident);
	fprintf(stderr, "Options: ");
#ifdef vax
	fprintf(stderr, "vax, ");
#endif
#ifdef NO_UCHAR
	fprintf(stderr, "NO_UCHAR, ");
#endif
#ifdef SIGNED_COMPARE_SLOW
	fprintf(stderr, "SIGNED_COMPARE_SLOW, ");
#endif
#ifdef XENIX_16
	fprintf(stderr, "XENIX_16, ");
#endif
#ifdef COMPATIBLE
	fprintf(stderr, "COMPATIBLE, ");
#endif
#ifdef DEBUG
	fprintf(stderr, "DEBUG, ");
#endif
#ifdef BSD4_2
	fprintf(stderr, "BSD4_2, ");
#endif
	fprintf(stderr, "BITS = %d\n", BITS);
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; form.l -- screen forms handler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(declare
  (specials t)
  (macros t))

(eval-when (compile)
  (load 'utilities)
  (load 'constants)
  (load 'zone)
  (load 'look)
  (load 'font)
  (load 'text)
  (load 'text-edit))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						generic fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (field		; generic field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'generic-field)		; type = generic
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty property list
)

(defvar field-properties	; list of expected field properties
  '("field-properties"
    fill-ground		(solid pattern)		; should we draw when highlit?
    fill-colour		(x_colour x_pattern)	; what colour or pattern?
    empty-ground 	(solid pattern)		; should we draw when unlit?
    empty-colour	(x_colour x_pattern)	; what colour or pattern?
    border-colour	(x_colour) ; should we draw border (and what colour?)
   ))	; can use this as real plist for online documentation

(defun draw-field (f)		; draw field from scratch
  (apply (concat 'draw- (field-type f))	; construct draw function name
	 (ncons f)))				; then call it

(defun init-field (f)		; initialize a field
  (apply (concat 'init- (field-type f))	; construct init function name
	 (ncons f)))				; then call it

(defun resize-field (f box)		; resize a field
  (apply				; construct resize function name
    (concat 'resize- (field-type f))
    (list f box)))				; then call it

(defun toggle-field (f)		; toggle a field
  (apply (concat 'toggle- (field-type f)) ; construct toggle fcn name
	 (ncons f)))				; then call it

(defun check-field (f p)	; check if point is inside field excl.border
  (cond ((point-in-box-interior p (zone-box (field-zone f)))
	 (apply			; if so, construct check function name
	   (concat 'check- (field-type f))
	   (list f p)))		; then call it and return result
	(t nil)))		; otherwise return nil

(defun fill-field (f)		; fill the field interior, if defined
  (let ((b (get (field-properties f) 'fill-ground))	; check if has one
	(c (get (field-properties f) 'fill-colour)))
       (cond ((eq b 'solid)	; solid background
	      (cond (c (clear-zone-interior (field-zone f) c))
		    (t (clear-zone-interior (field-zone f) W-CONTRAST))))
	     ((eq b 'pattern)	; patterned background
	      (cond (c (pattern-zone-interior (field-zone f) c))
		    (t (pattern-zone-interior (field-zone f) W-PATTERN-1))))
       )))			; no background at all!

(defun empty-field (f)		; empty the field interior, if defined
  (let ((b (get (field-properties f) 'empty-ground)) ; check if has one
	(c (get (field-properties f) 'empty-colour)))
       (cond ((eq b 'solid)	; solid background
	      (cond (c (clear-zone-interior (field-zone f) c))
		    (t (clear-zone-interior (field-zone f) W-BACKGROUND))))
	     ((eq b 'pattern)	; patterned background
	      (cond (c (pattern-zone-interior (field-zone f) c))
		    (t (pattern-zone-interior (field-zone f) W-PATTERN-1))))
       )))			; no background at all!

(defun draw-field-background (f)	; just what it says
  (let ((b (get (field-properties f) 'empty-ground)) ; check if has one
	(c (get (field-properties f) 'empty-colour)))
       (cond ((eq b 'solid)	; solid background
	      (cond (c (clear-zone (field-zone f) c))
		    (t (clear-zone (field-zone f) W-BACKGROUND))))
	     ((eq b 'pattern)	; patterned background
	      (cond (c (pattern-zone (field-zone f) c))
		    (t (pattern-zone (field-zone f) W-PATTERN-1))))
       )))			; no background at all!

(defun draw-field-border (f)		; draw outline, if any
  (let ((c (get (field-properties f) 'border-colour)))
       (cond (c (draw-zone-outline (field-zone f) c)))
  ))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						aggregate fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (aggregate-field	; aggregate field = form
    (:displace t)
    (:list)
    (:conc-name))
  (type 'aggregate-field)		; type
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty property list
  subfields			; list of subfields
  selection			; which subfield was last hit
)
  
(defvar aggregate-field-properties
  `("aggregate-field-properties"
    = ,field-properties
   ))	; can use this as real plist for online documentation

(defun draw-aggregate-field (f)
  (draw-field-background f)			; clear background, if any
  (draw-field-border f)				; draw border, if any
  (mapc 'draw-field (aggregate-field-subfields f)) ; draw subfields
  (w-flush (window-w (zone-window (field-zone f)))) t) ; flush it out

(defun init-aggregate-field (f)
  (mapc 'init-field (aggregate-field-subfields f))
  (alter-aggregate-field f selection nil) t)

(defun resize-aggregate-field (f box)
  (alter-zone (field-zone f) box box))

(defun check-aggregate-field (f p)
  (do ((subfields (aggregate-field-subfields f)	; go through subfields
	 (cdr subfields))
       (gotcha))
      ((or (null subfields)				; stop when no more
	   (setq gotcha (check-field (car subfields) p))) ; or when one is hit
       (alter-aggregate-field f selection gotcha)	; remember which one
       gotcha)))					; also return it

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						remote fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A remote field is a field which activates another field when hit.
;;; Usually the remote field has some functional significance!

(defstruct
  (remote-field		; remote field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'remote-field)		; type = remote
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty plist
  (target)			; the actual target field
  (point)			; x,y coords to pretend to use
)

(defvar remote-field-properties
  `("remote-field-properties"
    = ,field-properties
   ))	; can use this as real plist for online documentation

(defun draw-remote-field (f) 't)	; nothing to draw

(defun init-remote-field (f) 't)	; nothing to initialize

(defun resize-remote-field (f box)
  (alter-zone (field-zone f) box box))

(defun check-remote-field (f p)
  (check-field
    (remote-field-target f)
    (remote-field-point f)))		; return result of checking target

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						button fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (button-field		; button field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'button-field)		; type = button
  (zone (make-zone))		; bounding zone
  (properties
    (list nil			; default properties
	  'fill-ground 'solid
	  'empty-ground 'solid
	  'border-colour W-CONTRAST
    ))
  (value nil)			; value
)

(defvar button-field-properties
  `("button-field-properties"
    = ,field-properties
   ))	; can use this as real plist for online documentation

(defun draw-button-field (f)
  (draw-field-border f)
  (cond ((button-field-value f)
	 (fill-field f))
	(t (empty-field f))))

(defun toggle-button-field (f)
  (alter-button-field f value (not (button-field-value f)))
  (clear-zone-interior (field-zone f) W-XOR))

(defun init-button-field (f)
  (alter-button-field f value nil))	; turn it off

(defun resize-button-field (f box)
  (alter-zone (field-zone f) box box))

(defun check-button-field (f p)
  (toggle-button-field f) f)	; if we get here it's a hit -> return self

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						radio-button fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Named for the buttons on radios in which only one is "in" at a time.

(defstruct
  (radio-button-field		; radio-button field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'radio-button-field)		; type = radio-button
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty plist
  (subfields nil)		; individual buttons
  (selection nil)		; which one last hit
)

(defvar radio-button-field-properties
  `("radio-button-field-properties"
    = ,aggregate-field-properties
   ))	; can use this as real plist for online documentation

(defun draw-radio-button-field (f)
  (draw-aggregate-field f))

(defun init-radio-button-field (f)
  (init-aggregate-field f))

(defun resize-radio-button-field (f box)
  (alter-zone (field-zone f) box box))

(defun check-radio-button-field (f p)
  (cond ((and (radio-button-field-selection f)	; if button previously sel'd
	      (button-field-value
		(radio-button-field-selection f))) ; and it has a value
	 (toggle-field				; turn it off
	   (radio-button-field-selection f))))
  (check-aggregate-field f p)			; check individual buttons
)		; this will turn back on if same one sel'd, and return it

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						text fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (text-field		; text field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'text-field)		; type = text
  (zone (make-zone))		; bounding zone
  (properties
    (list nil
	  'fill-ground 'solid
	  'empty-ground 'solid
	  'border-colour W-CONTRAST
	  'x-offset 5		; offset from left
    ))
  (value nil)
  (text '||)			; text of text
)

(defvar text-field-properties
  `("text-field-properties"
    x-offset (x_pixels)		; text offset from box ll, otherwise centred
    y-offset (x_pixels)		; text offset from box ll, otherwise centred
    + ,button-field-properties
   ))	; can use this as real plist for online documentation

(defun draw-text-field (f)
  (draw-button-field f)
  (w-flush (window-w (zone-window (field-zone f)))) ; guarantee text on top
  (draw-text (text-field-text f)))

(defun redraw-text-field (f)
  (empty-field f)
  (w-flush (window-w (zone-window (field-zone f)))) ; guarantee text on top
  (draw-text (text-field-text f)))

(defun init-text-field (f)	; position & position the text in the field
  (let ((s (text-field-text f))
	(x-offset (get (field-properties f) 'x-offset))	; x offset from ll
	(y-offset (get (field-properties f) 'y-offset))); y offset from ll
       (alter-text s
	 zone (make-zone			; ensure it has a zone
		window (zone-window (field-zone f))
		box (box-interior (zone-box (field-zone f)))))
       (format-text s)		; ensure text delta calculated
       (cond ((null x-offset)		; x-offset specified?
	      (setq x-offset		; nope! centre it left-right
		    (/ (- (x (box-size (zone-box (field-zone f))))
			  (x (text-delta s)))
		       2))))
       (cond ((null y-offset)		; y-offset specified?
	      (setq y-offset		; nope! centre it up-down
		    (/ (- (y (box-size (zone-box (field-zone f))))
			  (font-x-height (look-font (text-look s))))
		       2))))
       (alter-text s			; now position the text
	 offset (make-point x x-offset y y-offset))
       ))

(defun resize-text-field (f box)	; position the text in the field
  (alter-zone (field-zone f) box box)
  (init-text-field f))

(defun check-text-field (f p)
  (input-text-field f) f)	; if we get here it's a hit -> return self

(defun input-text-field (f)
  (alter-text (text-field-text f)
    text '|| nn 0 kr 0 kl 0 delta (make-point x 0 y 0))
  (draw-text-field f)
  (edit-text-field f (ll (zone-box (text-zone (text-field-text f))))))

(defun edit-text-field (f p)		; edit in middle of text field
  (edit-text (text-field-text f) p)	; edit the text
  (draw-field f))			; redraw


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						prompt fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (prompt-field		; prompt field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'prompt-field)		; type = prompt
  (zone (make-zone))		; bounding zone
  (properties
    (list nil 'x-offset 0))	; put it exactly where spec indicates.
  (value nil)
  (text '||)			; text of prompt
)

(defvar prompt-field-properties
  `("prompt-field-properties"
    = ,text-field-properties
   ))	; can use this as real plist for online documentation

(defun draw-prompt-field (f)
  (draw-text-field f))

(defun init-prompt-field (f)
  (init-text-field f))

(defun resize-prompt-field (f box)	; position the text in the field
  (resize-text-field f box))

(defun check-prompt-field (f p) f) ; just return self

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						text-button fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A text-button is a button tied to a text.
;;; When the button is pressed, the text is input from the keyboard.
;;; Zone could same as either the button (activation by button only)
;;; or include both button & text (should then be adjacent)

(defstruct
  (text-button-field		; text-button field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'text-button-field)		; type = text-button
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty plist
  (button)			; button subfield
  (text)			; text subfield
)

(defvar text-button-field-properties
  `("text-button-field-properties"
    = ,field-properties
   ))	; can use this as real plist for online documentation

(defun draw-text-button-field (f)
  (draw-field (text-button-field-button f))
  (draw-text-field (text-button-field-text f)))

(defun init-text-button-field (f)
  (init-field (text-button-field-button f))
  (init-text-field (text-button-field-text f)))

(defun resize-text-button-field (f box)
  (alter-zone (field-zone f) box box))

(defun toggle-text-button-field (f)	; toggle only the button part
  (cond ((button-field-value		; and only if non-nil
	   (text-button-field-button f))
	 (toggle-button-field (text-button-field-button f)))))

(defun check-text-button-field (f p)
  (cond ((check-field (text-button-field-button f) p)
	 (input-text-field			; input from scratch
	   (text-button-field-text f)))	; get the data
	(t (toggle-button-field			; must be pointing at text
	     (text-button-field-button f))	; toggle only the button part
	   (edit-text-field
	     (text-button-field-text f) p))	; edit the data
  )
  (toggle-button-field			; toggle button back
    (text-button-field-button f))
  (alter-button-field (text-button-field-button f)
    value nil)			; keep aggregate from toggling again
  f)					; return self

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						labelled button fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (labelled-button-field ; labelled button field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'labelled-button-field)	; type = labelled-button
  (zone (make-zone))		; bounding zone
  (properties
    (list nil
	  'fill-ground 'solid
	  'empty-ground 'solid
	  'border-colour W-CONTRAST
    ))
  (value nil)			; value
  (text '||)			; label text
)

(defvar labelled-button-field-properties
  `("labelled-button-field-properties"
    = ,text-field-properties
   ))	; can use this as real plist for online documentation

(defun draw-labelled-button-field (f)
  (draw-text-field f))

(defun init-labelled-button-field (f)
  (init-text-field f))

(defun resize-labelled-button-field (f box)
  (resize-text-field f box))

(defun check-labelled-button-field (f p)
  (toggle-button-field f) f)	; if we get here it's a hit -> return self

(defun toggle-labelled-button-field (f)
  (toggle-button-field f))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;						expanded-bitmap fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defstruct
  (expanded-bitmap-field	; expanded-bitmap field
    (:displace t)
    (:list)
    (:conc-name))
  (type 'expanded-bitmap-field)	; type = expanded-bitmap
  (zone (make-zone))		; bounding zone
  (properties (list nil))	; empty plist
  (subfields nil)		; individual bits
  (selection nil)		; which one last hit
  (nrows 1)
  (ncols 1)
)

(defvar expanded-bitmap-field-properties
  `("expanded-bitmap-field-properties"
    = ,aggregate-field-properties
   ))	; can use this as real plist for online documentation

(defun draw-expanded-bitmap-field (f)
  (draw-aggregate-field f))

(defun init-expanded-bitmap-field (f)
  (let ((s (divide-points			; calculate x,y dimensions
	     (box-size (zone-box (field-zone f)))
	     (make-point
	       x (expanded-bitmap-field-ncols f)
	       y (expanded-bitmap-field-nrows f)))))
       (do ((z (field-zone f))
	    (r nil)
	    (x (x (ll (zone-box (field-zone f)))))
	    (y (y (ll (zone-box (field-zone f))))
	       (+ y dy))
	    (dx (x s))
	    (dy (y s))
	    (nc (expanded-bitmap-field-nrows f))
	    (nr (expanded-bitmap-field-nrows f))
	    (j 0 (1+ j)))
	   ((= j nr) (alter-aggregate-field f subfields (nreverse r)) 't)
	   (do ((x x (+ x dx))
		(p)
		(i 0 (1+ i)))
	       ((= i nc))			; create a row of buttons
	       (setq p (make-point x x y y))
	       (setq r (xcons r (make-button-field zone (append z nil))))
	       (alter-zone (field-zone (car r))
		 box (make-box ll p ur (add-points p s)))
	   ))))

(defun resize-expanded-bitmap-field (f box)
  (alter-zone (field-zone f) box box)
  (let ((s (divide-points			; calculate x,y dimensions
	     (box-size box)
	     (make-point
	       x (expanded-bitmap-field-ncols f)
	       y (expanded-bitmap-field-nrows f)))))
       (do ((z (field-zone f))
	    (r (expanded-bitmap-field-subfields f))
	    (x (x (ll box)))
	    (y (y (ll box)) (+ y dy))
	    (dx (x s))
	    (dy (y s))
	    (nc (expanded-bitmap-field-nrows f))
	    (nr (expanded-bitmap-field-nrows f))
	    (j 0 (1+ j)))
	   ((= j nr) t)
	   (do ((x x (+ x dx))
		(p)
		(i 0 (1+ i)))
	       ((= i nc))			; create a row of buttons
	       (setq p (make-point x x y y))
	       (resize-button-field (car r)
		 (make-box ll p ur (add-points p s)))
	       (setq r (cdr r))
	   ))))

(defun check-expanded-bitmap-field (f p)
  (check-aggregate-field f p))	; if we get here it's a hit -> check subfields

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; utilities.l								;
;;;									;
;;; These macros and functions are thought to be generally useful.	;
;;;									;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;							Macros		;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(declare
  (macros t)		; keep macros around after compiling
  (localf pairify* pairifyq* split2* sublist*)
  (special compiled-with-help))

(defmacro copy-all-but-last (ls)	; copy all but last member of list
  `(let ((ls ,ls))
	(firstn (1- (length ls))
	  ls)))

(defmacro all-but-last (ls)		; destructive all-but-last
  `(let ((ls ,ls))
	(cond ((cdr ls)
	       (rplacd (nthcdr (- (length ls) 2) ls) nil)
	       ls))))

(def hex (macro (arglist)		; hex to integer conversion
		`(car (hex-to-int ',(cdr arglist)))))

;;; define properties on symbols for use by help routines

(defmacro def-usage (fun usage returns group)
  (cond (compiled-with-help	; flag controls help generation
	  `(progn (putprop ,fun ,usage 'fcn-usage)
		  (putprop ,fun ,returns 'fcn-returns)
		  (putprop ,fun (nconc ,group (ncons ,fun)) 'fcn-group)))))
(defvar compiled-with-help t)	; unless otherwise notified

;;; (letenv 'l_bind_plist g_expr1 ... g_exprn) -- pair-list form of "let"
;;; Lambda-binds pairs of "binding-objects" (see description of let,let*),
;;; at RUN TIME, then evaluates g_expr1 to g_exprn, returning g_exprn. eg:
;;; (apply 'letenv '(letenv '(a 1 b (+ c d))
;;;		      (e)(f g)))
;-> (eval (cons 'let (cons (pairify '(a 1 b (+ c d)))
;;;			   '((e) (f g)))))
;-> (let ((a 1) (b (+ c d)))
;;;	 (e) (f g))
(def letenv
  (macro (x)
    `(eval (cons 'let
	     (cons
	       (pairify ,(cadr x))	; plist of binding objects
	       ',(cddr x))))))		; exprs to be eval'ed

(def letenvq			; letenv, quoted binding objects
  (macro (x)
    `(eval (cons 'let
	     (cons
	       (pairifyq ,(cadr x))	; plist of binding objects
	       ',(cddr x))))))		; exprs to be eval'ed

(defmacro mergecar (L1 L2 cmpfn)	; merge, comparing by car's
  `(merge ,L1 ,L2 '(lambda (e1 e2)		; (like sortcar)
		     (funcall ,cmpfn (car e1) (car e2)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;							Functions	;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; (all-but-last l_items)	-- copy all but last list element

;(defun all-but-last (ls)
;  (cond ((cdr ls) (cons (car ls) (all-but-last (cdr ls))))))

;;; (alphap sx_char)
(defun alphap (char)			; is char alphabetic?
  (cond ((symbolp char)
	 (setq char (car (exploden char)))))
  (and (fixp char)
       (or (and (>& char #.(1- #/A))
		(<& char #.(1+ #/Z)))
	   (and (>& char #.(1- #/a))
		(<& char #.(1+ #/z))))))

;;; (alphanumericp sx_char)
(defun alphanumericp (char)		; is char alphabetic or numeric?
  (cond ((symbolp char)
	 (setq char (car (exploden char)))))
  (and (fixp char)
       (or (and (>& char #.(1- #/A))
		(<& char #.(1+ #/Z)))
	   (and (>& char #.(1- #/a))
		(<& char #.(1+ #/z)))
	   (and (>& char #.(1- #/0))
		(<& char #.(1+ #/9))))))

;;; (assqonc 'g_key 'g_val 'l_al)
;;; like   (cond ((assq key alist))
;;;		 (t (cadr (rplacd (last alist)
;;;			    (ncons (cons key val))))))
(defun assqonc (key val al)	; tack (key.val) on end if not found
  (do ((al al (cdr al)))
      ((or (eq key (caar al))
	   (and (null (cdr al))
		(rplacd al (setq al (ncons (cons key val))))))
       (car al))))

;;; (cartesian l_xset l_yset)
(defun cartesian (xset yset)		; cartesian product of elements
  (mapcan
    '(lambda (x)
       (mapcar
	 '(lambda (y) (cons x y))
	 yset))
    xset))

(defun concat-pairs (sb-list)	; concat neighbouring symbol pairs
  (do ((s1 (car sb-list) s2)
       (s2 (cadr sb-list) (car sbs-left))
       (sbs-left (cddr sb-list) (cdr sbs-left))
       (result nil (cons (concat s1 s2) result)))
      ((null s2) (nreverse result))))
;;; (detach l)
;;; Detaches (and throws away) first element of list (converse of attach)
;;; keeping the same initial list cell.
(defun detach (l)
  (cond (l (rplacd l (cddr (rplaca l (cadr l)))))))

;;; (distribute x_Q x_N)
;;; returns list of the form: (1 1 1 0 0 0 0 1 1) or (3 2 2 2 3)
;;; i.e. a list of length <N> containing quantity <Q> evenly distributed
;;; with the excess <Q mod N> surrounding a "core" of <Q div N>'s
;;; Useful (?) for padding spaces in line adjustment.
;(defun distribute (Q N)	; this one only does 1's and 0's
;  (cond ((signp le Q) (duplicate N 0))
;	((eq Q 1) (pad 0 N '(1)))
;	(t (cons 1 (nconc
;		     (distribute (- Q 2) (- N 2))
;		     '(1))))))

(defun distribute (Q N)		; distribute quantity Q among N elements
  (let ((tmp (Divide (abs Q) N)))
       (setq tmp (distribute0 (cadr tmp) N (car tmp) (1+ (car tmp))))
       (cond ((signp ge Q) tmp)
	     (t (mapcar 'minus tmp)))))

(defun distribute0 (Q N X X1)
  (cond ((signp le Q) (duplicate N X))
	((eq Q 1) (pad X N (ncons X1)))
	(t (cons X1 (nconc
			  (distribute0 (- Q 2) (- N 2) X X1)
			  (ncons X1))))))

;;; (duplicate x_n g_object)
;;; Returns list of n copies of object (nil if n <= 0)
(defun duplicate (n object)
  (do ((res nil (cons object res))
       (i n (1- i)))
      ((signp le i) res)))

(defun e0 (in out)		; simulate binary insertion procedure
  (let ((lin (length in))
	(lout (length out)))
       (cond ((> lin lout)
	      (e0
		(nthcdr lout in)
		(mapcan 'list out (firstn lout in))))
	     (t (nconc (mapcan 'list (firstn lin out) in)
		       (nthcdr lin out))))))

(defun e (files)		; determine file permutation for emacs insert
  (let ((i (e0 (cdr (iota (length files))) '(0)))
	(f (append files nil)))
       (mapc '(lambda (f-index f-name)
		(rplaca (nthcdr f-index f) f-name))
	     i files)
       f))

;;; (firstn x_n l_listarg)
(defun firstn (n l)		;  copy first <n> elements of list
  (do ((n n (1- n))
       (l l (cdr l))
       (r nil))
      ((not (plusp n)) (nreverse r))		; <nil> if n=0 or -ve
      (setq r (cons (car l) r))))

;;; (iota x_n)
;;; APL index generator (0,1,2,...,<n>-1)
(defun iota (n)
  (do ((i (1- n) (1- i))
       (res nil))
      ((minusp i) res)
      (setq res (cons i res))))

(defun hex-to-int (numlist)		; eg. (hex-to-int '(12b3 120 8b))
  (cond
    (numlist			; terminate recursion on null numlist
      (cons
	(apply '+
	       (maplist
		 '(lambda (digits)
		    (lsh
		      (get '(hex |0| 0 |1| 1 |2| 2 |3| 3
				 |4| 4 |5| 5 |6| 6 |7| 7
				 |8| 8 |9| 9  a 10  b 11
				  c 12  d 13  e 14  f 15)
			   (car digits))
		      (lsh (1- (length digits)) 2)))
		 (explodec (car numlist))))
	(hex-to-int (cdr numlist))))))  

;;; (lctouc g_expr)
;;; Returns s-expression formed by translating lower-case alphabetic
;;; characters in <expr> to their upper-case equivalents.
;;; Operates by imploding the translated characters, in the case of a
;;; symbol or string, or by recursively calling on members of a list.
;;; Other object types are returned unchanged.
(defun lctouc (expr)
    (cond
	((dtpr expr) (mapcar 'uctolc expr))
	((or (symbolp expr) (stringp expr))
	 (implode
	     (mapcar
		 '(lambda (ch)
		      (cond ((alphap ch)		; and-out lower-case bit
			     (boole 1 #.(1- (1- #/a)) ch)) (t ch)))
		 (exploden expr))))
	(t expr)))

;;; (log2 x_n)
(defun log2 (n)			; log base 2 (truncated)
  (do ((n (lsh n -1) (lsh n -1))
       (p 0 (1+ p)))
      ((zerop n) p)))

;;; (lowerp sx_char)
(defun lowerp (char)		; is char lower-case alphabetic?
  (cond ((symbolp char)
	 (setq char (car (exploden char)))))
  (and (fixp char)
       (or (and (> char #.(1- #/a))
		(< char #.(1+ #/z))))))

;;; (numericp sx_char)
;;; returns t if char is numeric, otherwise nil
(defun numericp (char)
  (cond ((symbolp char)(setq char (car (exploden char)))))
  (and (fixp char)
       (and (> char #.(1- #/0))
	    (< char #.(1+ #/9)))))

;;; (pad g_item x_n l_list)
;;; Returns <list> padded with copies of <item> to length <n>
(defun pad (item n list)
  (append list (duplicate (- n (length list)) item)))

;;; (pairify l_items)	; make a-list from alternating elements
(defun pairify (pl)
  (pairify* nil pl))
(defun pairify* (rs pl)		; tail-recursive local fun
  (cond (pl (pairify* (cons (list (car pl) (cadr pl)) rs)
		       (cddr pl)))
	(t (nreverse rs))))

;;; (pairifyq l_items)	; make a-list from alternating elements
(defun pairifyq (pl)	; with each second element quoted
  (pairifyq* nil pl))
(defun pairifyq* (rs pl)		; tail-recursive local fun
  (cond (pl (pairifyq* (cons (list (car pl) (kwote (cadr pl))) rs)
		       (cddr pl)))
	(t (nreverse rs))))

;;; (penultimate l_items)	; cdr down to next-to-last list element
(defun penultimate (ls)	
  (cond ((cddr ls) (penultimate (cdr ls)))
	(t ls)))

;;; (split2 l_L)
;;; Splits list <L> into two (new) second-level lists
(defun split2* (L tc1 tc2)
  (cond ((null L) (list (nreverse tc1) (nreverse tc2)))
	(t (split2* (cddr L)
	     (cons (car L) tc1)
	     (cons (cadr L) tc2)))))

(defun split2 (L)
  (split2* L nil nil))

;;; (sublist L IL)
;;; Splits list <L> (destructively) into (length IL) sub-lists.
;;; IL is a list of starting indices, base zero, should be unique positive
;;; fixnums in ascending order, and shouldn't exceed the length of L.
;;; Each resulting sublist <i> begins with (nthcdr (nth <i> IL) L)
(defun sublist (L IL)
  (sublist* 0 nil (cons nil L) IL))
(defun sublist* (I R L IL)		; tail-recursion function
  (cond ((and L IL)
	 (cond
	   ((<& I (car IL))
	    (sublist* (1+ I) R (cdr L) IL))
	   (t (sublist* (1+ I)
			(cons (cdr L) R)
			(prog1 (cdr L) (rplacd L nil))
			(cdr IL)))))
	(t (nreverse R))))

(defun try-fun (fun l-arg)	; try function on each arg until non-nil
  (cond ((funcall fun (car l-arg)))
	(l-arg (try-fun fun (cdr l-arg)))))

;;; (uctolc g_expr)
;;; Returns s-expression formed by translating upper-case alphabetic
;;; characters in <expr> to their lower-case equivalents.
;;; Operates by imploding the translated characters, in the case of a
;;; symbol or string, or by recursively calling on members of a list.
;;; Other object types are returned unchanged.
(defun uctolc (expr)
    (cond
	((dtpr expr) (mapcar 'uctolc expr))
	((or (symbolp expr) (stringp expr))
	 (implode
	     (mapcar
		 '(lambda (ch)
		      (cond ((alphap ch)		; or-in lower-case bit
			     (boole 7 #.(1- #/a) ch)) (t ch)))
		 (exploden expr))))
	(t expr)))

;;; (unique a l) -- Scan <l> for an element <e> "equal" to <a>.
;;; If found, return <e>. Otherwise nconc <a> onto <l>; return <a>.
(defun unique (a l)			; ensure unique in list
  (car
    (do ((cdr_ul l (cdr ul))
	 (ul l cdr_ul))
	((null cdr_ul) (rplacd ul (ncons a)))
	(cond ((equal a (car cdr_ul)) (return cdr_ul))))))

;;; (upperp sx_char)
(defun upperp (char)		; is char upper-case alphabetic?
  (cond ((symbolp char)
	 (setq char (car (exploden char)))))
  (and (fixp char)
       (or (and (> char #.(1- #/A))
		(< char #.(1+ #/Z))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; zone.l -- data structures and routines for concrete window zones
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; a "point" is a pair of integer x,y coordinates
;;; a "box" is a pair of points defining lower left and upper right corners
;;; a "position" is a point coupled with a window
;;; a "zone" is a box coupled with a window
;;; a "window" is a machine, integer window id and, for compatibility
;;;	with the toolbox, an integer toolbox window pointer
;;; a "machine" is a name coupled with the j-process-id's of resident servers
;;; The basic idea is to define a notion of a concrete position for a
;;; display object, that can be incorporated into the object data structure.
;;; Higher levels of software can use the objects without explicit reference
;;; to server processes, windows and machines.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(declare
  (specials t)			; global vars not local to this file
  (macros t))			; compile macros as well

(eval-when (compile)		; trust  to higher level for eval & load
  (load 'utilities)		; utility functions
  (load 'constants)		; common constants for window toolbox
;  (load 'shape)		; arbitrarily shaped screen areas
)

(defstruct
  (position		; a concrete display position
    (:displace t)
    (:list)
    (:conc-name))
  (window (make-window))	; concrete window
  (point (make-point))		; actual x, y coordinates
)

(defstruct
  (zone			; a concrete display zone
    (:displace t)
    (:list)
    (:conc-name))
  (window (make-window))	; concrete window
  (box (make-box))		; bounding box of zone
  (colour W-BACKGROUND)		; colour (for scrolling etc)
  shape
)

(defstruct
  (window		; concrete window
    (:displace t)
    (:list)
    (:conc-name))
  (id 0)			; integer window id
  (machine (make-machine))	; machine (workstation)
  (w 0)				; toolbox window structure pointer
)

(defstruct
  (machine		; machine (workstation)
    (:displace t)
    (:list)
    (:conc-name))
  (name	'unknown-machine)	; machine name
  (servers nil)			; plist of server processes living there
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; manipulation routines
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun add-points (p q)		; vector sum (x1+x2) (y1+y2)
  (make-point
    x (+ (x p) (x q))
    y (+ (y p) (y q))))

(defun subtract-points (p q)	; vector subtract (x1-x2) (y1-y2)
  (make-point
    x (- (x p) (x q))
    y (- (y p) (y q))))

(defun multiply-points (p q)	; vector multiply (x1*x2) (y1*y2)
  (make-point
    x (* (x p) (x q))
    y (* (y p) (y q))))

(defun divide-points (p q)	; vector division (x1-x2) (y1-y2)
  (make-point
    x (/ (x p) (x q))
    y (/ (y p) (y q))))

(defun move-point (p q)		; move point p to point q
  (alter-point p
    x (x q)
    y (y q))
  t)					; return true

(defun box-size (b)		; size of box = ur - ll
  (subtract-points (ur b) (ll b)))

(defun box-interior (b)		; return box just inside this box dimensions
  (make-box
    ll (add-points (ll b) '(1 1))
    ur (subtract-points (ur b) '(1 1))))

(defun move-box (b p)		; move box b to point p (lower-left)
  (let ((size (box-size b)))
       (alter-box b
	 ll p
	 ur (add-points p size))
       t))				; return true

(defun point-in-box (p b)	; is point p in box b? (including boundary)
  (and (>= (x p) (x (ll b)))
       (<= (x p) (x (ur b)))
       (>= (y p) (y (ll b)))
       (<= (y p) (y (ur b)))
  ))

(defun point-in-box-interior (p b) ; is point p in box b? (excluding boundary)
  (and (> (x p) (x (ll b)))
       (< (x p) (x (ur b)))
       (> (y p) (y (ll b)))
       (< (y p) (y (ur b)))
  ))

(defun init-window (w)		; fill in  "window" structure
  (let				; presuming window-w predefined
    ((m (j-machine-name (w-get-manager (window-w w)))))
    (alter-window w id (w-get-id (window-w w)))
    (cond ((not (window-machine w))
	   (alter-window w machine (make-machine name m)))
	  (t (alter-machine (window-machine w) name m)))
    (init-machine (window-machine w))	; also fill in machine structure
    t))				; return true

(defun init-machine (m)		; fill in "machine" structure
  (cond				; presuming machine-name predefined
    ((null (machine-servers m))		; if no plist, make new one
     (alter-machine m servers (ncons 'servers:))))
  (mapc '(lambda (pname)		; for each expected server name
	   (let
	     ((pid (j-search-machine-e jipc-error-code
		     (machine-name m)
		     pname)))		; try to find one on that machine
	     (cond ((j-same-process pid J-NO-PROCESS)
		    (putprop (machine-servers m) nil pname)) ; failed! use nil
		   (t (putprop (machine-servers m) pid pname))))) ; success!
	EXPECTED-WORKSTATION-SERVERS)	; global list of process names
  t)					; return true

(defvar EXPECTED-WORKSTATION-SERVERS	; global list of process names
  '(window_manager creator savemem
     text-composer))			; usually want at least these

(defun window-box (w)		; box fills entire window
  (let ((w-size (w-get-window-size (window-w w))))
       (make-box
	 ll (make-point x 0 y 0)
	 ur (make-point x (car w-size) y (cadr w-size)))
  ))

(defun clear-zone (z colour)	; clear zone (including boundaries)
  (let ((b (box-size (zone-box z))))
       (w-clear-rectangle (window-w (zone-window z))
	 (x (ll (zone-box z))) (y (ll (zone-box z)))
	 (1+ (x b)) (1+ (y b))
	 colour)))

(defun clear-zone-interior (z colour)	; clear zone (excluding boundaries)
  (let ((b (box-size (zone-box z))))
       (w-clear-rectangle (window-w (zone-window z))
	 (1+ (x (ll (zone-box z)))) (1+ (y (ll (zone-box z))))
	 (1- (x b)) (1- (y b))
	 colour)))

(defun pattern-zone (z pattern)	; pattern zone (including boundaries)
  (let ((b (zone-box z)))
       (w-pattern-rectangle (window-w (zone-window z))
	 (x (ll b)) (y (ll b))
	 (1+ (x (ur b))) (1+ (y (ur b))) pattern)
  ))

(defun pattern-zone-interior (z pattern) ; pattern zone (excluding boundaries)
  (let ((b (box-size (zone-box z))))
       (w-pattern-rectangle (window-w (zone-window z))
	 (1+ (x (ll (zone-box z)))) (1+ (y (ll (zone-box z))))
	 (1- (x b)) (1- (y b)) pattern)
  ))

(defun draw-zone-outline (z colour)	; draw zone boundaries
  (let* ((w (window-w (zone-window z)))
	 (b (zone-box z))
	 (ll (ll b))
	 (ur (ur b)))
	(w-draw-vector w (x ll) (y ll) (x ll) (y ur) colour)
	(w-draw-vector w (x ll) (y ur) (x ur) (y ur) colour)
	(w-draw-vector w (x ur) (y ur) (x ur) (y ll) colour)
	(w-draw-vector w (x ur) (y ll) (x ll) (y ll) colour)
  ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; font.l -- font manipulation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(eval-when (compile)
  (load 'utilities)
  (load 'constants))

(defvar -installed-fonts nil)	; list of installed fonts

(defstruct
  (font			; font structure
    (:displace t)
    (:list)
    (:conc-name))
  (name 'standard)
  (size 8)
  (body 8)
  (cap-height 7)
  (x-height 5)
  (fixed-width 5)
  (first 0)
  (last 127)
  glyph			; the actual characters
)

(defstruct
  (glyph			; glyph structure
    (:displace t)
    (:list)
    (:conc-name))
  code
  width
  (bytes (byte-block 32))	; the actual bitmap
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 				font manipulation routines
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun read-font (family size path)
  (let ((p (infile path))		; open file
	(x (new-vectori-long 2))
	(f nil))
       (setq f (make-font
		 name family
		 size (tyi p)
		 body (tyi p)
		 cap-height (tyi p)
		 x-height (tyi p)
		 fixed-width (tyi p)
		 first (prog1 (tyi p) (tyi p))
		 last (prog1 (tyi p) (tyi p))))
       (alter-font f glyph
	 (do ((i (font-first f) (1+ i))
	      (r (ncons nil))
	      (g))	   
	     ((> i (font-last f)) (car r))
	     (setq g (make-glyph code i))	; allocate char
	     (do ((j 0 (1+ j)))			; read bitmap
		 ((> j 31))
		 (vseti-byte (glyph-bytes g) j (tyi p)))
	     (alter-glyph g width (tyi p))	; read width
	     (setq r (tconc r g))
	 ))
       (close p)			; close file

       (rplacd				; install font
	 (cond ((assoc (list (font-name f) (font-size f)) -installed-fonts))
	       (t (car (setq -installed-fonts
			     (cons (ncons (list (font-name f) (font-size f)))
				   -installed-fonts)))))
	 f)
       f))				; return font

(def-usage 'read-font '(|'st_family| |'x_size| |'st_path|)
  'l_font-descriptor
  (setq fcn-group (ncons "Font Manipulation:")))

(defun install-font (f)
  (cdr
    (rplacd				; install font
      (cond ((assoc (list (font-name f) (font-size f)) -installed-fonts))
	    (t (car (setq -installed-fonts
			  (cons (ncons (list (font-name f) (font-size f)))
				-installed-fonts)))))
      f)))

(defun find-font (family size)	; always "finds" one even if dummy
  (cond ((cdr (assoc (list family size) -installed-fonts)))
	(t (install-font (make-font name family size size)))))

(def-usage 'find-font
  '(|'st_family| |'x_size|)
  'l_font-descriptor
  fcn-group)

(defun create-font (driver font)
  (j-send-se-list driver
    (list 'make-font
	  (font-name font)
	  (font-size font)
	  (font-body font)
	  (font-cap-height font)
	  (font-x-height font)
	  (font-fixed-width font)
	  (font-first font)
	  (font-last font))))

(defun download-glyph (driver font glyph)
  (j-put-items
    `((J-STRING set-glyph)
       (J-STRING ,(font-name font))
       (J-INT ,(font-size font))
       (J-INT ,(glyph-code glyph))
       (J-INT ,(glyph-width glyph))
       (J-BLOCK ,(glyph-bytes glyph))))
  (j-send driver))

(defun download-font (driver font)
  (do ((g (font-glyph font))
       (font-size (font-size font)))
      ((null g))
      (j-put-items
	`((J-STRING set-glyph)
	  (J-STRING ,(font-name font))
	  (J-INT ,font-size)))
      (do ((gg g (cdr gg)))
	  ((or (null gg) (j-put-items
			   `((J-INT ,(glyph-code (car gg)))
			     (J-INT ,(glyph-width (car gg)))
			     (J-BLOCK
			       ,(glyph-bytes (car gg))
			       ,(+ font-size font-size)))))
	   (setq g gg)))		; when buffer full, save remainder
      (j-send driver)
      (cond ((eq J-STRING (j-next-item-type))
	     (j-gets j-comm-string 128)		; skip past message string
	     (cond ((eq J-INT (j-next-item-type))(patom (j-geti))(terpr)))))
  ))

(def-usage 'download-font
  '(|'x_process-id| |'l_font-descriptor|)
  't
  fcn-group)

(defun read-create-download-font (driver family size path)
  (let ((f (read-font family size path)))
       (create-font driver f)
       (download-font driver f)
       f))

(def-usage 'read-create-download-font
  '(|'x_process-id| |'st_family| |'x_size| |'st_path|)
  'l_font-descriptor
  fcn-group)

(defun font-depth (f)
  (- (font-body f) (font-cap-height f)))

(defun font-height (f)
  (font-cap-height f))

(defun get-font-list (sc) ; arg is string-composer or font-server pid
  (j-send-se sc 'get-font-list)
  (pairify (mapcar
	     '(lambda (x)
		(cond ((stringp (cadr x)) (concat (cadr x)))
		      (t (cadr x))))
	     (j-get-items))))

(defun get-all-font-info (sc) ; arg is string-composer or font-server pid
  (mapc '(lambda (f)
	   (rplacd (apply 'find-font f)
	     (cdr (progn
		    (j-send-se-list sc (cons 'get-font-info f))
		    (mapcar 'cadr (j-get-items))))))
	(get-font-list sc)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; text.l -- fancy text strings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(declare
  (specials t)
  (macros t))

(eval-when (compile)
  (load 'utilities)
  (load 'constants)
  (load 'zone)
  (load 'font)
  (load 'look))

(defstruct
  (text		; text structure
    (:displace t)
    (:list)
    (:conc-name))
  (text '||)			; the text to draw
  (look (make-look))		; what style to draw it in
  (kl 0)			; (starting) left kerning mask
  (zone (make-zone))		; specific window, clipping box
  (offset (make-point))		; offset of start point from zone ll
  (kr 0)			; (final) right kerning mask
  (delta (make-point))		; change in (x,y) relative to start point
  (nn -1)			; char count
)

;;; NOTE: clipping box of ((0 0) (-1 -1)) uses window boundaries

(defun text-width (s)		; presumes non-rotated
  (x (text-delta s)))

(defun text-box (s)		; presumes non-rotated
  (make-box
    ll (subtract-points
	 (text-start-point s)
	 (make-point x 0 y (font-depth (look-font (text-look s)))))
    ur (add-points
	 (text-end-point s)
	 (make-point x 0 y (font-height (look-font (text-look s)))))))

(defun text-start-point (s)
  (add-points
    (ll (zone-box (text-zone s)))
    (text-offset s)))

(defun text-end-point (s)
  (add-points
    (text-start-point s)
    (text-delta s)))

(defun text-x (s)	; x coord of start of text object
  (+ (x (ll (zone-box (text-zone s))))
     (x (text-offset s))))

(defun text-y (s)	; y coord of start of text object
  (+ (y (ll (zone-box (text-zone s))))
     (y (text-offset s))))

(defun text-xx (s)	; x coord of end of text object
  (+ (x (ll (zone-box (text-zone s))))
     (x (text-offset s))
     (x (text-delta s))))

(defun text-yy (s)	; y coord of end of text object
  (+ (y (ll (zone-box (text-zone s))))
     (y (text-offset s))
     (y (text-delta s))))

(defun move-text (s p)	; move s to new x,y
  (alter-text s
    offset (subtract-points p (ll (zone-box (text-zone s))))))

(defun draw-text (s)		; quietly draw text, clipping to zone box
  (let (((x y) (text-start-point s))
	(l (text-look s)))
       (j-put-items
	 `((J-STRING compose)
	   (J-INT ,(window-id (zone-window (text-zone s))))
	   (J-STRING ,(text-text s))
	   (J-STRING ,(font-name (look-font l)))
	   (J-INT ,(font-size (look-font l)))
	   (J-INT ,(boole 7 (look-mode l) QUIET))
	   (J-INT ,(look-colour l))
	   (J-INT ,(look-gap l))
	   (J-INT ,(look-ul l))
	   (J-INT ,(text-kl s))
	   (J-INT ,x)
	   (J-INT ,y)
	   (J-INT ,(x (cond
			((zerop (boole 1 ROTATE-180 (look-mode l)))
			 (ur (zone-box (text-zone s))))
			(t (ll (zone-box (text-zone s)))))))
	   (J-INT ,(y (cond
			((zerop (boole 1 ROTATE-90 (look-mode l)))
			 (ur (zone-box (text-zone s))))
			(t (ll (zone-box (text-zone s)))))))
	   (J-INT ,(text-nn s))
	  ))
       (j-send (get (machine-servers
		      (window-machine
			(zone-window
			  (text-zone s))))
		    'text-composer))
  ))

(defun undraw-text (s)	; quietly undraw text, clipping to zone box
  (let (((x y) (text-start-point s))
	(l (text-look s)))
       (j-put-items
	 `((J-STRING compose)
	   (J-INT ,(window-id (zone-window (text-zone s))))
	   (J-STRING ,(text-text s))
	   (J-STRING ,(font-name (look-font l)))
	   (J-INT ,(font-size (look-font l)))
	   (J-INT ,(boole 7 OVERSTRIKE QUIET (look-mode l)))
	   (J-INT ,(inverse-colour (look-colour l)))
	   (J-INT ,(look-gap l))
	   (J-INT ,(look-ul l))
	   (J-INT ,(text-kl s))
	   (J-INT ,x)
	   (J-INT ,y)
	   (J-INT ,(x (cond
			((zerop (boole 1 ROTATE-180 (look-mode l)))
			 (ur (zone-box (text-zone s))))
			(t (ll (zone-box (text-zone s)))))))
	   (J-INT ,(y (cond
			((zerop (boole 1 ROTATE-90 (look-mode l)))
			 (ur (zone-box (text-zone s))))
			(t (ll (zone-box (text-zone s)))))))
	   (J-INT ,(text-nn s))
	  ))
       (j-send (get (machine-servers
		      (window-machine
			(zone-window
			  (text-zone s))))
		    'text-composer))
  ))

(defun format-text (s)	; format text without drawing or clipping
  (let ((memop (symbolp (text-text s)))	; can only memoize symbols
	(k) (p) (q) (l (text-look s)))
       (cond
	 (memop					; are we memoizing? yes!
	   (setq k (unique-look-id l))	; key based on look
	   (setq p (get (text-text s) k))		; alist found on plist
	   (setq q (assoc (text-kl s) p))))		; entry based on kl
       (cond
	 (q (alter-text s			; if info found
	      kr (cadr q)			; record result
	      delta (caddr q)			; then return
	      nn (cadddr q)))
	 (t					; otherwise compute data
	   (j-put-items
	     `((J-STRING compose)
	       (J-INT 0)			; no window needed
	       (J-STRING ,(text-text s))
	       (J-STRING ,(font-name (look-font l)))
	       (J-INT ,(font-size (look-font l)))
	       (J-INT ,(boole 7 NO-DRAW (look-mode l)))
	       (J-INT ,(look-colour l))
	       (J-INT ,(look-gap l))
	       (J-INT ,(look-ul l))
	       (J-INT ,(text-kl s))
	       (J-INT 0)			; starting point 0 0
	       (J-INT 0)
	       (J-INT -1)			; no clipping
	       (J-INT -1)
	       (J-INT -1)
	      ))
	   (j-send (get (machine-servers
			  (window-machine
			    (zone-window
			      (text-zone s))))
			'text-composer))
	   (let ((kr (j-geti))			; now record result
		 (xx (j-geti))
		 (yy (j-geti))
		 (nn (j-geti)))
		(alter-text s
		  kr kr
		  delta (make-point x xx y yy)
		  nn nn)
		(cond (memop				; memoize if req'd
			(cond (p (nconc p
				   (ncons (list (text-kl s) kr
						(text-delta s) nn))))
			      (t (putprop (text-text s)
				   (ncons (list (text-kl s) kr
						(text-delta s) nn))
				   k))))
		))
	 ))
       't))					; always return t

(defun scan-text (s p) ; scan text s for point p, return (kr delta nn)
  (let (((x y) (text-start-point s))		; inside: check text
	(l (text-look s)))
       (j-put-items
	 `((J-STRING compose)
	   (J-INT 0)
	   (J-STRING ,(text-text s))
	   (J-STRING ,(font-name (look-font l)))
	   (J-INT ,(font-size (look-font l)))
	   (J-INT ,(boole 7 NO-DRAW (look-mode l)))
	   (J-INT ,(look-colour l))
	   (J-INT ,(look-gap l))
	   (J-INT ,(look-ul l))
	   (J-INT ,(text-kl s))
	   (J-INT ,x)
	   (J-INT ,y)
	   (J-INT ,(x p))
	   (J-INT ,(y p))
	   (J-INT ,(text-nn s))
	  ))
       (j-send (get (machine-servers
		      (window-machine
			(zone-window
			  (text-zone s))))
		    'text-composer))
       (let ((kr (j-geti))			; now record result
	     (xx (j-geti))
	     (yy (j-geti))
	     (nn (j-geti)))
	    (list kr (make-point x (- xx x) y (- yy y)) nn))
  ))

(defun format-draw-text (s)		; draw it while formatting
  (let ((memop (symbolp (text-text s)))	; can only memoize symbols
	((x y) (text-start-point s))
	(k) (p) (q) (l (text-look s)))
       (cond
	 (memop					; are we memoizing? yes!
	   (setq k (unique-look-id l))	; key based on look
	   (setq p (get (text-text s) k))		; alist found on plist
	   (setq q (assoc (text-kl s) p))))		; entry based on kl
       (cond
	 (q (alter-text s			; if info found
	      kr (cadr q)			; record result
	      delta (caddr q)
	      nn (cadddr q))
	    (draw-text s))			; draw it & return
	 (t					; otherwise compute data
	   (j-put-items
	     `((J-STRING compose)
	       (J-INT ,(window-id (zone-window (text-zone s))))
	       (J-STRING ,(text-text s))
	       (J-STRING ,(font-name (look-font l )))
	       (J-INT ,(font-size (look-font l)))
	       (J-INT ,(boole 4 (look-mode l) QUIET))
	       (J-INT ,(look-colour l))
	       (J-INT ,(look-gap l))
	       (J-INT ,(look-ul l))
	       (J-INT ,(text-kl s))
	       (J-INT ,x)
	       (J-INT ,y)
	       (J-INT ,(x (cond
			    ((zerop (boole 1 ROTATE-180 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
	       (J-INT ,(y (cond
			    ((zerop (boole 1 ROTATE-90 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
	       (J-INT -1)			; format to end of text
	      ))
	   (j-send (get (machine-servers
			  (window-machine
			    (zone-window
			      (text-zone s))))
			'text-composer))
	   (let ((kr (j-geti))			; now alter result data
		 (xx (j-geti))
		 (yy (j-geti))
		 (nn (j-geti)))
		(cond ((neq nn (length (exploden (text-text s))))
		       (format-text s))	; actually clipped! reformat
		      (t (alter-text s
			   kr kr
			   delta (make-point x (- xx x) y (- yy y))
			   nn nn)
			 (cond
			   (memop		; memoize if req'd
			     (cond (p (nconc p
					(ncons (list (text-kl s) kr
						     (text-delta s) nn))))
				   (t (putprop (text-text s)
					(ncons (list (text-kl s) kr
						     (text-delta s) nn))
					k))))
			 ))
		))
	 ))
       't))					; always return t

(defun backspace-text (s n)	; undraw last n characters, remove from text
  (cond				; this presumes s has valid delta,kr,nn
    ((plusp (text-nn s))	; proceed only if length > 0
     (setq n (min n (text-nn s)))	; can't delete more than nn chars
     (let ((text (text-text s))
	   (l (text-look s)))
	  (alter-text s		; keep all but last n chars
	    text (substring text 1 (- (text-nn s) n))
	    nn (- (text-nn s) n))
	  (format-text s)		; reformat to find the new end
	  (j-put-items
	    `((J-STRING compose)	; now undraw last character
	      (J-INT ,(window-id (zone-window (text-zone s))))
	      (J-STRING ,(substring text (- n))) ; undraw last n chars
	      (J-STRING ,(font-name (look-font l)))
	      (J-INT ,(font-size (look-font l)))
	      (J-INT ,(boole 7 QUIET OVERSTRIKE (look-mode l)))
	      (J-INT ,(inverse-colour (look-colour l)))
	      (J-INT ,(look-gap l))
	      (J-INT ,(look-ul l))
	      (J-INT ,(text-kr s))
	      (J-INT ,(text-xx s))
	      (J-INT ,(text-yy s))
	      (J-INT ,(x (cond
			   ((zerop (boole 1 ROTATE-180 (look-mode l)))
			    (ur (zone-box (text-zone s))))
			   (t (ll (zone-box (text-zone s)))))))
	      (J-INT ,(y (cond
			   ((zerop (boole 1 ROTATE-90 (look-mode l)))
			    (ur (zone-box (text-zone s))))
			   (t (ll (zone-box (text-zone s)))))))
	      (J-INT ,n)
	     ))
	  (j-send (get (machine-servers
			 (window-machine
			   (zone-window
			     (text-zone s))))
		       'text-composer))
	  't))			; return t if able to do it; nil if nn <= 0
  ))

(defun append-text (s c)	; draw new char(s) & add to end of text
  (cond ((fixp c)		; this presumes s has valid delta,kr,nn
	 (setq c (ascii c))))
  (j-put-items
    `((J-STRING compose)	; draw new last character(s)
      (J-INT ,(window-id (zone-window (text-zone s))))
      (J-STRING ,c)
      (J-STRING ,(font-name (look-font (text-look s))))
      (J-INT ,(font-size (look-font (text-look s))))
      (J-INT ,(boole 4 (look-mode (text-look s)) QUIET))	; be noisy!
      (J-INT ,(look-colour (text-look s)))
      (J-INT ,(look-gap (text-look s)))
      (J-INT ,(look-ul (text-look s)))
      (J-INT ,(text-kr s))	; this presumes s has valid delta,kr,nn
      (J-INT ,(text-xx s))
      (J-INT ,(text-yy s))
	       (J-INT ,(x (cond
			    ((zerop (boole 1 ROTATE-180 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
	       (J-INT ,(y (cond
			    ((zerop (boole 1 ROTATE-90 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
      (J-INT -1)
     ))
  (j-send (get (machine-servers
		 (window-machine
		   (zone-window
		     (text-zone s))))
	       'text-composer))
  (let ((kr (j-geti))
	(xx (j-geti))
	(yy (j-geti))
	(nn (j-geti)))
       (alter-text s
	 text (concat (text-text s) c)
	 kr kr
	 delta (subtract-points
		 (make-point x xx y yy)
		 (text-start-point s))
	 nn (+ (text-nn s) nn)))
  't)

(defun append-text-scroll (s c colour) ; draw and add new char(s)
  (let ((w (window-id	;  while scrolling zone box b in specified colour
	     (zone-window (text-zone s))))
	(b (zone-box (text-zone s)))
	(l (text-look s)))
       (cond ((fixp c)
	      (setq c (ascii c)))) ; this presumes s has valid delta,kr,nn
       (j-put-items
	 `((J-STRING compose)	; format new last character
	   (J-INT ,w)
	   (J-STRING ,c)
	   (J-STRING ,(font-name (look-font l)))
	   (J-INT ,(font-size (look-font l)))
	   (J-INT ,(boole 7 NO-DRAW (look-mode l)))
	   (J-INT ,(look-colour l))
	   (J-INT ,(look-gap l))
	   (J-INT ,(look-ul l))
	   (J-INT ,(text-kr s)) ; this presumes s has valid delta,kr,nn
	   (J-INT 0)
	   (J-INT 0)
	   (J-INT -1)
	   (J-INT -1)
	   (J-INT -1)
	  ))
       (j-send (get (machine-servers
		      (window-machine
			(zone-window
			  (text-zone s))))
		    'text-composer))
       (let ((kr (j-geti))
	     (xx (j-geti))
	     (yy (j-geti))
	     (nn (j-geti)))
	    (apply
	      'w-scroll-rectangle
	      (nconc
		(ncons (window-w (zone-window (text-zone s))))
		(let ((direction (boole 1 ROTATION
					(look-mode l))))
		     (cond
		       ((= direction ROTATE-0)
			(list (text-xx s)
			      (y (ll b))
			      (- (x (ur b)) (text-xx s) -1)
			      (- (y (ur b)) (y (ll b)) -1)
			      WM-RIGHT xx))
		       ((= direction ROTATE-90)
			(list (x (ll b))
			      (text-yy s)
			      (- (x (ur b)) (x (ll b)) -1)
			      (- (y (ur b)) (text-yy s) -1)
			      WM-UP yy))
		       ((= direction ROTATE-180)
			(list (x (ll b))
			      (y (ll b))
			      (- (text-xx s) (x (ll b)) -1)
			      (- (y (ur b)) (y (ll b)) -1)
			      WM-LEFT (- xx)))
		       ((= direction ROTATE-270)
			(list (x (ll b))
			      (y (ll b))
			      (- (x (ur b)) (x (ll b)) -1)
			      (- (text-yy s) (y (ll b)) -1)
			      WM-DOWN (- yy)))
		     ))
		(ncons colour)))
	    (w-flush (window-w (zone-window (text-zone s))))
	    (j-put-items
	      `((J-STRING compose)	; draw new last character
		(J-INT ,w)
		(J-STRING ,c)
		(J-STRING ,(font-name (look-font l)))
		(J-INT ,(font-size (look-font l)))
		(J-INT ,(boole 7 (look-mode l) QUIET))
		(J-INT ,(look-colour l))
		(J-INT ,(look-gap l))
		(J-INT ,(look-ul l))
		(J-INT ,(text-kr s)) ; this presumes s has valid delta,kr,nn
		(J-INT ,(text-xx s))
		(J-INT ,(text-yy s))
	       (J-INT ,(x (cond
			    ((zerop (boole 1 ROTATE-180 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
	       (J-INT ,(y (cond
			    ((zerop (boole 1 ROTATE-90 (look-mode l)))
			     (ur (zone-box (text-zone s))))
			    (t (ll (zone-box (text-zone s)))))))
		(J-INT -1)
	       ))
	    (j-send (get (machine-servers
			   (window-machine
			     (zone-window
			       (text-zone s))))
			 'text-composer))
	    (alter-text s
	      text (concat (text-text s) c)
	      kr kr
	      delta (add-points
		      (make-point x xx y yy)
		      (text-delta s))
	      nn (+ (text-nn s) nn))
       )'t))

(defun format-text-list (sl)			; chain the text objects
  (do ((s (car sl) (car sl))			; so that xx,yy,kr of one
       (sl (cdr sl) (cdr sl)))			; used as x,y,kl of next
      ((null sl) (format-text s) 't)
      (format-text s)
      (alter-text (car sl)
	kl (text-kr s))
      (move-text (car sl) (text-end-point s))
  ))

(defun move-text-list (sl p)	; move whole list of text objects
  (do ((s (car sl) (car sl))
       (sl (cdr sl) (cdr sl))
       (p p (text-end-point s)))
      ((null s) 't)
      (move-text s p)
  ))

(defun compress-text-list (sl)		; combine like-moded text objects
  (do ((s (car sl) (car sl))			; to reduce communication
       (sl (cdr sl) (cdr sl))
       (new-text nil)
       (new-end-point (text-start-point s))
       (new-s (append (car sl) nil))	; top-level copy
       (dx nil)
       (gap (look-gap (text-look (car sl))))
       (result nil))
      ((null s) (alter-text new-s
		   text (apply 'concat (nreverse new-text))
		   nn -1)
       (nreverse (cons new-s result)))		; return new s-list
      (setq dx (- (x (text-start-point s))
		  (x new-end-point)))
      (cond ((and			; check most likely diffs first
	       (or (eq dx 0) (>= dx (look-gap (text-look s))))
	       (= (y (text-start-point s)) (y new-end-point))
	       (eq (text-look s)
		   (text-look new-s))
	     )				; presume kerning doesn't matter!
	     (cond ((plusp dx)		; horizontal movement
		    (setq new-text
			  (cons
			    (implode
			      (do ((dx (- dx gap 4) (- dx gap 4))
				   (result nil))
				  ((minusp dx)
				   (do ((dx (+ dx 4 -1) (- dx gap 1)))
				       ((minusp dx)
					(cond ((eq dx -1)
					       (setq result
						     (cons 1 result)))))
							; 0-pixel space
				       (setq result (cons 2 result)))
							; 1-pixel space
				   result)
				  (setq result (cons 3 result))
							; 4-pixel space
			      ))
			    new-text))))
	     (setq new-text (cons (text-text s) new-text))
	     (setq new-end-point (text-end-point s))
	    )
	    (t (alter-text new-s
		 text (apply 'concat (nreverse new-text))
		 nn -1
		 delta (subtract-points new-end-point
			 (text-start-point new-s)))
	       (setq result (cons new-s result))
	       (setq new-s (append s nil)
		     new-text (ncons (text-text s)))
	       (setq
		 new-end-point (text-start-point s)
		 gap (look-gap (text-look s)))
	    )
      )))

(defun draw-text-list (sl)
  (mapc '(lambda (x) (draw-text x)) sl) 't)

(defun undraw-text-list (sl)
  (mapc '(lambda (x) (undraw-text x)) sl) 't)

(defun format-draw-text-list (slist) ; format all on same line
  (do ((s (car slist) (car sl))
       (sl (cdr slist) (cdr sl)))
      ((null sl) (format-draw-text s))	; format the last one
      (format-draw-text s)
      (move-text (car sl)	; chain xx,yy,kr to next one's x,y,kl
	(text-end-point s))
  ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; text-edit.l -- rudimentary line editor for fancy character texts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; These routines provide a simple line editor with control keys reminiscent
;;; of the default EMACS key bindings.
;;;
;;; The calling program presumably has obtained a "point" event, at
;;; position "p".  The cursor will be placed on the nearest character,
;;; and then input is accepted from the keyboard, until such time as a
;;; <return> key is accepted, or a point event occurs outside the text
;;; zone boundary, or until a non-key, non-point event occurs.  Another
;;; point event within the text zone causes the cursor to be re-positioned.
;;;
;;; Editing operations currently supported are:
;;;	CTRL-A (ascii 1)	; control A = beginning of line
;;;	CTRL-B (ascii 2)	; control B = backward-character
;;;	CTRL-D (ascii 4)	; control D = delete next char
;;;	CTRL-E (ascii 5)	; control E = end of line
;;;	CTRL-F (ascii 6)	; control F = forward-character
;;;	BACKSPACE (ascii 8)	; BACKSPACE = delete previous char
;;;	CTRL-K (ascii 11)	; control K = kill to end of line
;;;	CTRL-L (ascii 12)	; control L = redraw text
;;;	RETURN (ascii 13)	; RETURN = "done"
;;;	CTRL-T (ascii 20)	; control T = transpose previous 2 chars
;;;	CTRL-Y (ascii 25)	; control Y = "yank" recently killed text

(declare
  (specials t)
  (macros t))

(eval-when (compile)
  (load 'utilities)
  (load 'constants)
  (load 'zone)
  (load 'font)
  (load 'look)
  (load 'text))


(eval-when (compile eval load)
  (defvar BACKSPACE (ascii 8))	; backspace char = delete previous char
  (defvar RETURN (ascii 13))	; carriage return = "done"
  (defvar CTRL-A (ascii 1))	; control A = beginning of line
  (defvar CTRL-B (ascii 2))	; control B = backward-character
  (defvar CTRL-D (ascii 4))	; control D = delete next char
  (defvar CTRL-E (ascii 5))	; control E = end of line
  (defvar CTRL-F (ascii 6))	; control F = forward-character
  (defvar CTRL-K (ascii 11))	; control K = kill to end of line
  (defvar CTRL-L (ascii 12))	; control L = redraw text
  (defvar CTRL-T (ascii 20))	; control T = transpose previous 2 chars
  (defvar CTRL-Y (ascii 25))	; control Y = "yank" recently killed text
  (defvar TYPEAHEAD-THRESHOLD 5); can type at most 5 chars -> forced feedback
)

(defun edit-text (s p)	; edit a text at point p
  (cond					; p outside zone => nil
    ((not (point-in-box p (zone-box (text-zone s)))) nil)
    (t					; p inside zone => edit text
      (let
	((w (window-w (zone-window (text-zone s))))
	 (post (append s nil))
	 (kill-text ""))
	(split-texts s post p)	; split into left and right parts
	(draw-cursor-leading-text post)	; highlight first char
	(skip-stroke-release-events w)
	(do ((e (w-get-next-event w)		; get an event
		(w-get-next-event w))		; then keep getting events
	     (l) (c))				; character list, character
	    ((eq c '#.RETURN)		; stop when <return> is received
	     (cond ((neq e WM-KEY)	; if not caused by key, put event back
		    (w-put-back-event w)))
	     (combine-texts s post)
	     t)			; just return 't
	    (cond			; main loop
	      ((eq e WM-KEY)
	       (setq c (concat (car (w-get-key w))))	; get the character
	       (cond
		 ((eq c '#.BACKSPACE)		; backspace char
		  (text-delete-previous-character s post))
		 ((eq c '#.CTRL-A)			; control A
		  (text-beginning-of-line s post))
		 ((eq c '#.CTRL-B)			; control B
		  (text-backward-character s post))
		 ((eq c '#.CTRL-D)			; control D
		  (text-delete-next-character s post))
		 ((eq c '#.CTRL-E)			; control E
		  (text-end-of-line s post))
		 ((eq c '#.CTRL-F)			; control F
		  (text-forward-character s post))
		 ((eq c '#.CTRL-K)			; control K
		  (text-kill-to-end-of-line s post))
		 ((eq c '#.CTRL-L)			; control L
		  (text-redraw-display s post))
		 ((eq c '#.CTRL-T)			; control T
		  (text-transpose-characters s post))
		 ((eq c '#.CTRL-Y)			; control Y
		  (text-yank-from-killbuffer s post))
		 ((neq c '#.RETURN)			; not <return>
		  (text-insert-character s post))
		 (t (w-put-back-event w))	; it's a <return>; put it back
	       ))			; so loop control can get it again
	      ((eq e WM-POINT-DEPRESSED)
	       (setq p (w-get-point w))
	       (cond				; check point in zone
		 ((point-in-box p (zone-box (text-zone s)))
		  (draw-cursor-leading-text post)	; un-highlight char
		  (combine-texts s post)
		  (split-texts s post p)
		  (draw-cursor-leading-text post)	; highlight new char
		  (skip-stroke-release-events w))
		 (t (w-put-back-event w)	; outside zone => return
		    (setq c '#.RETURN))))
	      ((neq e WM-CANCEL)		; an event we can't handle
	       (w-put-back-event w)		; so put it back, then return
	       (setq c '#.RETURN))
	    )))
    )))

(defun input-typeahead-keys (w n brk-fcn l)	; return keys typed ahead
   (cond					; brk-fcn tests text
     ((or (zerop n)				; already have max typeahead
	  (not (w-any-events w))) (nreverse l))	; or there aren't any events
     (t (let ((x (w-get-next-event w)))		; there's an event
	     (cond
	       ((neq x WM-KEY)
		(w-put-back-event w) (nreverse l))	; but not a keystroke
	       (t (setq x (car (w-get-key w)))		; it's a keystroke
		  (cond
		    ((funcall brk-fcn x)		; is it a break char?
		     (w-put-back-event w) (nreverse l))	; it's a special char
		    (t (input-typeahead-keys		; it's a regular char
			 w (1- n) brk-fcn (cons x l)))	; tail recur for rest
		  )))))))

(defun split-texts (s post p)		; split text s at point p
  (let					; yielding texts s and post
    (((kr delta nn) (scan-text s p)))	; scan for char pos'n
    (alter-text post			; text incl & after char pt'ed
      text (cond ((substring (text-text s) (1+ nn)))	; if it exists!
		 (""))			; otherwise,nothing
      offset (add-points (text-offset s) delta)
      kl kr
      delta (subtract-points (text-delta s) delta)
      nn (- (text-nn s) nn))
    (alter-text s kr kr delta delta nn nn	; truncate text
      text (cond ((substring (text-text s) 1 nn))
		 ("")))
  ))

(defun skip-stroke-release-events (w)
  (do ((e (w-get-next-event w)
	  (w-get-next-event w)))
      ((neq e WM-POINT-STROKE)		; get events until non-point-stroke
       (cond ((neq e WM-POINT-RELEASED)	; should be point-release
	      (w-put-back-event w))))	; if not, put it back
  ))

(defun combine-texts (s post)	; recombine texts
  (alter-text s
    text (concat (text-text s) (text-text post))
    nn (+ (text-nn s) (text-nn post))
    delta (add-points (text-delta s) (text-delta post))
    kr (text-kr post))
  (format-text s))

(defun draw-cursor-leading-text (s)	; highlight first char of text
  (let ((c (append s nil)))
       (alter-text c			; get first char
	 text (concat (cond ((substring (text-text c) 1 1))	; if any
			    (t 'a))))	; otherwise use a typical character
       (format-text c)
       (w-clear-rectangle
	 (window-w (zone-window (text-zone c)))
	 (text-x c)
	 (y (ll (zone-box (text-zone c))))
	 (min (x (text-delta c))
	      (- (x (ur (zone-box (text-zone c))))
		 (text-x c) -1))
	 (- (y (ur (zone-box (text-zone c))))
	    (y (ll (zone-box (text-zone c)))) -1)
	 W-XOR)
       (w-flush (window-w (zone-window (text-zone c))))
       t))

(defun text-delete-previous-character (s post)
  (let ((l (input-typeahead-keys w TYPEAHEAD-THRESHOLD
	     '(lambda (x)	; break on first non-BS
		(not (equal x #.(get_pname BACKSPACE))))
	     (ncons '#.BACKSPACE))))
       (alter-text s
	 nn (max 0 (- (text-nn s) (length l))))
       (alter-text s
	 text (cond ((substring
		       (text-text s)
		       1 (text-nn s)))
		    ("")))
       (format-text s)
       (w-scroll-rectangle
	 (window-w (zone-window (text-zone s)))
	 (text-xx s)
	 (y (ll (zone-box (text-zone s))))
	 (- (x (ur (zone-box (text-zone s))))
	    (text-xx s) 1)
	 (1+ (y (box-size (zone-box (text-zone s)))))
	 WM-LEFT
	 (- (x (text-start-point post))
	    (x (text-end-point s)))
	 (zone-colour (text-zone s)))
       (w-flush
	 (window-w (zone-window (text-zone s))))
       (move-text post (text-end-point s))
       (alter-text post kl (text-kr s))))

(defun text-beginning-of-line (s post)
  (draw-cursor-leading-text post)	; un-highlight first char
  (alter-text post
    text (concat (text-text s) (text-text post))
    nn (+  (text-nn s) (text-nn post))
    delta (add-points (text-delta s) (text-delta post))
    kl 0
    offset (text-offset s))
  (alter-text s text "" nn 0 delta '(0 0) kr 0)
  (draw-cursor-leading-text post))	; highlight new first char

(defun text-backward-character (s post)
  (let ((l (input-typeahead-keys w TYPEAHEAD-THRESHOLD
	     '(lambda (x)	; break on first non-BS
		(not (equal x #.(get_pname CTRL-B))))
	     (ncons '#.CTRL-B))))
       (draw-cursor-leading-text post)	; un-highlight first char
       (alter-text post
	 text (get_pname (concat (substring (text-text s) (- (length l)))
			   (text-text post)))
	 nn (1+ (text-nn post)))
       (alter-text s
	 text (substring (text-text s) 1 (- (text-nn s) (length l)))
	 nn (- (text-nn s) (length l)))
       (format-text s)
       (alter-text post
	 kl (text-kr s)
	 offset (add-points (text-offset s) (text-delta s))
	 delta (subtract-points
		 (text-end-point post)
		 (text-end-point s)))
       (draw-cursor-leading-text post)	; highlight new first char
  ))

(defun text-forward-character (s post)
  (let ((l (input-typeahead-keys w TYPEAHEAD-THRESHOLD
	     '(lambda (x)	; break on first non-BS
		(not (equal x #.(get_pname CTRL-F))))
	     (ncons '#.CTRL-F))))
       (draw-cursor-leading-text post)	; un-highlight first char
       (alter-text s
	 text (get_pname (concat (text-text s)
			   (substring (text-text post) 1 (length l))))
	 nn (+ (text-nn s) (length l)))
       (format-text s)
       (alter-text post
	 text (substring (text-text post) (1+ (length l)))
	 nn (- (text-nn post) (length l))
	 kl (text-kr s)
	 offset (add-points (text-offset s) (text-delta s))
	 delta (subtract-points
		 (text-end-point post)
		 (text-end-point s)))
       (draw-cursor-leading-text post)	; highlight new first char
  ))

(defun text-end-of-line (s post)
  (draw-cursor-leading-text post)	; un-highlight first char
  (alter-text s
    text (concat (text-text s) (text-text post))
    nn (+  (text-nn s) (text-nn post))
    delta (add-points (text-delta s) (text-delta post))
    kr (text-kr post))
  (alter-text post
    text ""
    nn 0
    offset (add-points (text-offset post) (text-delta post))
    delta '(0 0)
    kl (text-kr s))
  (draw-cursor-leading-text post))	; highlight new first char
  
(defun text-kill-to-end-of-line (s post)
  (w-clear-rectangle
    (window-w (zone-window (text-zone post)))
    (text-x post)
    (y (ll (zone-box (text-zone post))))
    (- (x (ur (zone-box (text-zone post)))) (text-x post))
    (1+ (y (box-size (zone-box (text-zone post)))))
    (zone-colour (text-zone post)))
  (setq kill-text (text-text post))
  (alter-text post
    text ""
    nn 0
    delta '(0 0)
    kl (text-kr s))
  (draw-cursor-leading-text post))	; highlight new first char
  
(defun text-yank-from-killbuffer (s post)
  (append-text-scroll s kill-text
    (zone-colour (text-zone s)))
  (move-text post (text-end-point s))
  (alter-text post
    kl (text-kr s)))

(defun text-transpose-characters (s post)
  (let ((tmp (append s nil)))
       (alter-text tmp
	 nn (- (text-nn tmp) 2))
       (let (((kr delta nn) (scan-text tmp '(-1 -1)))) ; find 2nd prev char
	    (alter-text tmp
	      text (substring (text-text tmp) -2)
	      offset (add-points (text-offset tmp) delta)
	      kl kr)
	    (format-text tmp)
	    (w-clear-rectangle
	      (window-w (zone-window (text-zone tmp)))
	      (text-x tmp)
	      (y (ll (zone-box (text-zone tmp))))
	      (x (text-delta tmp))
	      (1+ (y (box-size (zone-box (text-zone tmp)))))
	      (zone-colour (text-zone tmp)))
	    (w-flush (window-w (zone-window (text-zone tmp))))
	    (alter-text tmp
	      text (get_pname (concat
				(substring (text-text tmp) 2 1)
				(substring (text-text tmp) 1 1))))
	    (format-draw-text tmp)
	    (alter-text s
	      text (get_pname
		     (concat
		       (substring (text-text s) 1 (- (text-nn s) 2))
		       (text-text tmp)))
	      kr (text-kr tmp))
       )))

(defun text-delete-next-character (s post)
  (let ((l (input-typeahead-keys w TYPEAHEAD-THRESHOLD
	     '(lambda (x)	; break on first non-BS
		(not (equal x #.(get_pname CTRL-D))))
	     (ncons '#.CTRL-D))))
       (alter-text post
	 nn (length l))
       (let (((kl delta nn)		; scan for nn'th char position
	      (scan-text post '(-1 -1))))
	    (w-scroll-rectangle
	      (window-w (zone-window (text-zone post)))
	      (text-x post)
	      (y (ll (zone-box (text-zone post))))
	      (- (x (ur (zone-box (text-zone post))))
		 (text-x post) 1)
	      (1+ (y (box-size (zone-box (text-zone post)))))
	      WM-LEFT
	      (x delta)
	      (zone-colour (text-zone post)))
	    (alter-text post
	      nn (max 0 (- (length (exploden (text-text post)))
			   (length l)))
	      kl kl)
	    (alter-text post
	      text (cond ((substring
			    (text-text post)
			    (- (text-nn post))))
			 ("")))
	    (format-text post)
	    (draw-cursor-leading-text post)
	    (w-flush (window-w (zone-window (text-zone post))))
       )))

(defun text-insert-character (s post)
  (let ((l (input-typeahead-keys w TYPEAHEAD-THRESHOLD
	     '(lambda (x)	; break on first BS or CR
		(memq (concat x) '#.(list BACKSPACE RETURN)))
	     (ncons c))))
       (append-text-scroll s (concatl l)
	 (zone-colour (text-zone s)))
       (move-text post (text-end-point s))
       (alter-text post
	 kl (text-kr s))))

(defun text-redraw-display (s post)
  (clear-zone (text-zone s) (zone-colour (text-zone s)))
  (w-flush (window-w (zone-window (text-zone post))))
  (format-draw-text s)
  (alter-text post
    kl (text-kr s)
    offset (add-points (text-offset s) (text-delta s)))
  (format-draw-text post)
  (draw-cursor-leading-text post))
program interval(input,output);
{dataflow simulator for real interval arithmetic}

const
	IMem = 500; {number of instructions}
	DMem = 200;  {number of interval variables allowed}
	Par = 3;   {max number of paramters for an operator}
	Maxexp = 10; Minexp = -9;
	Maxinf =10000; Mininf =-10000; {Tied to values of Minman and Maxman}
	Maxman = 9999; Minman = -9999; {cannot exceed sqrt(maxint)}
	Splitman = 1000; {Smallest normalized mantisa}
	Digits = 4; {number of digits in mantissa}

type
	Positive= 0..maxint;
	State  = -1..99;  {Used for holding state of operator -1:done}
	OpType = (print,pr,tr,soln,readr,halve,halves,linh,mult,add,intgr,
less,leq,noteq,sqrr,minr,maxr,modu,absr,trig,expr,lb,ub,copy,stop); {!!}
	Ptr    = 1..DMem;
	Loc    = 1..IMem;
	Loc0   = 0..IMem;
	EdgeT  = (hout,lin,hin,lout); {Warning this order is important in}
				      {predicates such as gtS,geS}
	CardT  = (finite,infinite);
	ExpT   = Minexp..Maxexp;
	ManT   = Mininf..Maxinf; 
	Pflag  = (PNull,PSoln,PTrace,PPrint);
	Sreal  = record
		    edge:EdgeT;
		    cardinality:CardT;
		    exp:ExpT; {exponent}
		    mantissa:ManT;
		 end;
	Int    = record
		    hi:Sreal;
		    lo:Sreal;
	 end;
	Instr  = record
		    Code:OpType;
		    Pars: array[0..Par] of 0..DMem;
		 end;
	DataMem= record
		    D        :array [Ptr] of Int;
		    S        :array [Loc] of State;
		    LastHalve:Loc;
		    RHalve   :array [Loc] of real;
		 end;
	DataFlags=record
		    PF	     :array [Ptr] of Pflag;
		 end;
var
	Debug  : (none,activity,post,trace,dump);
	Cut    : (once,all);
	GlobalEnd,Verifiable:boolean;
	HalveThreshold:real;
	I      : array [Loc] of Instr; {Memory holding instructions}
	End    : Loc; {last instruction in I}
	ParN   : array [OpType] of -1..Par; {number of parameters for each 
			opcode. -1 means no result}
        ParIntersect : array [OpType] of boolean ;
	DInit  : DataMem; {initial memory which is cleared and 
				used in first call}
	DF     : DataFlags; {hold flags for variables, e.g. print/trace}
	MaxDMem:0..DMem;
	Shift  : array[0..Digits] of 1..maxint;{array of constant multipliers}
						{used for alignment etc.}
	Dummy  :Positive;
	{constant intervals and Sreals}
	PlusInfS,MinusInfS,PlusSmallS,MinusSmallS,ZeroS,
	PlusFiniteS,MinusFiniteS:Sreal;
	Zero,All,AllFinite:Int;

procedure deblank;
var Ch:char;
begin
   while (not eof) and (input^ in [' ','	']) do read(Ch);
end;

procedure InitialOptions;

#include '/user/profs/cleary/bin/options.i';

   procedure Option;
   begin
      case Opt of
      'a','A':Debug:=activity;
      'd','D':Debug:=dump;
      'h','H':HalveThreshold:=StringNum/100;
      'n','N':Debug:=none;
      'p','P':Debug:=post;
      't','T':Debug:=trace;
      'v','V':Verifiable:=true;
      end;
   end;

begin
   Debug:=trace;
   Verifiable:=false;
   HalveThreshold:=67/100;
   Options;
   writeln(Debug);
   writeln('Verifiable:',Verifiable);
   writeln('Halve threshold',HalveThreshold);
end;{InitialOptions}

procedure NormalizeUp(E,M:integer;var S:Sreal;var Closed:boolean);
begin
with S do
begin
   if M=0 then S:=ZeroS else
   if M>0 then
   begin
      while M>=Maxinf do
      begin 
	 if M mod 10 > 0 then begin Closed:=false;M:=(M div 10)+1 end
	 else M:=M div 10;
	 E:=E+1;
      end;
	 
      while M < Maxinf div 10 do
      begin M:=M*10; E:=E-1; 
      end;

      if E > Maxexp then {overflow-set to infinity}
      begin 
	 S:=PlusInfS;
	 Closed:=false;
      end else
      if E < Minexp then {underflow-set to smallest positive value}
      begin 
         S:=PlusSmallS;
         Closed:=false;
      end else
      begin cardinality:=finite;exp:=E;mantissa:=M;
      end;
   end else	 
   if M < 0 then
   begin
      while M <= Mininf do
      begin 
	 if M mod 10 < 0 then Closed:=false else
	 if M mod 10 > 0 then halt;
	 M:=M div 10;
	 E:=E+1;
      end;
	 
      while M > (Mininf div 10) do
      begin M:=M*10; E:=E-1; 
      end;

      if E > Maxexp then {overflow-set to most negative value}
      begin 
         S:=MinusFiniteS;
         Closed:=false;
      end 
      else
      if E < Minexp then {underflow-set to zero}
      begin
         S:=ZeroS;
         Closed:=false;
      end else
      begin
         cardinality:=finite;exp:=E;mantissa:=M;
      end;
   end;
end;
end;{NormalizeUp}

procedure NormalizeDn(E,M:integer;var S:Sreal;var Closed:boolean);
begin
with S do
begin
   if M=0 then S:=ZeroS else
   if M>0 then
   begin
      while M >= Maxinf do
      begin 
	 if M mod 10 > 0 then Closed:=false else
	 if M mod 10 < 0 then halt;
	 M:=M div 10;
	 E:=E+1;
      end;
	 
      while (M < Maxinf div 10) do
      begin M:=M*10; E:=E-1; 
      end;

      if E > Maxexp then {overflow-set to largest positive value}
      begin 
	 S:=PlusFiniteS;
	 Closed:=false;
      end else
      if E < Minexp then {underflow-set to zero}
      begin S:=ZeroS; Closed:=false;
      end else
      begin cardinality:=finite;exp:=E;mantissa:=M;
      end;
   end else	 
   if M < 0 then
   begin
      while M <= Mininf do
      begin 
	 if M mod 10 < 0 then 
	 begin Closed:=false; M:=M div 10 -1;end
	 else 
	 if M mod 10 = 0 then M:=M div 10 
	 else halt;
	 E:=E+1;
      end;
	 
      while (M>Mininf div 10) do
      begin M:=M*10; E:=E-1; 
      end;

      if E > Maxexp then {overflow}
      begin 
         S:=MinusInfS;
         Closed:=false;
      end 
      else
      if E < Minexp then {underflow}
      begin S:=MinusSmallS; Closed:=false;
      end else
      begin
         cardinality:=finite;exp:=E;mantissa:=M;
      end;
   end;
end;
end;{NormalizeDn}

procedure WriteS(X:Sreal);
var E,M:integer;
begin
with X do
begin
   case edge of
   lin: write('[');
   lout: write('(');
   hin,hout:
   end;
   
   case cardinality of
   infinite: write('inf':Digits+4); 
   finite: 
      if mantissa = 0 then write(0:Digits+1,' ':3)
      else begin
         M:=mantissa;
	 E:=exp; 
         while (M mod 10 = 0) do
	 begin M:=M div 10; E:=E+1;
	 end;
         write(M:Digits+1,'e',E-Digits:2);
      end;
   end;
   
   case edge of 
   hin: write(']');
   hout:write(')');
   lin,lout:
   end;
end;
end;{WriteS}

procedure WriteInt(I:Int);
begin
   with I do begin WriteS(lo); write(','); WriteS(hi); end;
end;{WriteInt}
   
procedure DumpS(X:Sreal);
begin
with X do
   write(edge:4,cardinality:9,mantissa:7,exp:3);
end;{DumpS}

procedure DumpInt(I:Int);
begin
   with I do begin DumpS(lo); write(' || '); DumpS(hi); end;
end;{DumpInt}
   
procedure ReadInt(var I:Int);

var   Ch:char;
      Cll,Clu:boolean;
	
   procedure ReadSUp(var X:Sreal; var Closed:boolean);
   var E,M:integer;
   begin
      with X do
      begin
         deblank;
         case input^ of
         '~':begin X:=PlusInfS;read(Ch);
	     end;
         '-','+','0','1','2','3','4','5','6','7','8','9':
	 begin
	    cardinality:=finite;
   	    read(M);
	    read(E); E:=E+Digits;
	    NormalizeUp(E,M,X,Closed);
	 end;
	 end;{case}
      end;
   end;{ReadSUp}

   procedure ReadSDn(var X:Sreal; var Closed:boolean);
   var E,M:integer;
       Ch:char;
   begin
      with X do
      begin
         deblank;
         case input^ of
         '~':begin X:=MinusInfS;read(Ch);
	     end;
         '-','+','0','1','2','3','4','5','6','7','8','9':
	 begin
	    cardinality:=finite;
   	    read(M);
	    read(E); E:=E+Digits;
	    NormalizeDn(E,M,X,Closed);
	 end;
	 end;{case}
      end;
   end;{ReadSDn}
begin{ReadInt}
   with I do 
   begin 
      deblank; read(Ch); 
      case Ch of
      '[':Cll:=true;
      '(':Cll:=false;
      end;
      ReadSDn(lo,Cll);if Cll then lo.edge:=lin else lo.edge:=lout;
      deblank;
      read(Ch); assert(Ch=',');
      Clu:=true;
      ReadSUp(hi,Clu);
      deblank;
      read(Ch);
      case Ch of
      ']':if Clu then hi.edge:=hin else hi.edge:=hout;
      ')':hi.edge:=hout;
      end;
   end;
end;{ReadInt}
   
procedure DumpTables;
var tL:Loc; tPar:0..Par; tOp:OpType;
begin
	for tOp := print to stop do
	   writeln(tOp:6,ParN[tOp]:2);
	writeln;

	for tL := 1 to End do
	with I[tL] do
	begin
	   write(Code:5);
	   for tPar := 0 to Par do
	      if Pars[tPar] <> 0 then write(Pars[tPar]:4);
	   writeln;
	end;
	writeln('number of memory locations used:',MaxDMem:0);
	writeln;
end;{DumpTables}
	
procedure AlignUp
   (E0:ExpT;M0:ManT;E1:ExpT;M1:ManT;var E,N0,N1:integer;var Closed:boolean);
{Align mantissas M0,M1 preserving accuracy and rounding up wherever possible}
{common resulting exponents in E, and mantissas in N0,N1}
var D:Positive;
begin
   if M0=0 then begin E:=E1;N0:=0;N1:=M1;end else
   if M1=0 then begin E:=E0;N0:=M0;N1:=0;end else
   if E0=E1 then
   begin E:=E0; N0:=M0; N1:=M1;
   end else
   if (E0>E1) then AlignUp(E1,M1,E0,M0,E,N1,N0,Closed) else
   begin
      D:=E1-E0;
      if D>= 2*Digits then
      begin 
         N1:=M1*Maxinf; E:=E1-Digits;
	 if M0<0 then N0:=0 else N0:=1;
	 Closed:=false;
      end else
      if D > Digits then
      begin 
         N1:=M1*Maxinf; E:=E1-Digits; 
	 if (M0 mod Shift[D-Digits]) = 0 
	 then N0:=(M0 div Shift[D-Digits])
	 else
	    if M0 > 0 then N0:=(M0 div Shift[D-Digits])+1
	              else N0:=(M0 div Shift[D-Digits]);
      end else
      {Digits>=D>=0}
      begin N1:=M1*Shift[D]; E:=E1-D; N0:=M0;
      end;
   end;
end;{AlignUp}

function gtS(X,Y:Sreal):boolean;
{X>Y  careful need to be able to compare x] and (x etc.}
var gt:boolean;
begin
   if (X.exp=Y.exp)and(X.mantissa=Y.mantissa) then gt:=X.edge>Y.edge else
   if X.exp = Y.exp then gt:= (X.mantissa > Y.mantissa) else
   if X.mantissa = 0 then gt:= 0 > Y.mantissa else
   if Y.mantissa = 0 then gt:= X.mantissa > 0 else
   if (X.mantissa>0) and (Y.mantissa>0) then gt:= (X.exp > Y.exp) else
   if (X.mantissa>0) and (Y.mantissa<0) then gt:= true else
   if (X.mantissa<0) and (Y.mantissa>0) then gt:= false else
   if (X.mantissa<0) and (Y.mantissa<0) then gt:= (X.exp < Y.exp) 
   else  writeln('error in gtS');
   
   gtS:=gt;
end;{gtS}
   
function geS(X,Y:Sreal):boolean;
{X>=Y  careful need to be able to compare x] and (x etc.}
begin
   if (X.exp=Y.exp)and(X.mantissa=Y.mantissa) then geS:=X.edge>=Y.edge else
   if X.exp = Y.exp then geS:= (X.mantissa >= Y.mantissa) else
   if X.mantissa = 0 then geS:= 0 >= Y.mantissa else
   if Y.mantissa = 0 then geS:= X.mantissa >= 0 else
   if (X.mantissa>0) and (Y.mantissa>0) then geS:= (X.exp > Y.exp) else
   if (X.mantissa>0) and (Y.mantissa<0) then geS:= true else
   if (X.mantissa<0) and (Y.mantissa>0) then geS:= false else
   if (X.mantissa<0) and (Y.mantissa<0) then geS:= (X.exp < Y.exp) 
   else  writeln('error in geS');
end;{geS}
   
function Point(X:Int):boolean;
{X=[x,x]}
begin
with X do
   Point:=(lo.edge=lin)and (hi.edge=hin) and 
	  (lo.mantissa=hi.mantissa) and
	  (lo.exp=hi.exp);
end;{Point}

procedure maxS(X,Y:Sreal;var max:Sreal);
begin
	if gtS(X,Y) then max:=X else max:=Y;
end;

procedure minS(X,Y:Sreal;var min:Sreal);
begin
	if gtS(X,Y) then min:=Y else min:=X;
end;

procedure Inter(P,Q:Int;var R:Int);
begin
   minS(P.hi,Q.hi,R.hi);
   maxS(P.lo,Q.lo,R.lo);
end;

function CheckHi(X:Sreal):boolean;
var OK:boolean;
begin
   OK:=true;
   with X do
   begin
      case cardinality of
      infinite:
         if (exp=Maxexp)and(mantissa=Maxinf) then
	 else writeln('**Invalid hi infinity');
      finite:
      begin
         if (mantissa=Maxinf) or (mantissa=Mininf) then
	 begin OK:=false; writeln('**Invalid finite value - hi');
	 end;
	 
         if mantissa = 0 then
	    if (exp=0) then 
	    else 
	    begin OK:=false; writeln('**Invalid zero - hi')
	    end
	 else
	 begin
	    if (mantissa > 0) then
	       if mantissa >= (Maxinf div 10) then {OK}
	       else 
	       begin OK:=false; writeln('**Incorrect normalization - hi') 
	       end
	    else{mantissa<0}
	       if mantissa > (Mininf div 10) then
	       begin OK:=false; writeln('**Incorrect normalization - hi') 
	       end;
	 end;
      end;
      end;{case}

      if not (edge in [hin,hout]) then
      begin
         OK:=false;
	 writeln('**hi edge value incorrect');
      end;
   end;
   
   CheckHi:=OK;
end;{CheckHi}
  
function CheckLo(X:Sreal):boolean;
var OK:boolean;
begin
   OK:=true;
   with X do
   begin
      case cardinality of
      infinite:
         if (exp=Maxexp)and(mantissa=Mininf) then
	 else writeln('**Invalid lo infinity');
      finite:
      begin
         if (mantissa=Maxinf) or (mantissa=Mininf) then
	 begin OK:=false; writeln('**Invalid finite value - hi');
	 end;
	 
         if mantissa = 0 then
	    if (exp=0) then 
	    else 
	    begin OK:=false; writeln('**Invalid zero - lo')
	    end
	 else
	 begin
	       if (mantissa > 0) then
	          if mantissa >= (Maxinf div 10) then{OK}
		  else 
		  begin OK:=false; writeln('**Incorrect normalization - lo') 
		  end
	       else{mantissa<0}
	          if mantissa > (Mininf div 10) then
		  begin OK:=false; writeln('**Incorrect normalization - lo') 
		  end;
	 end;
      end;
      end;{case}

      if not (edge in [lin,lout]) then
      begin
         OK:=false;
	 writeln('**lo edge value incorrect');
      end;
   end;
   
   CheckLo:=OK;
end;{CheckLo}
  
function CheckInt(I:Int):boolean;
var OK:boolean;
begin
   OK:=CheckHi(I.hi) and CheckLo(I.lo);
   if gtS(I.lo,I.hi) then
   begin
      OK:=false;
      writeln('**Limits out of order');
   end;

   if not OK then 
   begin writeln('**Error in Check'); DumpInt(I);
   end;
   
   CheckInt:=OK;
end;

procedure DumpMem(var DCurr:DataMem);
var tD:Ptr; tL:Loc;
begin
   with DCurr do
   begin
        writeln('LastHalve:',LastHalve:0);
	
    	for tL:= 1 to End do
	   writeln(tL:3,S[tL]:2,RHalve[tL]);
	writeln;
	
	for tD:= 1 to MaxDMem do 
	begin 
	   write(tD:5);
	   DumpInt(D[tD]);
	   assert(CheckInt(D[tD]));
	   writeln;
	end;
	writeln;
   end;
end;{DumpMem}

procedure WriteMem(var DCurr:DataMem);
var tD:Ptr; 
begin
   with DCurr do
   begin
	for tD:= 1 to MaxDMem do 
	if (DF.PF[tD] > PNull) or (Debug > activity) then
	begin 
	   write(tD:5);
	   WriteInt(D[tD]);
	   writeln;
	end;
	writeln;
   end;
end;{WriteMem}

procedure OuterExec
(PC:Loc0;DCurr:DataMem;Change:boolean;First:State;
 var OldCounter:Positive;Level:Positive);

var Counter:Positive;
    Fail,AllPoints,LocalChange:boolean;

procedure NewOuter(F:State);
begin OuterExec(PC,DCurr,Change,F,Counter,Level+1);
end;

{!!}
procedure execprint(PC:Loc; L:Ptr; R0:Int);
begin
   DF.PF[L]:=PSoln;
   writeln;
   write(PC:3,L:5);
   WriteInt(R0);
   writeln;
end;

procedure execpr(var Sr:State; L:Ptr);
begin
   Sr:=-1; DF.PF[L]:=PPrint;
end;{execpr}

procedure exectr(var Sr:State; L:Ptr);
begin
   Sr:=-1; DF.PF[L]:=PTrace;
end;{exectr}

procedure execsoln(var Sr:State; L:Ptr);
begin
   Sr:=-1; DF.PF[L]:=PSoln;
end;{execsoln}

procedure execreadr(var Sr:State;var R0:Int);
begin
   writeln;
   write('<<');
   ReadInt(R0);
   Sr:=-1;
end;

function GetReal(E,M:integer):real;
{convert E-exponent,M-mantissa into genuine Pascal real number}
var x:real;
begin
   x:=M/Maxinf;
   while E>0 do begin x:=x*10; E:=E-1; end; 
   while E<0 do begin x:=x/10; E:=E+1; end;
   GetReal:=x; 
end;{GetReal} 
   
procedure Ratio(Lo,Hi:Sreal;var ERat,MRat:integer); 
{compute ratio of Hi to Lo in exponent mantissa form}
begin
   if Lo.mantissa=0 then
   begin{treat zero as if smallest possible positive number}
      ERat:=Hi.exp-Minexp;
      MRat:=Hi.mantissa*10;
   end else
   if Hi.mantissa=0 then
   begin{treat zero as if smallest possible negative number}
      ERat:=Minexp-Lo.exp;
      MRat:=Lo.mantissa*10;
   end
   else begin
      ERat:=Hi.exp-Lo.exp;
      MRat:=(Hi.mantissa*Maxinf) div Lo.mantissa;
   end;
end;{Ratio}
    
function Adjacent(X:Int):boolean;
{are hi and lo bounds adjacent points}
begin
   with X do
   if (hi.mantissa=0) or (lo.mantissa=0) then
      Adjacent:=
         ((hi.mantissa=0)and(lo.mantissa=Mininf div 10)and(lo.exp=Minexp)) or
         ((lo.mantissa=0)and(hi.mantissa=Maxinf div 10)and(hi.exp=Minexp)) 
   else
      Adjacent:=
         ((lo.exp=hi.exp)and(lo.mantissa+1=hi.mantissa)) or
	 ((hi.exp=lo.exp+1)and(hi.mantissa=(lo.mantissa div 10)+1)) or
	 ((hi.exp=lo.exp-1)and((hi.mantissa div 10)-1=lo.mantissa));
end;{Adjacent}

procedure exechalve
   (var PC:Loc0;var Sr:State;var R0:Int;var OK:boolean;var Change:boolean);
{Reduce range of R0 (suceeds twice for two 'halves')}

var EDiff,MDiff,ERat,MRat,MidE,MidM,M0,M1,HiM,HiE:integer;
    Dummy:boolean;
    Mid:Sreal;
    R,D:real;
    OldPC:Loc;
   
    procedure AtEnd;{What to do afer a successful halve}
    begin  
	DCurr.LastHalve:=PC; PC:=0; Sr:=0;
    end;

begin{exechalve}
OldPC:=PC;
with R0 do
 begin
      if DCurr.LastHalve >= PC then {not our turn yet} else
      if (lo.mantissa = hi.mantissa) and (lo.exp=hi.exp) and
         (lo.edge=lin) and (hi.edge=hin)
      then {single point cant be divided} Sr:=-1 
      else
      if Adjacent(R0) and 
	 (((lo.edge=lout) and (hi.edge=hout)) or
	  ((lo.cardinality=infinite)and(hi.edge=hout)) or 
	  ((hi.cardinality=infinite)and(lo.edge=lout))
	 )
      then Sr:=-1
      else
      if Sr=0 then
         begin
            AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
            MDiff:=M0+M1;
	    D:=GetReal(EDiff,MDiff);
	    if D < DCurr.RHalve[PC]*HalveThreshold 
	    then {already narrowed enough dont bother} 
	       Change:=true {otherwise can terminate too early}
	    else begin
	       DCurr.RHalve[PC]:=D;
               NewOuter(1);
               NewOuter(2);
	       OK:=false;{fail after both alternatives tried}
	    end
         end
   else{Sr=1,2}
   if Adjacent(R0)
   then begin{two adjacent points - needs special care}
      if (hi.edge=hin) and (hi.cardinality=finite) then
      begin
         case Sr of
	 1:hi.edge:=hout;
	 2:begin lo:=hi; lo.edge:=lin;
	   end;
	 end;

         AtEnd;
      end
      else if (lo.edge=lin) and (lo.cardinality=finite) then 
      begin
         case Sr of
	 1:begin hi:=lo; hi.edge:=hin;
	   end;
	 2:lo.edge:=lout;
	 end;
         AtEnd;
      end else {cant be narrowed} Sr:=-1;

   end{adjacent} else
   begin
      if (lo.mantissa < 0) and (hi.mantissa > 0) then
      begin
         MidM:=0; MidE:=0;
      end else
      begin
         Ratio(lo,hi,ERat,MRat);
         if MRat < 0 then MRat:=-MRat;
         R:=GetReal(ERat,MRat);
(*writeln(ERat,MRat,R);*)
         AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
         MDiff:=M0+M1;
         if (R > 4) or (R < 0.25) then
         begin{divide hi by sqrt of ratio to get midpoint}
	    if hi.mantissa = 0 
	    then begin HiM:=Mininf div 10; HiE:=Minexp;
	    end else
	    begin HiM:=hi.mantissa; HiE:=hi.exp;
	    end;
	    if ERat < 0 then MidE:=HiE-((ERat-1) div 2)
	 	        else MidE:=HiE-(ERat div 2);
	    if odd(ERat) 
	       then MidM:=trunc(HiM*(Maxinf div 100)/sqrt(MRat*10))
	       else MidM:=trunc(HiM*(Maxinf div 100)/sqrt(MRat));
(*writeln(MidE,MidM);*)
         end else
         begin{take (hi+lo)/2 as midpoint}
            MidM:=MDiff div 2 - M1;
	    MidE:=EDiff;
         end;
      end;
      if MidM >= 0 then NormalizeDn(MidE,MidM,Mid,Dummy)
      		   else NormalizeUp(MidE,MidM,Mid,Dummy);
      case Sr of
      1:begin hi:=Mid; hi.edge:=hout;
        end;
      2:begin lo:=Mid; lo.edge:=lin;
        end;
      end;
(*DumpInt(R0);writeln;*)
      AtEnd;
   end;{if Sr}

   AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
   MDiff:=M0+M1;
   DCurr.RHalve[OldPC]:=GetReal(EDiff,MDiff);

 end;{with}
end;{exechalve}

procedure exechalves
   (var PC:Loc0;var Sr:State;var R0:Int;var OK:boolean;var Change:boolean);
{Reduce range of R0 (suceeds twice for two 'halves')}
{Simple version thats averages exponents}

var EDiff,MDiff,ERat,MRat,MidE,MidM,M0,M1,HiM,HiE:integer;
    Dummy:boolean;
    Mid:Sreal;
    R,D:real;
    OldPC:Loc;
   
    procedure AtEnd;{What to do afer a successful halve}
    begin  
	DCurr.LastHalve:=PC; PC:=0; Sr:=0;
    end;

    procedure Average(Lo,Hi:Sreal;var Exp:integer);
    {compute average of exponents allowing for zero}
    {infinities happen to work because of representation}
    var Le,He:integer;
    begin
       if Lo.mantissa = 0 then
	  Le := Minexp
       else
	  Le := Lo.exp;
       if Hi.mantissa = 0 then
	  He := Minexp
       else
	  He := Hi.exp;
       Exp:= (He + Le - 2*Minexp) div 2 + Minexp;
writeln(Exp,Hi.exp,Lo.exp,Minexp,He,Le);
    end;{Average}

begin{exechalves}
OldPC:=PC;
with R0 do
 begin
      if DCurr.LastHalve >= PC then {not our turn yet} else
      if (lo.mantissa = hi.mantissa) and (lo.exp=hi.exp) and
         (lo.edge=lin) and (hi.edge=hin)
      then {single point cant be divided} Sr:=-1 
      else
      if Adjacent(R0) and 
	 (((lo.edge=lout) and (hi.edge=hout)) or
	  ((lo.cardinality=infinite)and(hi.edge=hout)) or 
	  ((hi.cardinality=infinite)and(lo.edge=lout))
	 )
      then Sr:=-1
      else
      if Sr=0 then
         begin
            AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
            MDiff:=M0+M1;
	    D:=GetReal(EDiff,MDiff);
	    if D < DCurr.RHalve[PC]*HalveThreshold 
	    then {already narrowed enough dont bother} 
	       Change:=true {otherwise can terminate too early}
	    else begin
	       DCurr.RHalve[PC]:=D;
               NewOuter(1);
               NewOuter(2);
	       OK:=false;{fail after both alternatives tried}
	    end
         end
   else{Sr=1,2}
   if Adjacent(R0)
   then begin{two adjacent points - needs special care}
      if (hi.edge=hin) and (hi.cardinality=finite) then
      begin
         case Sr of
	 1:hi.edge:=hout;
	 2:begin lo:=hi; lo.edge:=lin;
	   end;
	 end;

         AtEnd;
      end
      else if (lo.edge=lin) and (lo.cardinality=finite) then 
      begin
         case Sr of
	 1:begin hi:=lo; hi.edge:=hin;
	   end;
	 2:lo.edge:=lout;
	 end;
         AtEnd;
      end else {cant be narrowed} Sr:=-1;

   end{adjacent} else
   begin
      if (lo.mantissa < 0) and (hi.mantissa > 0) then
      begin
         MidM:=0; MidE:=0;
      end else
      begin
         Ratio(lo,hi,ERat,MRat);
(*writeln(ERat,MRat,R);*)
         AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
         MDiff:=M0+M1;
         if (ERat > 1) or (ERat < -1) then
         begin{Average exponents}
	    if hi.mantissa <= 0 
	    then begin MidM:= -Splitman;
	    end else
	    begin MidM:= Splitman; assert(lo.mantissa >= 0);
	    end;
            Average(lo,hi,MidE);
         end else
         begin{take (hi+lo)/2 as midpoint}
            MidM:=MDiff div 2 - M1;
	    MidE:=EDiff;
         end;
      end;
      if MidM >= 0 then NormalizeDn(MidE,MidM,Mid,Dummy)
      		   else NormalizeUp(MidE,MidM,Mid,Dummy);
      case Sr of
      1:begin lo:=Mid; lo.edge:=lin;
        end;
      2:begin hi:=Mid; hi.edge:=hout;
        end;
      end;
(*DumpInt(R0);writeln;*)
      AtEnd;
   end;{if Sr}

   AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
   MDiff:=M0+M1;
   DCurr.RHalve[OldPC]:=GetReal(EDiff,MDiff);

 end;{with}
end;{exechalves}

procedure execlinh
   (var PC:Loc0;var Sr:State;var R0:Int;var OK:boolean;var Change:boolean);
{Reduce range of R0 (suceeds twice for two 'halves')}

var EDiff,MDiff,MidE,MidM,M0,M1:integer;
    Dummy:boolean;
    Mid:Sreal;
    D:real;
    OldPC:Loc;
   
    procedure AtEnd;{What to do afer a successful halve}
    begin  
	DCurr.LastHalve:=PC; PC:=0; Sr:=0;
    end;

begin{execlinh}
OldPC:=PC;
with R0 do
 begin
      if DCurr.LastHalve >= PC then {not our turn yet} else
      if (lo.mantissa = hi.mantissa) and (lo.exp=hi.exp) and
         (lo.edge=lin) and (hi.edge=hin)
      then {single point cant be divided} Sr:=-1 
      else
      if Adjacent(R0) and 
	 (((lo.edge=lout) and (hi.edge=hout)) or
	  ((lo.cardinality=infinite)and(hi.edge=hout)) or 
	  ((hi.cardinality=infinite)and(lo.edge=lout))
	 )
      then Sr:=-1
      else
      if Sr=0 then
         begin
            AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
            MDiff:=M0+M1;
	    D:=GetReal(EDiff,MDiff);
	    if D < DCurr.RHalve[PC]*HalveThreshold
	    then {already narrowed enough dont bother} 
	       Change:=true {otherwise possible to terminate early}
	    else begin
	       DCurr.RHalve[PC]:=D;
               NewOuter(1);
               NewOuter(2);
	       OK:=false;{fail after both alternatives tried}
	    end
         end
   else{Sr=1,2}
   if Adjacent(R0)
   then begin{two adjacent points - needs special care}
      if (hi.edge=hin) and (hi.cardinality=finite) then
      begin
         case Sr of
	 1:begin lo:=hi; lo.edge:=lin;
	   end;
	 2:hi.edge:=hout;
	 end;
         AtEnd;
      end
      else if (lo.edge=lin) and (lo.cardinality=finite) then 
      begin
         case Sr of
	 1:lo.edge:=lout;
	 2:begin hi:=lo; hi.edge:=hin;
	   end;
	 end;
         AtEnd;
      end else {cant be narrowed} Sr:=-1;
   end{adjacent} else
   begin
      if (lo.mantissa < 0) and (hi.mantissa > 0) then
      begin
         MidM:=0; MidE:=0;
      end else
      begin
         AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
         MDiff:=M0+M1;
         MidM:=MDiff div 2 - M1;
	 MidE:=EDiff;
      end;
      if MidM >= 0 then NormalizeDn(MidE,MidM,Mid,Dummy)
      		   else NormalizeUp(MidE,MidM,Mid,Dummy);
      case Sr of
      1:begin lo:=Mid; lo.edge:=lin;
        end;
      2:begin hi:=Mid; hi.edge:=hout;
        end;
      end;
      
      AtEnd;
   end;{if Sr}

   AlignUp(hi.exp,hi.mantissa,lo.exp,-lo.mantissa,EDiff,M0,M1,Dummy);
   MDiff:=M0+M1;
   DCurr.RHalve[OldPC]:=GetReal(EDiff,MDiff);

 end;{with}
end;{execlinh}

procedure execmult(var Sr:State;T0,T1,T2:Int;var R0,R1,R2:Int;var OK:boolean);
var Q0,Q1,Q2:Int;

   procedure multS(S0,S1:Sreal;var U,D:Sreal);
   var M,E:integer;
       Closed,Clu,Cld:boolean;
   begin
      M:=S0.mantissa*S1.mantissa;
(*DumpS(S0);write('//');DumpS(S1);write(M);*)
      Closed:=(S0.edge in [hin,lin]) and (S1.edge in [hin,lin]);
      if ((S0.mantissa=0) and (S0.edge in [hin,lin])) or
         ((S1.mantissa=0) and (S1.edge in [hin,lin]))
      then Closed:=true; 
      Clu:=Closed; Cld:=Closed;
      if (S0.cardinality=infinite) or (S1.cardinality=infinite) then
      begin
         if M < 0 then begin D:=MinusInfS; U:=MinusInfS; end else
	 if M > 0 then begin D:=PlusInfS; U:=PlusInfS; end else
	 begin {M=0} D:=ZeroS; U:=ZeroS; end;
	 Closed:=((S0.cardinality=infinite)and(S0.edge in [hin,lin]))or
	         ((S1.cardinality=infinite)and(S1.edge in [hin,lin]));
	 Clu:=Closed;Cld:=Closed;
      end
      else{everybody finite}
      begin
         E:=S0.exp+S1.exp-Digits;
	 NormalizeUp(E,M,U,Clu);
	 NormalizeDn(E,M,D,Cld);
      end;
      if Clu then U.edge:=hin else U.edge:=hout;
      if Cld then D.edge:=lin else D.edge:=lout;      
(*writeln(E);DumpS(U);write('::');DumpS(D);writeln;*)
   end;{multS}
         
   procedure mult(Ta,Tb:Int;var R:Int);
   var U0,U1,U2,U3,U4,U5,D0,D1,D2,D3,D4,D5:Sreal;
   begin
      multS(Ta.hi,Tb.hi,U0,D0);
      multS(Ta.hi,Tb.lo,U1,D1);
      multS(Ta.lo,Tb.hi,U2,D2);
      multS(Ta.lo,Tb.lo,U3,D3);
      maxS(U0,U1,U4);maxS(U2,U3,U5);maxS(U4,U5,R.hi);
      minS(D0,D1,D4);minS(D2,D3,D5);minS(D4,D5,R.lo);
   end;
   
   procedure InvS(S:Sreal;var W:Sreal);
   var E,M,Rem:integer;
       Closed:boolean;
   begin
      Closed:= S.edge in [hin,lin];
      if (S.cardinality = infinite) then
         W:=ZeroS
      else
      if (S.mantissa = 0) then
         case S.edge of
	 hin,hout:W:=MinusInfS;
	 lin,lout:W:=PlusInfS;
	 end
      else
      begin
         M:=(Maxinf*Maxinf) div S.mantissa;
	 Rem:=(Maxinf*Maxinf) mod S.mantissa;
	 if Rem < 0 then halt;
	 E:=-S.exp;
	 case S.edge of
	 lin,lout: begin 
	     	      if (Rem > 0) and (M > 0) then 
		      begin M:=M+1;Closed:=false; 
		      end;
		      NormalizeUp(E,M,W,Closed);
	           end;
	 hin,hout: begin 
	     	      if (Rem > 0) and (M < 0) then 
		      begin M:=M-1;Closed:=false;
		      end;
		      NormalizeDn(E,M,W,Closed);
	           end;
	 end;
      end;
      
      if Closed then
         case S.edge of
         hin:W.edge:=lin;
         lin:W.edge:=hin;
         end
      else
         case S.edge of
	 hin,hout:W.edge:=lout;
	 lin,lout:W.edge:=hout;
	 end;

      
   end;{InvS}	 
   
   procedure Inv(T:Int;var X:Int;Pos:boolean);
   {1/T positive -> X}
   {If 1/T splits to two intervals then use Pos to select which to use}
   begin
      if (T.lo.mantissa < 0) and (T.hi.mantissa > 0) then
         if (T.lo.cardinality=infinite) and (T.hi.cardinality=infinite) then
	    X:=All
	 else if Pos then
	 begin InvS(T.hi,X.lo); X.hi:=PlusInfS; X.hi.edge:=hin;
	 end else 
	 begin InvS(T.lo,X.hi); X.lo:=MinusInfS; X.lo.edge:=lin;
	 end
      else
      begin InvS(T.hi,X.lo); InvS(T.lo,X.hi);
      end;
   end;{Inv}
   
   procedure divi(Ta,Tb:Int;var R:Int);
   var X:Int;
   begin
      if (Tb.lo.mantissa < 0) and (Tb.hi.mantissa > 0) then
         if (Ta.lo.mantissa < 0) and (Ta.hi.mantissa > 0) then
	 { need do nothing as R will be set to [inf,inf]}
	 else
	 
         begin
	    {if both same sign get positive side of inverse}
	    {else get negative}
	    Inv(Tb,X,(Ta.hi.mantissa <= 0) = (R.hi.mantissa <= 0));
	    mult(Ta,X,R);
	 end
      else {Tb wont give split inverse}
      begin
         Inv(Tb,X,true);
	 mult(Ta,X,R);
      end;
(*
DumpInt(Tb);writeln('//');DumpInt(X);writeln;
DumpInt(Ta);writeln('\\');DumpInt(R);writeln;
*)
   end;
   
   function Split(T:Int):boolean;
   begin
      Split:=(T.lo.mantissa<0) and (T.hi.mantissa>0) 
      	      and ((T.lo.cardinality=finite) or (T.hi.cardinality=finite));
   end;{Split}

   function Zin(T:Int):boolean;
   {check if 0 in range of interval}
   begin
      if (T.lo.mantissa > 0) then Zin:=false else
      if (T.lo.mantissa = 0) then
	 Zin:=(T.lo.edge=lin) else
      if (T.hi.mantissa < 0) then Zin:=false else
      if (T.hi.mantissa = 0) then
         Zin:=(T.hi.edge=hin) 
      else
         Zin:=true;
   end;{Zin}
   
begin{execmult}
   case Sr of
   0,10:begin
        if T2=Zero then
           if (T1=Zero) or (T0=Zero) then Sr:=-1
           else
	   if not Zin(T0) then begin R1:=Zero; Sr:=-1; end else
	   if not Zin(T1) then begin R0:=Zero; Sr:=-1; end 
	   else
           begin
              NewOuter(11); NewOuter(12);OK:=false;     
           end
        else if (Sr=0) then
        begin
	   if (T0.hi.mantissa > 0) and (T0.lo.mantissa < 0) and Split(T1) 
           then  begin NewOuter(1); NewOuter(2); OK:=false; end
           else if (T1.hi.mantissa > 0) and 
	           (T1.lo.mantissa < 0) and Split(T0) 
                then  begin NewOuter(3); NewOuter(4); OK:=false; end;
	end;
     end;
   1:begin R0.lo:=ZeroS; R0.lo.edge:=lin; T0:=R0; Sr:=10;
     end;
   2:begin R0.hi:=ZeroS; R0.hi.edge:=hout; T0:=R0; Sr:=10;
     end;
   3:begin R1.lo:=ZeroS; R1.lo.edge:=lin; T1:=R1; Sr:=10;
     end;
   4:begin R1.hi:=ZeroS; R1.hi.edge:=hout; T1:=R1; Sr:=10;
     end;
   11:begin R0:=Zero; Sr:=-1;
      end;
   12:begin R1:=Zero; Sr:=-1;
      end;
   end;
   
   if OK and (Sr<>-1) then
   begin
      mult(T0,T1,Q2); Inter(R2,Q2,R2);
      Q1:=R1; divi(T2,T0,Q1); Inter(R1,Q1,R1);
      Q0:=R0; divi(T2,T1,Q0); Inter(R0,Q0,R0);
      Sr:=10;
   end;
end;{execmult}

procedure execadd(T0,T1,T2:Int;var R0,R1,R2:Int);
  procedure addhi(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{addhi}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=PlusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=hin))or
	        ((S1.cardinality=infinite)and(S1.edge=hin));
     end else
     begin
        Closed:=(S0.edge=hin)and(S1.edge=hin);
        AlignUp(S0.exp,S0.mantissa,S1.exp,S1.mantissa,Exp,M0,M1,Closed);
	NormalizeUp(Exp,M0+M1,S2,Closed)
     end;
     if Closed then S2.edge:=hin else S2.edge:=hout;
  end;
  end;{addhi}
  
  procedure addlo(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{addlo}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=MinusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=lin))or
	        ((S1.cardinality=infinite)and(S1.edge=lin));
     end else
     begin
        Closed:=(S0.edge=lin)and(S1.edge=lin);
        AlignUp(S0.exp,-S0.mantissa,S1.exp,-S1.mantissa,Exp,M0,M1,Closed);
	NormalizeUp(Exp,M0+M1,S2,Closed); mantissa:=-mantissa;
     end;
     if Closed then S2.edge:=lin else S2.edge:=lout;
  end;
  end;{addlo}
  
  procedure subhi(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{subhi}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=PlusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=hin))or
	        ((S1.cardinality=infinite)and(S1.edge=lin));
     end else
     begin
        Closed:=(S0.edge=hin)and(S1.edge=lin);
        AlignUp(S0.exp,S0.mantissa,S1.exp,-S1.mantissa,Exp,M0,M1,Closed);
	NormalizeUp(Exp,M0+M1,S2,Closed);
     end;
     if Closed then S2.edge:=hin else S2.edge:=hout;
  end;
  end;{subhi}
  
  procedure sublo(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{sublo}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=MinusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=lin))or
	        ((S1.cardinality=infinite)and(S1.edge=hin));
     end else
     begin
        Closed:=(S0.edge=lin)and(S1.edge=hin);
        AlignUp(S0.exp,-S0.mantissa,S1.exp,S1.mantissa,Exp,M0,M1,Closed);
	NormalizeUp(Exp,M0+M1,S2,Closed);mantissa:=-mantissa;
     end;
     if Closed then S2.edge:=lin else S2.edge:=lout;
  end;
  end;{sublo}
  
begin{execadd}
   addhi(T0.hi,T1.hi,R2.hi);
   addlo(T0.lo,T1.lo,R2.lo);
   
   subhi(T2.hi,T0.lo,R1.hi);
   sublo(T2.lo,T0.hi,R1.lo);
   
   subhi(T2.hi,T1.lo,R0.hi);
   sublo(T2.lo,T1.hi,R0.lo);
end;{execadd}




procedure execintgr(var Sr:State; var R:Int);
      
  procedure floor (var R : Sreal);
  var sign , dum : boolean ;
      E, M ,t    : integer ;
  
  begin
     sign := false ;
     with R do
        begin
           if (mantissa < 0) then
              begin
                 sign := true ;
                 mantissa := - mantissa ;
              end ;
           if (exp <= 0) then
              begin
                 if sign or ((mantissa = 0) & (edge = hout)) then
                    begin
                       M := 1 ; 
                       sign := true ;
                    end 
                 else
                    M := 0 ;
                 E := Digits ;
                 NormalizeUp (E,M,R,dum) ;
                 edge := hin ;
              end 
        
           else {exp >0}
              if (exp <= Digits) then
                 begin
                    M := 1 ;
                    E := exp ;
                    while (E < Digits) do
                       begin
                          M := M * 10 ;
                          E := E + 1 ;
                       end ;
                    t := mantissa mod M ;
                    M := mantissa div M ;
                    if (sign & ((edge = hout) or(t > 0))) then
                       M := M + 1 ; 
                    if (not sign & (t = 0)) & (edge = hout) then
                       M := M - 1 ;
                    E := Digits ;
                    NormalizeUp (E,M,R,dum) ;
                    edge := hin ;
                 end 
              else
                 if ((edge = hout)&(exp = (Digits+1))) & (not sign & (mantissa = Splitman)) then
                    begin
                       mantissa := Maxman ;
                       exp := Digits ;
                       edge := hin ;
                    end ;
           if sign then
              mantissa := - mantissa ;
        end ;{with R}
  end ; {floor} 
  procedure ceiling (var R : Sreal);
  var sign , dum : boolean ;
      E, M , t   : integer ;
  
  begin
     sign := false ;
     with R do
        begin
           if (mantissa < 0) then
              begin
                 sign := true ;
                 mantissa := - mantissa ;
              end ;
           if (exp <= 0) then
              begin
                 if sign or ((mantissa = 0) & (edge = lin)) then
                    M := 0 
                 else
                    M := 1 ;
                 E := Digits ;
                 NormalizeDn (E,M,R,dum) ;
                 edge := lin ;
              end 
        
           else {exp > 0}
              if (exp <= Digits) then
                 begin
                    M := 1 ;
                    E := exp ;
                    while (E < Digits) do
                       begin
                          M := M * 10 ;
                          E := E + 1 ;
                       end ;
                    t := mantissa mod M ;
                    M := mantissa div M ;
                    if ( not sign & ((edge = lout) or(t > 0))) then
                       M := M + 1 ;
                    if (sign & (t = 0)) & (edge = lout) then
                       M := M - 1 ;
                    E := Digits ;
                    NormalizeDn (E,M,R,dum) ;
                    edge := lin ;
                 end 
              else
                 if ((edge = lout)&(exp = (Digits+1))) & (sign & (mantissa = Splitman)) then
                    begin
                       mantissa := Maxman ;
                       exp := Digits ;
                       edge := lin ;
                    end ;
           if sign then
              mantissa := - mantissa ;
        end ;{with R}
  end ; {ceiling} 
begin
   with R do
      begin
(*         writeln ('IN EXECINTGR :') ;
         writeln ;
         writeln ('HI : ', hi.mantissa , hi.exp) ;
         writeln ;
         writeln ('LO : ', lo.mantissa , lo.exp) ;
         writeln ;
*)
         if (hi.cardinality <> infinite) then
            floor (hi) ;
         if (lo.cardinality <> infinite) then
            ceiling (lo) ;
         if ((hi.mantissa = lo.mantissa) & (hi.exp = lo.exp)) then
            Sr := - 1 ;
(*         writeln ('OUT EXECINTGR :') ;
         writeln ;
         writeln ('HI : ', hi.mantissa , hi.exp) ;
         writeln ;
         writeln ('LO : ', lo.mantissa , lo.exp) ;
         writeln ;
*)
      end ;
end;{execintgr}













  procedure execlb (R1 : Int ; var R : Int) ;
  begin
     R := R1 ;
     with R.lo do
        if (cardinality = infinite) then
           R.hi := MinusFiniteS 
        else
           R.hi := R.lo ;
     R.hi.edge := hin ;
     R.lo := MinusInfS ;
  end ;

procedure execub (var X , Xd : Int) ;
var     Dum : Int ;     
  begin
     Xd := X ;
     execadd (Xd, Dum, Zero, Dum, Xd, Dum) ;
     execlb (Xd,Xd) ;
     execadd (Xd, Dum, Zero, Dum, Xd, Dum) ;
  end ;

procedure execcopy (R0 :Int; var R1:Int);
begin
  R1:=R0;
end;

procedure execless(var Sr:State; var R0,R1:Int);
{R0 < R1}
begin
   if Point(R0) or Point(R1) then Sr:=-1;
   if gtS(R1.lo,R0.hi) then Sr:= -1 else
   begin
      R0.hi:=R1.hi;
      R0.hi.edge:=hout;
      R1.lo:=R0.lo;
      R1.lo.edge:=lout;
   end;
end;{execless}

procedure execleq(var Sr:State; var R0,R1:Int);
{R0 =< R1}
begin
   if Point(R0) or Point(R1) then Sr:=-1;
   if geS(R1.lo,R0.hi) then Sr:= -1 else
   begin
      R0.hi:=R1.hi;
      R1.lo:=R0.lo;
   end;
end;{execleq}

procedure execnoteq(var Sr:State; var R0,R1:Int);
{R0 <> R1}
begin
   case Sr of
   0:{nothing done yet}
     begin
     if gtS(R0.lo,R1.hi) or gtS(R1.lo,R0.hi) 
     then Sr:=-1 {no need to check in future}
     else 
     begin
        if Point(R0) then 
	begin
	   OuterExec(PC,DCurr,true,1,Counter,Level+1);
	   Sr:=2;
	   execless(Sr,R1,R0);
	end else
	if Point(R1) then
	begin
	   OuterExec(PC,DCurr,true,2,Counter,Level+1);
	   Sr:=1;
	   execless(Sr,R0,R1);
	end;
     end;
     end;
   1:execless(Sr,R0,R1);
   2:execless(Sr,R1,R0);
   end;
end;{execnoteq}

procedure execsqrr(var R0,R1:Int);
begin{execsqrr}
end;{execsqrr}

procedure execminr(var R0,R1,R2:Int);
begin{execminr}
end;{execminr}

procedure execmaxr(var R0,R1,R2:Int);
  procedure chmaxhi(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{chmaxhi}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=PlusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=hin))or
	        ((S1.cardinality=infinite)and(S1.edge=hin));
     end else
     begin
        Closed:=(S0.edge=hin)and(S1.edge=hin);
        AlignUp(S0.exp,S0.mantissa,S1.exp,S1.mantissa,Exp,M0,M1,Closed);
        if M1 > M0 then
           M0 := M1 ;
	NormalizeUp(Exp,M0,S2,Closed)
     end;
     if Closed then S2.edge:=hin else S2.edge:=hout;
  end;
  end;{chmaxhi}
  
  procedure chmaxlo(S0,S1:Sreal; var S2:Sreal);
  var Closed:boolean;  Exp,M0,M1:integer;
  begin{chmaxlo}
  with S2 do
  begin
     if (S0.cardinality=infinite)or(S1.cardinality=infinite) then
     begin  
        S2:=MinusInfS;
        Closed:=((S0.cardinality=infinite)and(S0.edge=lin))or
	        ((S1.cardinality=infinite)and(S1.edge=lin));
     end else
     begin
        Closed:=(S0.edge=lin)and(S1.edge=lin);
        AlignUp(S0.exp,-S0.mantissa,S1.exp,-S1.mantissa,Exp,M0,M1,Closed);
	NormalizeUp(Exp,M0+M1,S2,Closed); mantissa:=-mantissa;
     end;
     if Closed then S2.edge:=lin else S2.edge:=lout;
  end;
  end;{addlo}
begin{execmaxr}
end;{execmaxr}

procedure execmodu(var R0,R1,R2:Int);
begin{execmodu}
end;{execmodu}

procedure execabsr(var R0,R1:Int);
begin{execabsr}
end;{execabsr}

procedure exectrig(var R0,R1,R2:Int);
begin{exectrig}
end;{exectrig}

procedure execexpr(var R0,R1:Int);
begin{execexpr}
end;{execexpr}


function Exec(I:Instr;var PC:Loc0;var Change:boolean):boolean;
var
	R:array[0..Par] of Int;  {working registers}
	Sr:State;  {State register}
	P:0..Par;
	E:boolean;
	NewPC:Loc0;
	TraceChange:boolean;

   procedure WritePars; {write out list of parameter registers for curr ins}
   begin
   with I do
   begin
      write(PC:2,Code:5,Sr:3);
      for P := 0 to Par do
         if Pars[P] <> 0 then 
	 begin
	    write(Pars[P]:3);
	    WriteInt(R[P]);
	 end;
      writeln;
   end;
   end;{WritePars}

begin{Exec}
with I,DCurr do
begin
   Counter:=Counter+1;
   {get parameters}
   for P := 0 to ParN[Code] do 
   begin R[P]:=D[Pars[P]]; assert(CheckInt(R[P]));
   end;
   
   Sr:=S[PC];
   if Debug >= trace then  begin write(' '); WritePars; end;
   E:=true;
   Change:=false;
   NewPC:=PC;

{!!}case Code of 
   print: execprint(PC,Pars[0],R[0]);
   pr   : execpr(Sr,Pars[0]);
   tr   : exectr(Sr,Pars[0]);
   soln : execsoln(Sr,Pars[0]);
   readr: execreadr(Sr,R[0]);
   halve: exechalve(NewPC,Sr,R[0],E,Change);
   halves:exechalves(NewPC,Sr,R[0],E,Change);
   linh : execlinh(NewPC,Sr,R[0],E,Change);
   mult : execmult (Sr,R[0],R[1],R[2],R[0],R[1],R[2],E);
   add  : execadd  (R[0],R[1],R[2],R[0],R[1],R[2]);
   intgr: execintgr(Sr,R[0]);
   less : execless (Sr,R[0],R[1]);
   leq  : execleq  (Sr,R[0],R[1]);
   noteq: execnoteq(Sr,R[0],R[1]);
   sqrr : execsqrr(R[0],R[1]);
   minr : execminr(R[0],R[1],R[2]);
   maxr : execmaxr(R[0],R[1],R[2]);
   modu : execmodu(R[0],R[1],R[2]);
   absr : execabsr(R[0],R[1]);
   trig : exectrig(R[0],R[1],R[2]);
   expr : execexpr(R[0],R[1]);
   lb   : execlb (R[0],R[1]);
   ub   : execub (R[0],R[1]);
   copy : execcopy(R[0],R[1]);
   end;

   TraceChange:=false;
   AllPoints:=true;
   for P := 0 to ParN[Code] do
   with D[Pars[P]] do
   begin
      if DF.PF[Pars[P]]=PPrint then TraceChange:=true;
      assert(CheckLo(R[P].lo));assert(CheckHi(R[P].hi));
      if ParIntersect [Code] then
         begin
            maxS(R[P].lo,lo,R[P].lo);
            minS(R[P].hi,hi,R[P].hi);
         end ;
      if gtS(R[P].lo,R[P].hi) then 
      begin E:=false; assert(CheckLo(R[P].lo));assert(CheckHi(R[P].hi));
      end
      else begin
         if D[Pars[P]] <> R[P] then 
         begin 
	    D[Pars[P]] := R[P]; 
	    Change:=true;
	    if DF.PF[Pars[P]] = PTrace then TraceChange:=true;
         end;
         AllPoints:=AllPoints and Point(R[P]);
         assert(CheckInt(R[P])); assert(CheckInt(D[Pars[P]]));
      end;
   end;

   if (Debug=activity) and TraceChange then writeln;
   if (Debug >=activity) then 
   begin if Change then write('*') else write ('.');
   end;
   Exec:=E;
   if E then
   begin
      if AllPoints then Sr:=-1; 
      if (Sr <> S[PC]) then begin S[PC]:=Sr; Change:=true; end;
      if (Debug=activity) and TraceChange then WritePars;
      if Debug >= post then  WritePars;
      if Debug = dump then DumpMem(DCurr);
   end else 
   if Debug >= activity then 
   begin writeln('FAILED'); write(' '); WritePars; 
   end;
   PC:=NewPC;
end;
end;{Exec}

begin{OuterExec}
   writeln;
   writeln(Level:2,'Entering  Count:',OldCounter:0); OldCounter:=0;
   Counter:=0;
   Fail:=false;
   if First <> 0 then DCurr.S[PC]:=First;
   {Run simulation until failure or nothing further to be done}
   repeat
        if (PC = End) then 
   	begin PC:=1; Change:=false; DCurr.LastHalve:=1; end;
   	while (PC < End) and not Fail and not GlobalEnd do
   	with I[PC] do
   	begin
   	   if DCurr.S[PC] > -1 then
	   begin Fail:=not Exec(I[PC],PC,LocalChange); 
	      Change:=Change or LocalChange;
	   end;
   	   PC:=PC+1;
   	end;
   until Fail or (not Change) or GlobalEnd;
   writeln;
   write(Level:2,'Exiting  Count:',Counter:0);
   if not (Fail or GlobalEnd) then
   begin 
      if (Cut=once) then GlobalEnd:=true;
      writeln('SOLUTION');
      WriteMem(DCurr);
   end 
   else writeln;
end;{OuterExec}


procedure Clear;
var tL:Loc; 
    tD,tDF:Ptr; 
    tPar:1..Par; 
    DI:1..Digits;
    J:1..Maxexp;
    MaxDiff:real;
begin
   Shift[0]:=1;
   for DI:= 1 to Digits do Shift[DI]:=Shift[DI-1]*10;

   with PlusInfS do
   begin
      edge:=hin;cardinality:=infinite;mantissa:=Maxinf;
      exp:=Maxexp;
   end;
   with MinusInfS do
   begin
      edge:=lin;cardinality:=infinite;mantissa:=Mininf;
      exp:=Maxexp;
   end;
   with PlusFiniteS do
   begin
      edge:=hin;cardinality:=finite;mantissa:=Maxman;
      exp:=Maxexp;
   end;
   with MinusFiniteS do
   begin
      edge:=lin;cardinality:=finite;mantissa:=Minman;
      exp:=Maxexp;
   end;
   with ZeroS do
   begin exp:=0;mantissa:=0;edge:=hin;cardinality:=finite;
   end;
   with PlusSmallS do
   begin exp:=Minexp;mantissa:=Maxinf div 10; cardinality:=finite;
   end;
   with MinusSmallS do
   begin exp:=Minexp;mantissa:=Mininf div 10; cardinality:=finite;
   end;
   


   with Zero do
   begin lo:=ZeroS;lo.edge:=lin; hi:=ZeroS;hi.edge:=hin;
   end;
   with All do
   begin hi:=PlusInfS; lo:=MinusInfS;
   end;
   with AllFinite do
   begin lo:=MinusFiniteS; hi:=PlusFiniteS;
   end;

   with DF do
   begin
        for tDF:= 1 to DMem do PF[tDF]:=PNull;
   end;
  
   with DInit do
   begin
	for tD:= 1 to DMem do
	   if Verifiable then D[tD]:=AllFinite
	   		 else D[tD]:=All;
	LastHalve:=1;

	MaxDiff:=2;
	for J:=1 to Maxexp do MaxDiff:=MaxDiff*10;
	
	for tL := 1 to IMem do
	begin
	   RHalve[tL]:=MaxDiff;
	   S[tL]:=0;
	   with I[tL] do
	   for tPar := 1 to Par do
		Pars[tPar]:=0;
	end;

{!!}	ParN[print]:=0;
        ParN[pr]:=0;
        ParN[tr]:=0;
        ParN[soln]:=0;
	ParN[halve]:=0;
	ParN[halves]:=0;
	ParN[readr]:=0;
	ParN[linh]:=0;
	ParN[mult]:=2;
	ParN[add]:=2;
	ParN[intgr]:= 0;
	ParN[less]:= 1;
	ParN[leq]:= 1;
	ParN[noteq]:= 1;
	ParN[sqrr]:= 1;
	ParN[minr]:=2;
	ParN[maxr]:=2;
	ParN[modu]:= 1;
	ParN[absr]:= 1;
	ParN[trig]:=2;
	ParN[expr]:= 1;
        ParN[lb]:= 1;
        ParN[ub]:= 1; 
        ParN[copy]:= 1; 
	ParN[stop]:=-1;
{!!}	ParIntersect[print]:= true;
        ParIntersect[pr]:= true;
        ParIntersect[tr]:= true;
        ParIntersect[soln]:= true;
	ParIntersect[halve]:=true;
	ParIntersect[halves]:=true;
	ParIntersect[readr]:=true;
	ParIntersect[linh]:=true;
	ParIntersect[mult]:=true;
	ParIntersect[add]:=true;
	ParIntersect[intgr]:= true;
	ParIntersect[less]:= true;
	ParIntersect[leq]:= true;
	ParIntersect[noteq]:= true;
	ParIntersect[sqrr]:= true;
	ParIntersect[minr]:= true;
	ParIntersect[maxr]:= true;
	ParIntersect[modu]:= true;
	ParIntersect[absr]:= true;
	ParIntersect[trig]:= true;
	ParIntersect[expr]:= true;
        ParIntersect[lb]:= false;
        ParIntersect[ub]:= false;
	ParIntersect[stop]:= true;
	ParIntersect[copy]:= true;
   end;
end;{Clear}
	
procedure ReadInstr;
var
	tP:0..Par;
	Op:OpType;
	tDat:Ptr;
begin
   with DInit do
   begin
	End:=1;
	MaxDMem:=0;
	repeat
	   with I[End] do
	   begin
	      read(Op);
	      Code:=Op;
	      for tP := 0 to ParN[Op] do with I[End] do 
	      begin
	         read(tDat); Pars[tP]:=tDat;
		 if tDat>MaxDMem then MaxDMem:=tDat;
		 if MaxDMem > DMem then 
		 begin writeln('Too many variables');halt;
		 end;
	      end;
	      readln;
	   end;
	   End:=End+1; 
	   if End >= IMem then begin writeln('Too many instructions');halt;end;
	until Op = stop;
	End:=End-1;

	while not eof do {read constant values for memory locations}
	begin

   	   read(tDat);
	   if tDat > DMem then writeln('Variable out of range',tDat,DMem);
	   ReadInt(D[tDat]);
	   readln;
	end;
   end;
end;{ReadInstr}

begin
	GlobalEnd:=false;
	InitialOptions;
	readln(Cut);
	writeln(Cut);
	Clear;
	{ set to initial values, read instructions}
	ReadInstr;
	if Debug = dump then begin DumpTables; DumpMem(DInit); end;
	if Debug >= activity then WriteMem(DInit);
	Dummy:=0;
	OuterExec(1,DInit,false,0,Dummy,0);
	if Debug = dump then DumpMem(DInit);
end.
Login: ian
Password:
Last login: Fri Aug 28 13:48:03 from vaxb
This login: Fri Aug 28 14:18:21 from vaxb
4.3 BSD+NFS UNIX #25: Fri Aug 28 08:08:07 MDT 1987

There is a New version of the Verdix Ada compiler installed on Vaxc.  All
persons using this compiler please contact Terry as soon as possible.  Also,
if there is anyone using the nyu ada or telesoft ada compilers please let
Terry know, we would like to remove them from the system, if they are not
being used. (we need the disk space!) Thanks.

The imagen is once again operational but with reduced capacity (one of the
memory boards is being repaired).  Large documents may not work.

vaxb!ian      ttyp4   Aug 28 14:18      (vaxb)
Welcome to Freedman's Input Line Editor (FILE).  Version: 87-01-11
Please wait until your shell prompt appears (ESC-? for help).
hi, terminal is amb-xl
You are already logged in somewhere
Harold as adjunct??? -- and reply to his mail
rlogin vaxb -8 | tee transcript?
VAXB cd ~/courses/551cd ~/courses/551
VAXB lsls
assignments	core		info.sheet~	topics~
assignments~	info.sheet	topics
VAXB roff -a2 assignments; lpq -Palw2&roff -a2 assignments; lpq -Palw2&
[1] 6894
VAXB cd ../670cd ../670
VAXB lsls
601.synopsis	601.synopsis~	synopsis	synopsis~	temp
VAXB cp ../533/info.sheet .cp ../533/info.sheet .
VAXB e info.sheete info.sheet
[60;0;0;60p[>52;54h[>30;37;38;39l[60;0;0;60p[>52;54h[>30;37;38;39l[H[J                                                                                                                                                                                                                  [60;1HLoading time...[H[60;16Hdone[HP`&~X4R\[60;1H[K  [H.pn 0
.ls1
.ce2
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE
.sp2
.ps+2
.ce
CPSC 533 \(em Artificial Intelligence
.ps-2
.sp3
.LB
.NP
.ul
Instructor.
Ian H Witten,  MA\ 786,  220-6780
.sp
.NP
.ul
Office hours.
Mondays and Wednesdays 15.00-16.00
.sp
.NP
.ul
Tutorial instructor.
Dave Maulsby, MA\ 358, 220-7683
.sp
.NP
.ul
Lectures.
ST 130, Tuesdays and Thursdays 9.30-10.45
.sp
.NP
.ul
Labs.
L01: SS\ 202, Mondays and Wednesdays 9.00-9.50;
L02: SB\ 144A, Tuesdays and Thursdays 11.00-11.50
.sp
.NP
.ul
Course texts
.sp
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.br
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp
.NP
.ul
Assessment
.ta \w'Midterm exam (in class time)    'u
.sp
Midterm exam (in class time)    \015%
.br
Final exam      \030%
[7m-----Emacs: info.sheet          time and load   (Text Fill)----Top-------------[m[H[59;33H[7m2:20pm 3.04[1]   (Text Fill)----Top[m[Hno entries

vaxb: sending to vaxa
Rank   Owner      Job  Files                                 Total Size
1st    ian        286  (standard input)                      25202 bytes
[60;0;0;60p[>52;54h[>30;37;38;39l[H[J                                                                                                                                                                                                                  .pn 0
.ls1
.ce2
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE
.sp2
.ps+2
.ce
CPSC 533 \(em Artificial Intelligence
.ps-2
.sp3
.LB
.NP
.ul
Instructor.
Ian H Witten,  MA\ 786,  220-6780
.sp
.NP
.ul
Office hours.
Mondays and Wednesdays 15.00-16.00
.sp
.NP
.ul
Tutorial instructor.
Dave Maulsby, MA\ 358, 220-7683
.sp
.NP
.ul
Lectures.
ST 130, Tuesdays and Thursdays 9.30-10.45
.sp
.NP
.ul
Labs.
L01: SS\ 202, Mondays and Wednesdays 9.00-9.50;
L02: SB\ 144A, Tuesdays and Thursdays 11.00-11.50
.sp
.NP
.ul
Course texts
.sp
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.br
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp
.NP
.ul
Assessment
.ta \w'Midterm exam (in class time)    'u
.sp
Midterm exam (in class time)    \015%
.br
Final exam      \030%
[7m-----Emacs: info.sheet          2:20pm 3.04[1]   (Text Fill)----Top------------[m[H







[5`[C[2@ 67[59;3H[7m**[m[9;8H[1@ 0[3P 





	
M[12`[60;0;2;60p[16;1H[1L                     [60;0;0;60p[16;1HJohn H.	Andreae[8`[1P [15`, MA\ 7[29;1H[K  [7m--**-Emacs: info.sheet          2:20pm 3.04[1]   (Text Fill)----Top------------[m
[Cpn 0
.ls1[K  
.ce2[K  
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE
[Csp2
.ps+2
.ce[K  
CPSC 670 \(em Artificial Intelligence[K  
[Cps-2
sp3
LB
.NP[K  
ul
Instructor.[K  
John H Andreae, MA\ 7[K  
Ian H Witten,  MA\ 786,  220-6780[K  
[Csp
.NP[K  
.ul[K  
Office hours.[K  
Mondays and Wednesdays 15.00-16.00
[Csp
NP
.ul[K  
Tutorial instructor.[K  
Dave Maulsby, MA\ 358, 220-7683
.sp[K  
NP[16;22H[60;1HFind file: ~/courses/670/[29;36H[7m1pm 2.65[3[m[59;36H[7m1pm 2.65[3[m[60;26H~/tempo[14`temporary/andreae[K  3
[K  [HThe Department welcomes John Andreae, on sabbatical from the University of
Canterbury, Christchurch, New Zealand.  John is a Visiting Research Associate
and will be with us until the end of November.  He is New Zealand's foremost
researcher in Artificial Intelligence, and has a long-standing international
reputation for his seminal work on the foundations of learning and the
simulation of learning mechanisms.  He will be teaching the first part of CPSC
670, and working with John Cleary and Bruce MacDonald (whose PhD theses he
supervised in New Zealand), Brian Gaines, David Hill, Ian Witten, and anyone
else who is interested![K  
[K  
John's office is room 782, phone 7299.  He and Molly Andreae are presently
staying at the MacDonald/Stodart residence.
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [29;3H[7m---Emacs: andreae3            2:21pm 2.65[3]   (Text Fill)----All[m[H[45;22H82, [21`
		[1@  [27` 220-7299
[47;4H

[50;14H[60;0;2;60p[51;1H[1L    [60;0;0;60p[51;1HTuesdays and Thursdays 14.00-15.00 (both [29;36H[7m2pm 2.36[1[m[59;36H[7m2pm 2.36[1[m[51;42Hinstructors)[36`[54`Mondays and Wednesdays 15.\[26P [51;54H[60;0;2;60p[52;1H[1M    [60;0;0;60p[51;54H[K  [58;1H.NP[51;54H[52;4H
[60;1HMark set[52;1H[60;1H[K  [53;1H



[60;0;2;60p[52;1H[5M    [60;0;0;60p[54;1H.ul
Lectures.
ST 130, Tuesdays and Thursdays 9.30-10.45
.sp
.NP[52;1H[60;0;2;60p[1;1H[29M                            [60;0;0;60p[30;1H.ul
Labs.
L01: SS\ 202, Mondays and Wednesdays 9.00-9.50;
L02: SB\ 144A, Tuesdays and Thursdays 11.00-11.50
.sp
.NP
.ul
Course texts
.sp
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.br
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp
.NP
.ul
Assessment
.ta \w'Midterm exam (in class time)    'u
.sp
Midterm exam (in class time)    \015%
.br
Final exam      \030%
.br
Assignment 1    \010%
.br
Assignment 2    \010%[23;1H



[3`
[2@ ??[1@ ?[2P [4P [14`	[C[28`[C[1@ 1[1@ 1[1@ .[2@ 00[1@ -[1@ 1[2@ 2.[2@ 15[K  
[60;1HMark set[28;1H[60;1H[K  [29;1H




[60;0;2;60p[28;1H[6M               [60;0;0;60p[53;1H.br
Project:
.br
\0\0\0\0interim report  \010%
.br
\0\0\0\0final report    \025%[28;1H[59;36H[7m3pm 3.10[3[m[28;1H




[60;0;2;60p[19;1H[11L                    [60;0;0;60p[1;2HNP[K  
ul[K  
Office hours.
[Cuesdays and Thursdays 14.00-15.00 (both instructors)
.sp[K  
NP[K  
ul[K  
Lectures.
???, Tuesdays and Thursdays 11.00-12.15
[Csp[K  
NP[K  
ul
Course texts
[Csp
Winston, P.H.
\fIArtificial Intelligence\fR.[K  
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
[Cbr[60;1HFind file: ~/courses/670/[19;1HWinston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp
.NP
.ul
Assessment
.ta \w'Midterm exam (in class time)    'u
.sp
Midterm exam (in class time)    \015%
[7m--**-Emacs: info.sheet          2:23pm 3.10[3]   (Text Fill)---- 2%------------[m[59;65H[7m 2%[m[60;26Hsynopsis
[K  [1;2Hpn 0
ls1
.ce2[K  
HE UNIVERSITY OF CALGARY[K  
DEPARTMENT OF COMPUTER SCIENCE
[Csp2
ps+2
.ce[K  
CPSC 670 \(em Artificial Intelligence[K  
[Cps-2
sp3
For 1987-88, this course will take place in two parts:
.LB[K  
ta \w'Winter 1988    'u +\w'Dr J.A. Andreae    'u
Fall 1987       Dr J.H. Andreae Machine Learning
.br[K  
Winter 1988     Dr I.H. Witten  Artificial Intelligence[K  
[CLE
The parts will be assessed separately, and the first will be available as
a 601 course for students wishing to take it alone.
(This organization reflects a current proposal to replace CPSC 670 by several
half courses in future, including CPSC 675 ``Machine Learning'' and
CPSC 671 ``Artificial Intelligence''.)  \c
Lectures will take place on Tuesdays and Thursdays, 9.30-10.45 am.
.rh "Machine Learning."
This will include the following topics:[K  
[CLB
.NP[K  
[7m---Emacs: synopsis            2:23pm 3.10[3]   (Text Fill)----Top[m[H[CLB[K  
NP[K  
Dimensions of classification of machine learning problems and systems
.NP[K  
Theoretical foundations of inductive inference
[CNP[K  
Similarity-based learning: the generalization-as-search paradigm and its
implementations
.NP[K  
Explanation-based learning and systems which embody it
[CNP[K  
Exploration and discovery mechanisms, functional induction and theory formation
[CNP
Learning procedural knowledge[K  
.NP[K  
Cognitive aspects of human learning.
.LE[K  
The text for this part will be
.LB[K  
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.[K  
Morgan Kaufmann, Los Altos, CA.[K  
.LE[K  
Other relevant books include[K  
[CLB[K  
Forsyth, R. and Rada, R. (1986)[K  
[Cul
Machine learning: applications in expert systems and information retrieval.[29;65H[7m23%[m[H[29;36H[7m4pm 2.57[1[m[59;36H[7m4pm 2.57[1[m[H















[44;1HMMMMM[60;1HMark set[39;1H[60;1H[K  [40;1H










[60;0;2;60p[39;1H[12M          [60;0;0;60p[47;1HFinal exam      \030%
.br
Assignment 1    \010%
.br
Assignment 2    \010%
.br
Project:
.br
\0\0\0\0interim report  \010%
.br
\0\0\0\0final report    \025%
.br[39;1H



[4`[C[1@  [1@ \[1@ w[1@ '[1@ T[1@ e[1@ r[1@ m[C[1@  [6`[7P [1@ w[1@ '[1@ W[3@ int[2@ er[C[1@  [2@ Te[1@ r[1@ m[C[1@  [C[1@  [C[2@   [2@ 'u[C[1@  [1@ +[60;1HAuto-saving...[43;27H[60;15Hdone[43;27H[60;1H[K  [43;27H[1P [44;4H[29;36H[7m5pm 2.14[3[m[59;36H[7m5pm 2.14[3[m[44;4H[60;0;2;60p[45;1H[1L       [60;0;0;60p[45;1HFall Term	Assignment	7\(12%\7\(12%[34`07\(12%[35`	[60;0;2;60p[46;1H[1L       [60;0;0;60p[46;1HPro
[60;1HMark set[46;1H[60;1H[K  [46;1H[K  [60;0;2;60p[46;1H[1M       [60;0;0;60p[58;1H\0\0\0\0final report    \025%[46;1H[K  [60;0;2;60p[46;1H[1M       [60;0;0;60p[58;1H.br[46;1H
TFinal exam[2`aFinal exam[3`keFinal exam[5`-hFinal ex[8@ am      [7`oFinal exam[8`meFinal exam[10` exam[8P [10`[C[C[C[C[C	[C[C230%230%[29;36H[7m6pm 3.05[4[m[59;36H[7m6pm 3.05[4[m[47;21H\30%(30%130%230%0%[K  %[K  [46;4HM			[44;4H
			[27`	[C[1@ \[1@ 0[46;4H
			[C
[60;0;2;60p[48;1H[1M      [60;0;0;60p[58;9H____[48;1H[K  [60;0;2;60p[48;1H[1M      [60;0;0;60p[58;1H.br[48;1H[K  [60;0;2;60p[48;1H[1M      [60;0;0;60p[58;9H\h'-\w'total  'u'total\ \ 100%[48;1H[60;0;2;60p[48;1H[1M      [60;0;0;60p[58;1H.sp[48;1HMM[K  [60;0;2;60p[46;1H[1M       [60;0;0;60p[58;1H.sp[46;1H[60;0;2;60p[46;1H[1M       [60;0;0;60p[58;1H.ta \w'Demonstrations    'u[46;1H[53;1H[60;1HMark set[53;1H[60;0;2;60p[54;1H[2L   [60;0;0;60p[53;1H.br[K  
Take-home exam  \022\(12%
	____




[K  [54;1H
.br[60;0;2;60p[56;1H[1L  [60;0;0;60p[55;4H[K  
	____
MMM[K  [60;0;2;60p[53;1H[1M   [60;0;0;60p[58;1H.sp[53;1HMMMMMM[8@ 	

[8@ 	[C[C[C[C[C[C		pinterim report[18`rointerim report       \010%[20`ginterim report[21`reinterim report[23`ssinterim report
			 report \010%[K  
			[50;4H
[8@ 	[C[C[50;4H[29;36H[7m7pm 3.01 Mail[2]   (Text Fill)----23%[m[59;36H[7m7pm 3.01 Mail[2]   (Text Fill)---- 2%[m[50;4H[49;34H[26`		[C[C\10%010%510%0%[K  %[K  [50;4H[51;38H%[K  %[K  1%2%\%(%1%2%[50;4H
[K  [60;0;2;60p[50;1H[1M     [60;0;0;60p[50;1H[K  [58;1H.sp[50;1H[60;0;2;60p[50;1H[1M     [60;0;0;60p[58;1H.ta \w'Demonstrations    'u[50;1H[60;1HMark set[50;1H[60;0;2;60p[51;1H[2L    [60;0;0;60p[51;9H\0\0\0\0final report    \012\(12%
.br
[60;0;2;60p[53;1H[2L   [60;0;0;60p[53;9H\0\0\0\0final report    \012\(12%
.br





[K  [53;1H[11`[C[C[C[C		ifinal report[18`nfinal report[19`-final report[20`cfinal repor[8@ t       [21`lafinal report[23`ssfinal report
			 final report[26`prfinal report[28`efinal repor[8@ t       [29`sfinal report[30`efinal report[31`ntatfinal report[35`ionfinal rep[8@ ort     [38` report[8P [38`[C[8P 	[C[C[1@ \[1@ 0[1@ 2[1@ \[1@ (	[C12\(12%[50`2\(12%[K  [50`\(12%[K  [50`(12%[K  12%[K  2%[K  %[K  [54;4H
			[C[60;0;2;60p[56;1H[1L  [60;0;0;60p[56;1H.spMMMM[51;42H[50;4H[49;39H
MM		[45;43H[29;36H[7m8pm 2.87[m[59;36H[7m8pm 2.87[m[45;43H[60;0;2;60p[1;1H[29M                            [60;0;0;60p[30;1H.br
	\h'-\w'total  'u'total\ \ 100%
.sp
.sp
.ta \w'Demonstrations    'u
.NP
.ul
Guest lectures.
There may be guest lectures on topics such as:
.LB
.NP
.ul
L\s-2ISP\s+2 ``Flavors''
.NP
.ul
an advanced AI programming environment (eg KnowledgeCraft)
.NP
.ul
an implementation of the ``version space'' concept learning technique
.NP
.ul
the Japanese initiatives in new generation computing.
.LE
.NP
.ul
Demonstrations.
It is hoped to arrange demonstrations of
.LB
.NP[16;43H[15;4H
[60;1HMark set[16;1H[60;1H[K  [19;1H






[8@ 	

[60;0;2;60p[16;1H[11M                     [60;0;0;60p[48;1H.ul
NEXPERT expert system shell[60;1HMark set[16;1H[60;0;2;60p[16;1H[11L                     [60;0;0;60p[16;1HFall Term       Assignment      \0\07\(12%
.br
	Project:
.br
	\0\0\0\0progress report \0\05%
.br
	\0\0\0\0final report    \012\(12%
.br
	\0\0\0\0in-class presentation   \0\02\(12%
.br
	Take-home exam  \022\(12%
[60;0;2;60p[28;1H[11L               [60;0;0;60p[27;1HFall Term       Assignment      \0\07\(12%
.br
	Project:
.br
	\0\0\0\0progress report \0\05%
.br
	\0\0\0\0final report    \012\(12%
.br
	\0\0\0\0in-class presentation   \0\02\(12%
.br
	Take-home exam  \022\(12%
.sp
[60;1H[K  [37;1HMMMMMMMMMM[60;0;2;60p[39;1H[1L          [60;0;0;60p[60;0;21;60p[27;1H[1L                [60;0;0;60p[27;1H.sp
WFall Term[2`inFall Term[4`[60;1HAuto-saving...[28;4H[60;15Hdone[28;4H[60;1H[K  [28;4HterFall Term[7` Term    [7`[12`	CAssignment[18`lAssignment[19`aAssignment[20`sAssignment[21`sAssignment[22` Assignmen[8@ t       [23`pAssignment[24`reAssignment[26`sAssignment[27`eAssignment[28`nAssignment[29`tAssignment[30`aAssignmen[8@ t       [31`tioAssignment[34`nAssignment[35`  [8P s[43`[29;4H
		[32;39H[33;4H[34;42H[35;4H[36;43H[37;4H[38;13H
	-home exam    
	T-home exam[10`e-home exam[11`rm-home exam[13` -home exam[14`pa-home ex[8@ am      [16`per-home exam[19` exam[8P [19`[C    [19`[59;36H[7m9pm 2.12 Mail[1[m[38;19H[39;4H[60;0;2;60p[40;1H[1M          [60;0;0;60p[58;1H.ul[39;4H[40;13H[41;4H[42;39H
[60;1HMark set[43;1H[60;1H[K  [H

an implementation of the ``version space'' concept learning technique
.NP[K  
ul
the Japanese initiatives in new generation computing.
[CLE
.NP[K  
.ul[K  
Demonstrations.
It is hoped to arrange demonstrations of
[CLB
.NP[K  
ul[K  
NEXPERT expert system shell
.NP[K  
ul
Xerox L\s-2ISP\s+2 Machine
[CNP
.ul[K  
Loops programming environment (film).
.LE[K  
NP
.ul[K  
Facilities.
VAXA[K  
LE
.bp[K  
sh "About the course"
.sp[K  
Winston's textbook is excellent and has been widely acclaimed.
I think that in the main it is quite understandable, probably too easy.
You should \fIstudy it carefully\fR (not just read it casually).
Set aside some time each week.[K  
Do some of the exercises.
The main function of the lectures is to take you through the text,
providing additional explanation where necessary.
There will not be time, however, to cover everything in lectures.
[Cp
This is not a course on programming, and we will not be talking much about
programming in lectures.
However, by the end of the course all students are expected to have a working
knowledge of the L\s-2ISP\s+2 language, and assignments and projects are to be
done in L\s-2ISP\s+2.
People well-educated in AI need to know the basics of
\fIboth\fR P\s-2ROLOG\s+2 and L\s-2ISP\s+2.
Each has strengths and weaknesses that it is important to understand, and
can only be appreciated properly through experience.
.pp[K  
Many students will have had some prior exposure to L\s-2ISP\s+2, and all are
well versed in P\s-2ROLOG\s+2.
You are expected to pick up L\s-2ISP\s+2 programming by yourself.
You do \fInot\fR need to become expert in L\s-2ISP\s+2.
There will be no exam questions involving tricky language details \(em
at most you might have to read some code or discuss pros and cons of AI
programming in L\s-2ISP\s+2 vs P\s-2ROLOG\s+2 vs P\s-2ASCAL\s+2.
[Cbp
sh "Planned timetable"[59;71H[7m8[m[H[Cbp
sh "Planned timetable"
.sp[K  
nf
ta \w'beginning  'u +3i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
.ul[K  
Week    Material covered        Reading Deadlines
[Cul
beginning
.sp[K  
\05 Jan Introduction; L\s-2ISP\s+2      AI Ch 1 Tue     Assignment 1 set
                L\s-2ISP\s+2 Ch 1-4
[Csp
12 Jan  Representations; blocks worlds  AI Ch 2 Tue     Assignment 2 set
                L\s-2ISP\s+2 Ch 4-7, 13
[Csp
19 Jan  Constraints     AI Ch 3 Tue     Assignment 1 due
.sp[K  
26 Jan  Searching       AI Ch 4 Tue     Assignment 2 due
                L\s-2ISP\s+2 Ch 11
.sp[K  
\02 Feb Control strategies; objects, Flavors    AI Ch 5 Tue     Project proposa\l due
                L\s-2ISP\s+2 Ch 16
.sp[K  
\09 Feb More on OOP (Prolog, Smalltalk) AI Ch 6
        Rule-based systems      L\s-2ISP\s+2 Ch 18
[Cs
16 Feb  \fI(reading week \(em no classes)\fR

23 Feb  \(em            Tue     Mid-term exam[K  
        More on rule-based systems[K  
.sp[K  
\02 Mar Logic and planning      AI Ch 7 Tue     Project interim report due
.sp[K  
\09 Mar Knowledge representation;       AI Ch 8[K  
        using frames; CD theory L\s-2ISP\s+2 Ch 22
.sp[K  
16 Mar  Understanding natural language  AI Ch 9
                L\s-2ISP\s+2 Ch 19-21[K  
.sp[K  
23 Mar  Vision???       AI Ch 10[K  
                (L\s-2ISP\s+2 Ch 10?)[K  
.sp[K  
30 Mar  Concept learning        AI Ch 11[K  
        Version-space technique[K  
.sp[K  
\06 Apr Learning rules  AI Ch 12[K  
        Summary
                        Fri     Project final report due[K  
.sp[K  
??? Apr Final exam (scheduled by Registrar)[K  
.fi[K  
.bp[K  
.sh "Bibliography"[K  
.sp[K  
Here is a representative selection of recent books on AI, with a bias towards
practical aspects.[K  [59;70H[7m20[m[H[60;0;2;60p[1;1H[30L                            [60;0;0;60p[1;1HAssessment
.ta \w'Winter Term    'u +\w'Midterm exam (in class time)    'u
.sp
Fall Term       Assignment      \0\07\(12%
.br
	Project:
.br
	\0\0\0\0progress report \0\05%
.br
	\0\0\0\0final report    \012\(12%
.br
	\0\0\0\0in-class presentation   \0\02\(12%
.br
	Take-home exam  \022\(12%
.sp
Winter Term     Class presentations     \0\07\(12%
.br
	Project:
.br
	\0\0\0\0progress report \0\05%
.br
	\0\0\0\0final report    \012\(12%
.br
	\0\0\0\0in-class presentation   \0\02\(12%
.br
	Term paper      \022\(12%
.sp
	____
.br
	\h'-\w'total  'u'total\ \ 100%[59;70H[7m 4[m[30;1H[59;35H[7m30pm 1.44[m[30;1H[60;1HWrote /vaxb.userb/profs/ian/courses/670/info.sheet[30;1H[60;0;0;60p[45;1H[14M       [H[3M                            [13;1H[17L                       [60;0;0;60p[60;1H[K  [HWinter Term     Class prese[8@ ntations[11;10Herm paper    

	____
.br
	\h'-\w'total  'u'total\ \ 100%
.bp
.sh "Planned timetable"
.sp
.nf
.ta \w'beginning  'u +3i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
.ul
Week    Material covered        Reading Deadlines
.ul
beginning
.sp
\05 Jan Introduction; L\s-2ISP\s+2      AI Ch 1 Tue     Assignment 1 set
		L\s-2ISP\s+2 Ch 1-4
.sp
[7m-----Emacs: info.sheet          2:30pm 1.44 Mail[1]   (Text Fill)---- 6%-------[m[59;3H[7m---Emacs: info.sheet          2:30pm 1.44 Mail[1]   (Text Fill)---- 6[m[15;1H[60;1HFind file: ~/courses/670/../551/info.sheet
[K  [H.pn 0[K  
ls1
.ce2[K  
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE[K  
[Csp2
.ps+2[K  
ce
CPSC 551 \(em Computer Graphics I[K  
[Cps-2
.sp3[K  
LB
.NP[K  
ul
Instructor.[K  
Ian H Witten,  MA\ 786,  220-6780[17;3Hp[K  
NP
ul
Office hours.[K  
Tuesdays and Thursdays 14.00-15.00
.sp[K  
NP
.ul[K  
Tutorial assistants.
Jeff Allan, MA\ 324, 220-7686, and Dave Maulsby, MA\ 358, 220-7683[K  
.sp[K  
NP[29;23H[7m<2>       2:30pm 1.44 Mail[1]   (Text Fill)----Top[m[H[60;1HI-search:[H[60;10H P ...[H[60;12H[K  [H[3`[60;12Hl ...[1;3H[60;13Ha ...[1;3H[60;14Hn ...[1;3H[60;15Hn ...[1;3H[60;16He ...[1;3H[60;17Hd ...[1;3H[60;18H[K  [1;3H
This is not a course on programming, and we will not be talking much about
programming in lectures.
However, by the end of the course all students are expected to have a working
knowledge of the C programing language, and assignments and projects are to be
coded in C.[K  
The text gives all examples in Pascal for pedagogical reasons only; part of the
assignment work involves demonstrating your understanding of algorithms by
recoding them.
[C is the principal modern graphics programming language in use today, and
anyone well-educated in computer graphics need to know how to use it and to
interface with programs written in it.
You are expected to pick up C programming by yourself; the TA will be more than
happy to help you with language constructs and points of syntax.
[Cbp
.sh "Planned timetable"
.sp[K  
nf
ta \w'beginning  'u +2.5i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u

Week    Material covered        Reading Deadlines
.ul[K  
beginning
[Csp
\07 Sep                 Thu     All assignments set
.sp[K  
14 Sep[K  

21 Sep[29;70H[7m66%[m[15;13H[60;1HMark set[K  [15;13H[60;1H[K  [15;13H
[60;1HMark set[15;1H[60;1H[K  [H.sp[K  
21 Sep[K  
.sp[K  
28 Sep                  Tue     Assignment 1 due[K  
.sp[K  
\05 Oct[K  
.sp[K  
12 Oct                  Thu     Assignment 2 due
.sp[K  
19 Oct                  Thu     Test 1[K  
.sp[K  
26 Oct[K  
.sp[K  
\02 Nov                 Tue     Assignment 3 due[15;3Hp[K  
\09 Nov
                        Thu     Reading days; no class
[Csp[K  
16 Nov                  Tue     Test 2
.sp[K  
23 Nov
.sp[K  
30 Nov
.sp[K  
\07 Dec                 Tue     Test 3
                        Thu     Assignment 4 due
[Cfi
[K  [29;70H[7mBot[m[H[Cfi
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [H
[60;0;2;60p[1;1H[29M                            [60;0;0;60p[30;17HL\s-2ISP\s+2 Ch 4-7, 13
.sp
19 Jan  Constraints     AI Ch 3 Tue     Assignment 1 due
.sp
26 Jan  Searching       AI Ch 4 Tue     Assignment 2 due
		L\s-2ISP\s+2 Ch 11
.sp
\02 Feb Control strategies; objects, Flavors    AI Ch 5 Tue     Project proposa\l due
		L\s-2ISP\s+2 Ch 16
.sp
\09 Feb More on OOP (Prolog, Smalltalk) AI Ch 6
	Rule-based systems      L\s-2ISP\s+2 Ch 18
.sp
16 Feb  \fI(reading week \(em no classes)\fR
.sp
23 Feb  \(em            Tue     Mid-term exam
	More on rule-based systems
.sp
\02 Mar Logic and planning      AI Ch 7 Tue     Project interim report due
.sp
\09 Mar Knowledge representation;       AI Ch 8
	using frames; CD theory L\s-2ISP\s+2 Ch 22
.sp
16 Mar  Understanding natural language  AI Ch 9
		L\s-2ISP\s+2 Ch 19-21
.sp
23 Mar  Vision???       AI Ch 10
		(L\s-2ISP\s+2 Ch 10?)[15;1H

[60;1HMark set[17;1H[60;0;2;60p[18;1H[39L                    [60;0;0;60p[18;1H.sp
.nf
.ta \w'beginning  'u +2.5i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
.ul
Week    Material covered        Reading Deadlines
.ul
beginning
.sp
\07 Sep                 Thu     All assignments set
.sp
14 Sep
.sp
21 Sep
.sp
28 Sep                  Tue     Assignment 1 due
.sp
\05 Oct
.sp
12 Oct                  Thu     Assignment 2 due
.sp
19 Oct                  Thu     Test 1
.sp
26 Oct
.sp
\02 Nov                 Tue     Assignment 3 due
.sp
\09 Nov
			Thu     Reading days; no class
.sp
16 Nov                  Tue     Test 2
.sp
23 Nov
.sp
30 Nov
.sp
\07 Dec                 Tue     Test 3
			Thu     Assignment 4 due
.fi
.sh "Planned timetable"[59;3H[7m**-Emacs: info.sheet          2:30pm 1.44 Mail[1]   (Text Fill)---- 5[m[56;1H



[K  [H.sp[K  
nf
.ta \w'beginning  'u +3i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
[Cul
Week    Material covered        Reading Deadlines
[Cul
beginning[K  
[Csp
\05 Jan Introduction; L\s-2ISP\s+2      AI Ch 1 Tue     Assignment 1 set
                L\s-2ISP\s+2 Ch 1-4
.sp[K  
12 Jan  Representations; blocks worlds  AI Ch 2 Tue     Assignment 2 set
	        L\s-2ISP\s+2 Ch 4-7, 13
[Csp
19 Jan  Constraints     AI Ch 3 Tue     Assignment 1 due
[Cs
26 Jan  Searching       AI Ch 4 Tue     Assignment 2 due
                L\s-2ISP\s+2 Ch 11
[Csp
\02 Feb Control strategies; objects, Flavors    AI Ch 5 Tue     Project proposa\l due
                L\s-2ISP\s+2 Ch 16[K  
[Csp
\09 Feb More on OOP (Prolog, Smalltalk) AI Ch 6
        Rule-based systems      L\s-2ISP\s+2 Ch 18
.sp[K  
16 Feb  \fI(reading week \(em no classes)\fR
.sp[K  
23 Feb  \(em            Tue     Mid-term exam
        More on rule-based systems

\02 Mar Logic and planning      AI Ch 7 Tue     Project interim report due[34;3H9 Mar Knowledge representation;       AI Ch 8
        using frames; CD theory L\s-2ISP\s+2 Ch 22
.sp[K  
16 Mar  Understanding natural language  AI Ch 9
                L\s-2ISP\s+2 Ch 19-21[K  

[C3 Mar  Vision???       AI Ch 10
                (L\s-2ISP\s+2 Ch 10?)
.sp[K  
30 Mar  Concept learning        AI Ch 11
        Version-space technique
.sp[K  
\06 Apr Learning rules  AI Ch 12
        Summary[K  
                        Fri     Project final report due
.sp[K  
??? Apr Final exam (scheduled by Registrar)
.fi[K  
b
.sh "Bibliography"[K  
.sp[K  
Here is a representative selection of recent books on AI, with a bias towards
practical aspects.[K  
[CLB
ti-4n[59;70H[7m11[m[H[CLB
ti-4n
Barr, A. and Feigenbaum, E.A. (Editors)  \c[K  
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,[K  
and \fIVolume II\fR, 1982.
.sp[K  
ti-4n
Bratko, I.[K  
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.
.sp[K  
.ti-4n[K  
Bundy, A.
\fIThe computer modelling of mathematical reasoning\fR.[K  
Academic Press, London, 1983.
.sp[K  
.ti-4n[K  
Bundy, A. (Editor)
[CfICatalogue of Artificial Intelligence tools\fR.[K  
Springer-Verlag, Berlin, 1984.
.sp[K  
ti-4n
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c[K  
\fIThe handbook of Artificial Intelligence Volume III\fR.
Kaufmann, Los Altos, CA, 1982.
.sp[K  
ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp[K  
ti-4n
Gevarter, W.B.[K  
\fIIntelligent machines\fR.[K  
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp[K  
.ti-4n[K  
Michalski, R.S., Carbonnell, J.G., and Mitchell, T.M. (Editors)  \c
\fIMachine Learning\fR, Tioga, Palo Alto, CA, 1983, and
\fIMachine Learning Volume II\fR,[K  
Kaufmann, Los Altos, CA, 1986.
.sp[K  
.ti-4n[K  
Nilsson, N.J.
[CfIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.
.sp[K  
ti-4n
Schank, R.C. and Riesbeck, C.K.[K  
\fIInside computer understanding: five programs plus miniatures\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.[53;3Hp[K  
ti-4n
Sowa, J.F.[K  
\fIConceptual structures\fR.
Addison-Wesley, Reading, Massachusetts, 1984.
[Csp[K  [59;70H[7m22[m[H[59;36H[7m1pm 1.42 Mail[2[m[HAddison-Wesley, Reading, Massachusetts, 1984.
[Csp[K  
.ti-4n[K  
Waterman, D.A.[K  
\fIA guide to expert systems\fR.[K  
Addison-Wesley, Reading, MA, 1985.


Wilensky, R.[10;4HL\s-2ISP\s+2craft\fR.  W.W.Norton, New York, 1984.[K  
.sp[K  
ti-4n
Winograd, T.
\fILanguage as a cognitive process.  Volume I \(em Syntax\fR.
Addison-Wesley, Reading, Massachusetts, 1984.[K  
.sp[K  
ti-4n
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp[K  
ti-4n
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.[K  
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.LE[K  
bp 0
ce2[K  
THE UNIVERSITY OF CALGARY[K  
DEPARTMENT OF COMPUTER SCIENCE[K  
.sp2[K  
ps+2
ce[K  
CPSC 533 \(em Artificial Intelligence
.ps-2[K  
.sh "Assignment 1.  Introduction to \s-2LISP\s+2"
(10% of course marks)
[Csp[K  
Fully commented code, together with answers to the questions posed in Q.3,
must be handed in on Tuesday January 20th.[K  
There will be[K  
.ul[K  
no extension of this deadline, except for good, documented, medical reasons.
[CLB "1.  "
.NI "1.  "[K  
1.\ \ \c[K  
Write a recursive function \s-2POWER-OF-TWO\s+2 that computes the
\fIn\fRth power of two, eg
(\s-2POWER-OF-TWO\s+2 100) returns 1267650600228229401496703205376.
[A simple test of function-definition and recursion.]
.sp[K  
.NI "1.  "[K  
2.\ \ \c
Write your own version of the Lisp function \s-2ASSOC\s+2.
\s-2ASSOC\s+2 ``looks up'' a value in a list of lists, and returns the first
list it finds whose first element matches the desired value.
For example,[K  
(\s-2ASSOC\s+2 '\s-2Y\s+2 '((\s-2X\s+2 \s-2A\s+2) (\s-2Y\s+2 \s-2B\s+2) (\s-2Z\\[70`[7m3[m[H.sp[K  
nf
a \w'beginning  'u +3i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
.ul[K  
Week    Material covered        Reading Deadlines
.ul[K  
beginning
[Csp[K  
\05 Jan Introduction; L\s-2ISP\s+2      AI Ch 1 Tue     Assignment 1 set
                L\s-2ISP\s+2 Ch 1-4[K  

12 Jan  Representations; blocks worlds  AI Ch 2 Tue     Assignment 2 set
                L\s-2ISP\s+2 Ch 4-7, 13
.sp[K  
19 Jan  Constraints     AI Ch 3 Tue     Assignment 1 due

26 Jan  Searching       AI Ch 4 Tue     Assignment 2 due
                L\s-2ISP\s+2 Ch 11
.sp[K  
\02 Feb Control strategies; objects, Flavors    AI Ch 5 Tue     Project proposa\l due
                L\s-2ISP\s+2 Ch 16
.sp[K  
09 Feb More on OOP (Prolog, Smalltalk) AI Ch 6
        Rule-based systems      L\s-2ISP\s+2 Ch 18[K  
[Csp
16 Feb  \fI(reading week \(em no classes)\fR
[Csp[K  
23 Feb  \(em            Tue     Mid-term exam
        More on rule-based systems[31;4H[K  
\02 Mar Logic and planning      AI Ch 7 Tue     Project interim report due
[Csp
\09 Mar Knowledge representation;       AI Ch 8
        using frames; CD theory L\s-2ISP\s+2 Ch 22[36;3Hp[K  
16 Mar  Understanding natural language  AI Ch 9
                L\s-2ISP\s+2 Ch 19-21
.sp[K  
23 Mar  Vision???       AI Ch 10[K  
                (L\s-2ISP\s+2 Ch 10?)
[Csp
30 Mar  Concept learning        AI Ch 11[K  
        Version-space technique
[Csp[K  
\06 Apr Learning rules  AI Ch 12
        Summary[K  
                        Fri     Project final report due
.sp[K  
??? Apr Final exam (scheduled by Registrar)[K  
[Cfi
bp[K  
.sh "Bibliography"
.sp[K  
Here is a representative selection of recent books on AI, with a bias towards
practical aspects.[K  
.LB[K  
.ti-4n[K  [59;70H[7m11[m
M[1;2HLB
ti-4n
Barr, A. and Feigenbaum, E.A. (Editors)  \c[K  
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,[K  
and \fIVolume II\fR, 1982.
.sp[K  
ti-4n
Bratko, I.[K  
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.
.sp[K  
.ti-4n[K  
Bundy, A.
\fIThe computer modelling of mathematical reasoning\fR.[K  
Academic Press, London, 1983.
.sp[K  
.ti-4n[K  
Bundy, A. (Editor)
[CfICatalogue of Artificial Intelligence tools\fR.[K  
Springer-Verlag, Berlin, 1984.
.sp[K  
ti-4n
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c[K  
\fIThe handbook of Artificial Intelligence Volume III\fR.
Kaufmann, Los Altos, CA, 1982.
.sp[K  
ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp[K  
ti-4n
Gevarter, W.B.[K  
\fIIntelligent machines\fR.[K  
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp[K  
.ti-4n[K  
Michalski, R.S., Carbonnell, J.G., and Mitchell, T.M. (Editors)  \c
\fIMachine Learning\fR, Tioga, Palo Alto, CA, 1983, and
\fIMachine Learning Volume II\fR,[K  
Kaufmann, Los Altos, CA, 1986.
.sp[K  
.ti-4n[K  
Nilsson, N.J.
[CfIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.
.sp[K  
ti-4n
Schank, R.C. and Riesbeck, C.K.[K  
\fIInside computer understanding: five programs plus miniatures\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.[53;3Hp[K  
ti-4n
Sowa, J.F.[K  
\fIConceptual structures\fR.
Addison-Wesley, Reading, Massachusetts, 1984.
[Csp[K  [59;70H[7m22[m[H
M[Csp
nf[K  
.ta \w'beginning  'u +3i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
.ul[K  
Week    Material covered        Reading Deadlines
.ul[K  
beginning
[Csp[K  
\05 Jan Introduction; L\s-2ISP\s+2      AI Ch 1 Tue     Assignment 1 set
                L\s-2ISP\s+2 Ch 1-4[K  
.sp[K  
12 Jan  Representations; blocks worlds  AI Ch 2 Tue     Assignment 2 set
                L\s-2ISP\s+2 Ch 4-7, 13
.sp[K  
19 Jan  Constraints     AI Ch 3 Tue     Assignment 1 due
.sp[K  
26 Jan  Searching       AI Ch 4 Tue     Assignment 2 due
                L\s-2ISP\s+2 Ch 11
.sp[K  
02 Feb Control strategies; objects, Flavors    AI Ch 5 Tue     Project proposa\l due[K  
                L\s-2ISP\s+2 Ch 16
[Csp[K  
\09 Feb More on OOP (Prolog, Smalltalk) AI Ch 6
        Rule-based systems      L\s-2ISP\s+2 Ch 18[K  
.sp[K  
16 Feb  \fI(reading week \(em no classes)\fR
[Csp[K  
23 Feb  \(em            Tue     Mid-term exam[K  
        More on rule-based systems[K  
.sp[K  
\02 Mar Logic and planning      AI Ch 7 Tue     Project interim report due
[Csp[K  
\09 Mar Knowledge representation;       AI Ch 8
        using frames; CD theory L\s-2ISP\s+2 Ch 22
.sp[K  
16 Mar  Understanding natural language  AI Ch 9
                L\s-2ISP\s+2 Ch 19-21
.sp[K  
23 Mar  Vision???       AI Ch 10[K  
                (L\s-2ISP\s+2 Ch 10?)
.sp[K  
30 Mar  Concept learning        AI Ch 11
        Version-space technique
.sp[K  
06 Apr Learning rules  AI Ch 12[K  
        Summary[K  
                        Fri     Project final report due
[Csp[K  
??? Apr Final exam (scheduled by Registrar)
.fi[K  
.bp[K  
h "Bibliography"
[Csp[K  
Here is a representative selection of recent books on AI, with a bias towards
practical aspects.[K  
.LB[K  
ti-4n[59;70H[7m11[m
MMMMMMM[60;0;2;60p[1;1H[51M                            [60;0;0;60p[8;1HBarr, A. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,
and \fIVolume II\fR, 1982.
.sp
.ti-4n
Bratko, I.
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.
.sp
.ti-4n
Bundy, A.
\fIThe computer modelling of mathematical reasoning\fR.
Academic Press, London, 1983.
.sp
.ti-4n
Bundy, A. (Editor)
\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.
.sp
.ti-4n
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence Volume III\fR.
Kaufmann, Los Altos, CA, 1982.
.sp
.ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp
.ti-4n
Gevarter, W.B.
\fIIntelligent machines\fR.
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp
.ti-4n
Michalski, R.S., Carbonnell, J.G., and Mitchell, T.M. (Editors)  \c
\fIMachine Learning\fR, Tioga, Palo Alto, CA, 1983, and
\fIMachine Learning Volume II\fR,
Kaufmann, Los Altos, CA, 1986.
.sp
.ti-4n
Nilsson, N.J.
\fIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.
.sp
.ti-4n
Schank, R.C. and Riesbeck, C.K.
\fIInside computer understanding: five programs plus miniatures\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.
.sp[H[Cs
Winter Term     Class presentations     \0\07\(12%
[Cbr
        Project:[K  
.br[K  
        \0\0\0\0progress report \0\05%
[Cbr[K  
        \0\0\0\0final report    \012\(12%[K  
.br[K  
        \0\0\0\0in-class presentation   \0\02\(12%
.br[K  
        Term paper      \022\(12%
[Csp[K  
        ____
.br[K  
        \h'-\w'total  'u'total\ \ 100%[K  
[Cb
sh "Planned timetable"
.sp[K  
.nf[K  
.ta \w'beginning  'u +2.5i +\w'L\s-2ISP\s+2 Ch 0-0, 00  'u +\w'Mon 'u
[Cul
Week    Material covered        Reading Deadlines
.ul[K  
beginning[K  
.sp[K  
\07 Sep                 Thu     All assignments set
[Csp[K  
14 Sep[K  
.sp[K  
21 Sep[K  

28 Sep                  Tue     Assignment 1 due
.sp[K  
05 Oct[K  
.sp[K  
12 Oct                  Thu     Assignment 2 due
[Csp[K  
19 Oct                  Thu     Test 1
.sp[K  
26 Oct[K  

\02 Nov                 Tue     Assignment 3 due
.sp[K  
09 Nov[K  
                        Thu     Reading days; no class
.sp[K  
16 Nov                  Tue     Test 2
[Csp[K  
23 Nov[K  
.sp[K  
30 Nov[K  

\07 Dec                 Tue     Test 3
                        Thu     Assignment 4 due
.fi[K  
.bp[K  
h "Bibliography"[59;70H[7m 6[m
MMMMM[31;1HMMMM[4`	[K  

	

	

						[3`[7`[K  

	

[7`[K  [59;36H[7m2pm 1.13 Mail[1[m[37;7H

	[K  

	

	[K  

	
[60;0;2;60p[46;1H[1M       [60;0;0;60p[58;1H.sp[46;1H
[7`[K  





	[K  [60;0;2;60p[54;1H[1M   [60;0;0;60p[53;8H                 Thu     Assignment 4 due




Here is a representative selection of recent books on AI, with a bias towards[53;8H[K  


		[C[C[58;78H[H
21 Sep[K  
[Csp
28 Sep[K  
[Csp
\05 Oct[K  
[Csp
12 Oct[K  
[Csp
19 Oct[K  
[Csp
26 Oct[K  

\02 Nov[K  
[Csp
\09 Nov[K  
[Cs
16 Nov[K  

23 Nov
[Csp[K  
30 Nov
.sp[K  
\07 Dec
.fi[K  
b
.sh "Bibliography"

Here is a representative selection of recent books on AI, with a bias towards
practical aspects.
.LB[K  
ti-4n
Barr, A. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,
and \fIVolume II\fR, 1982.
.sp[K  
ti-4n
Bratko, I.
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.

.ti-4n[K  
Bundy, A.
[CfIThe computer modelling of mathematical reasoning\fR.
Academic Press, London, 1983.
.sp[K  
ti-4n
Bundy, A. (Editor)
\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.

.ti-4n[K  
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence Volume III\fR.
Kaufmann, Los Altos, CA, 1982.

.ti-4n[K  [59;70H[7m10[m[30;19H[29;78H[28;4H
[C			[38`[45`[51`[54`	[K  [60;0;2;60p[30;1H[1M              [60;0;0;60p[29;57Hpractical aspects.[58;1HCharniak E., Riesbeck, C.K. and McDermott, D.V.[29;57H[K  .[60;1HWrote /vaxb.userb/profs/ian/courses/670/info.sheet[29;58H[59;3H[7m--[m[29;58H[60;1H[K  [29;58H[60;0;2;60p[14;1H[15L                      [60;0;0;60p[2;1H\09 Nov

16 Nov

23 Nov[K  

30 Nov

\07 Dec
[Cfi
.bp[K  
h "Bibliography"
.sp
Here is a representative selection of recent books on AI.
.LB
.ti-4n
Barr, A. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,
and \fIVolume II\fR, 1982.
.sp
.ti-4n
Bratko, I.
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.
.sp[60;1HFind file: ~/courses/670/[28;1H.ti-4n
[K  [7m-----Emacs: info.sheet          2:32pm 1.13 Mail[1]   (Text Fill)----10%-------[m[60;26Hsynopsis
[K  [1;2HLB
.NP[K  
Dimensions of classification of machine learning problems and systems
.NP[K  
Theoretical foundations of inductive inference
.NP[K  
Similarity-based learning: the generalization-as-search paradigm and its
implementations
[CNP
Explanation-based learning and systems which embody it
[CNP
Exploration and discovery mechanisms, functional induction and theory formation
[CNP[K  
Learning procedural knowledge
.NP[K  
Cognitive aspects of human learning.
[CLE[K  
The text for this part will be[K  
.LB[K  
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.
[CLE[K  
Other relevant books include
.LB[K  
Forsyth, R. and Rada, R. (1986)[K  
[Cul
Machine learning: applications in expert systems and information retrieval.[29;13H[7msynopsis            2:32pm 1.13 Mail[1]   (Text Fill)----23[m[17;1H[29;36H[7m3pm 1.58[m[59;36H[7m3pm 1.58[m[17;1H[44;58H[30;2Hti-4n
Bundy, A.
\fIThe computer modelling of mathematical reasoning\fR.
Academic Press, London, 1983.

.ti-4n
Bundy, A. (Editor)
\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.
.sp[K  
ti-4n
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence Volume III\fR.
Kaufmann, Los Altos, CA, 1982.
.sp[K  
ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.[K  
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp[K  
.ti-4n[K  
Gevarter, W.B.
\fIIntelligent machines\fR.
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp[K  
.ti-4n[K  
Michalski, R.S., Carbonnell, J.G., and Mitchell, T.M. (Editors)  \c
\fIMachine Learning\fR, Tioga, Palo Alto, CA, 1983, and
\fIMachine Learning Volume II\fR,[59;71H[7m4[m[30;1H[17;1H








[60;1HMark set[26;1H[60;1H[K  [27;1H
[60;0;32;60p[1;1H[14M                            [60;0;0;60p[15;1HEllis Horwood,
Chichester, England.
.sp
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
.ul
Machine learning -- an artificial intelligence approach.
Tioga, Palo Alto, CA.
.sp
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
.ul
Machine learning -- a guide to current research.
Kluwer, Boston, MA.
.sp
Osherson, D.N., Stob, D. and Weinstein, S. (1986)[29;70H[7m34[m[16;1H
[30;1H

[48;1H


[60;1HMark set[51;1H[60;0;2;60p[51;1H[5L    [60;0;0;60p[51;1HForsyth, R. and Rada, R. (1986)
.ul
Machine learning: applications in expert systems and information retrieval.
Ellis Horwood,
Chichester, England.[59;3H[7m**[m[56;1H



[K  [56;1H[1@ .[1@ s[1@ p[60;0;2;60p[57;1H[1L [60;0;0;60p[56;4H[K  
Gevarter, W.B.
[1@ .[1@ t[1@ i[1@ -[1@ 4[1@ n[K  
Gevarter, W.B.[K  
[60;0;2;60p[31;1H[15M              [60;0;0;60p[44;1H\fIIntelligent machines\fR.
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp
.ti-4n
Michalski, R.S., Carbonnell, J.G., and Mitchell, T.M. (Editors)  \c
\fIMachine Learning\fR, Tioga, Palo Alto, CA, 1983, and
\fIMachine Learning Volume II\fR,
Kaufmann, Los Altos, CA, 1986.
.sp
.ti-4n
Nilsson, N.J.
\fIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.
.sp
.ti-4n[59;71H[7m7[m[44;1H[17;1H[C[4`
[60;1HMark set[18;1H[60;1H[K  [19;1H






[29;36H[7m4pm 1.8[m[59;36H[7m4pm 1.8[m[26;1H
[44;1H



[60;1HMark set[48;1H[60;0;2;60p[49;1H[9L     [60;0;0;60p[60;0;3;60p[48;1H[9L      [60;0;0;60p[48;1HR.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
.ul
Machine learning -- an artificial intelligence approach.
Tioga, Palo Alto, CA.
.sp
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
.ul
Machine learning -- a guide to current research.
Kluwer, Boston, MA.



[K  MMM[K  [60;0;2;60p[57;1H[1M [60;0;0;60p[58;1H\fIMachine Learning Volume II\fR,
M[60;0;2;60p[57;1H[1M [60;0;0;60p[58;1HKaufmann, Los Altos, CA, 1986.
M[K  [60;0;2;60p[57;1H[1M [60;0;0;60p[58;1H.sp
M[K  [60;0;2;60p[57;1H[1M [60;0;0;60p[58;1H.ti-4n
MMMMM[1@ .[1@ t[1@ i[1@ -[1@ 4[1@ n[60;0;2;60p[54;1H[1L   [60;0;0;60p[53;7H[K  
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
[1@ .[1@ s[1@ p[60;0;2;60p[55;1H[1L  [60;0;0;60p[54;4H[K  
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
[1@ .[1@ t[1@ i[1@ -[1@ 4[1@ n[60;0;2;60p[56;1H[1L  [60;0;0;60p[55;7H[K  
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
MM[27;1HMMMMMMMMMMMMMMMMMMMMM[60;1HMark set[6;1H[60;1H[K  [7;1H

[54;1H





Mark set[54;1HR.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.[K  
[Csp
.ti-4n[K  
M


[K  MM[60;0;2;60p[30;1H[15M              [60;0;0;60p[44;1HT.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
.ul
Machine learning -- a guide to current research.
Kluwer, Boston, MA.
.sp
.ti-4n
Nilsson, N.J.
\fIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.
.sp
.ti-4n
Schank, R.C. and Riesbeck, C.K.
\fIInside computer understanding: five programs plus miniatures\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.
.sp[59;70H[7m20[m[45;1H







[K  [60;0;2;60p[53;1H[2M   [60;0;0;60p[57;1H.ti-4n
Sowa, J.F.

Mark set[53;1H[60;0;2;60p[53;1H[4L   [60;0;0;60p[53;1H.sp
.ti-4n
.sp
.ti-4n



[K  [56;1HM[9;1H[1;2Hsp
Osherson, D.N., Stob, D. and Weinstein, S. (1986)
[Cul
Systems that learn.[K  
MIT Press, Cambridge, MA.
.sp[K  
.ul[K  
Proceedings of the Fourth International Workshop on Machine Learning
(June, 1987).
Morgan Kaufmann, Los Altos, CA.[11;3HE
.rh "Artificial Intelligence."[K  
This part will review the foundations of artificial intelligence and
illustrate the problem of relating formal systems to human intelligence by[K  
examining some key aspects of knowledge representation.
In particular, the recently proposed theory of situational semantics
will be studied in some detail to bring into focus the problems involved in
representing meaning.[K  
[CLB
.NP[K  
he AI hypothesis: that human thinking and machine computing are radically the
same
.NP[K  
Knowledge representation case study 1:  inheritance systems
.NP[K  
nowledge representation case study 2:  uncertain knowledge
[CNP
A theory of meaning: situational semantics.  Abstract situations,[29;70H[7m5[m[H[29;36H[7m5pm 1.27 Mail[2[m[59;36H[7m5pm 1.27 Mail[2[m[H
[60;1HMark set[H
[60;1H[K  [H









[55;1H




Mark set[55;1H[60;0;2;60p[30;1H[20M              




[9L            [60;0;0;60p[35;1HOsherson, D.N., Stob, D. and Weinstein, S. (1986)
.ul
Systems that learn.
MIT Press, Cambridge, MA.
.sp
.ul
Proceedings of the Fourth International Workshop on Machine Learning
(June, 1987).
Morgan Kaufmann, Los Altos, CA.




Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.
.sp
.ti-4n
Sowa, J.F.
\fIConceptual structures\fR.
Addison-Wesley, Reading, Massachusetts, 1984.
.sp
.ti-4n
Waterman, D.A.
\fIA guide to expert systems\fR.
Addison-Wesley, Reading, MA, 1985.[59;71H[7m4[m[44;1H[60;1H[K  [43;1HMMM[C.ult.uli.ul-.ul4.uln.ul[60;0;2;60p[41;1H[1L         [60;0;0;60p[40;7H[K  
.ul
[11;1H[1;2HNP
A theory of meaning: situational semantics.  Abstract situations,
events, event-types, roles, constraints, constraint-types.
Linguistic meaning, attitudes.
Representing mental states and events.
[CLE
The text for this part will be
.LB[K  
Barwise, J. and Perry, J. (1983)
.ul[K  
Situations and attitudes.
MIT Press, Cambridge, MA.[K  
.LE[K  
Other relevant books include[K  
.LB[K  
Cohen, P.R. (1985)[K  
.ul[K  
Heuristic reasoning about uncertainty: an artificial intelligence approach.
Pitmans Advanced Program, London, England.
[Csp
Haugeland, J. (1985)[K  
.ul[K  
Artificial intelligence: the very idea.
MIT Press, Cambridge, MA.[K  
[Csp
anal, L.N. and Lemmer, J.F.\0(Editors) (1986)[K  
[Cul
Uncertainty in artificial intelligence.[K  [29;70H[7m78[m[H







[60;0;32;60p[1;1H[8M                            [60;0;0;60p[21;1HNorth Holland, Amsterdam.
.sp
Touretzky, D. (1986)
.ul
The mathematics of inheritance systems.
Pitman, London.
.LE

[7m**-Emacs: synopsis            2:35pm 1.27 Mail[2]   (Text Fill)----Bot[m[H[60;1HUndo![HOsherson, D.N., Stob, D. and Weinstein, S. (1986)[3;2Hystems that learn.[K  [5;2Hsp
.ul[K  
Proceedings of the Fourth International Workshop on Machine Learning
(June, 1987).[K  
Morgan Kaufmann, Los Altos, CA.
.LE[K  
.rh "Artificial Intelligence."[K  
This part will review the foundations of artificial intelligence and
illustrate the problem of relating formal systems to human intelligence by
examining some key aspects of knowledge representation.
In particular, the recently proposed theory of situational semantics
will be studied in some detail to bring into focus the problems involved in
representing meaning.
.LB[K  
NP
The AI hypothesis: that human thinking and machine computing are radically the
same[K  
NP
Knowledge representation case study 1:  inheritance systems
[CNP
Knowledge representation case study 2:  uncertain knowledge
.NP[K  
A theory of meaning: situational semantics.  Abstract situations,
events, event-types, roles, constraints, constraint-types.[29;3H[7m---Emacs: synopsis            2:35pm 1.27 Mail[2]   (Text Fill)----54%[m[H[60;0;0;60p[1;1H[26M                            

[26L                           [60;0;0;60p[60;1H[K  [H

Linguistic meaning, attitudes.
Representing mental states and events.
.LE
The text for this part will be
.LB
Barwise, J. and Perry, J. (1983)
.ul
Situations and attitudes.
MIT Press, Cambridge, MA.
.LE
Other relevant books include
.LB
Cohen, P.R. (1985)
.ul
Heuristic reasoning about uncertainty: an artificial intelligence approach.
Pitmans Advanced Program, London, England.
.sp
Haugeland, J. (1985)
.ul
Artificial intelligence: the very idea.
MIT Press, Cambridge, MA.
.sp
Kanal, L.N. and Lemmer, J.F.\0(Editors) (1986)
.ul
Uncertainty in artificial intelligence.
North Holland, Amsterdam.[29;70H[7m78[m[H






[60;1HMark set[8;1H[60;1H[K  [9;1H


[41;1H[30;1HMachine learning: applications in expert systems and information retrieval.
Ellis Horwood,[K  
Chichester, England.[K  


Gevarter, W.B.[K  
\fIIntelligent machines\fR.
Prentice-Hall, Englewood Cliffs, NJ, 1985.
.sp[K  
ti-4n
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)

Machine learning -- an artificial intelligence approach.[K  
Tioga, Palo Alto, CA.
.sp[K  
ti-4n
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.[K  
.sp[K  
ti-4n
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
.ul[K  
Machine learning -- a guide to current research.
Kluwer, Boston, MA.[K  


Nilsson, N.J.[K  [58;4HPrinciples of artificial intelligence\fR.[59;70H[7m18[m
M[30;1HBratko, I.[K  
\fIP\s-2ROLOG\s+2 programming for artificial intelligence\fR.
Addison-Wesley, Wokingham, England, 1986.


Bundy, A.[K  [36;4HThe computer modelling of mathematical reasoning\fR.
Academic Press, London, 1983.[K  


Bundy, A. (Editor)[K  
\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.[K  
.sp[K  
ti-4n
Cohen, P.R. and Feigenbaum, E.A. (Editors)  \c
\fIThe handbook of Artificial Intelligence Volume III\fR.[K  
Kaufmann, Los Altos, CA, 1982.[K  
.sp[K  
ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.[30;1H.sp[K  
26 Oct[K  
.sp[K  
\02 Nov
[Csp[K  
\09 Nov[K  
.sp[K  
16 Nov[K  

23 Nov
.sp[K  
30 Nov[K  
.sp[K  
\07 Dec
[Cfi[K  
.bp[K  
.sh "Bibliography"[K  
.sp[K  
Here is a representative selection of recent books on AI.
[CLB[K  
.ti-4n[K  
Barr, A. and Feigenbaum, E.A. (Editors)  \c[K  
\fIThe handbook of Artificial Intelligence\fR.
Kaufmann, Los Altos, CA, \fIVolume I\fR, 1981,[K  
and \fIVolume II\fR, 1982.


Bratko, I.[K  [58;5H\s-2ROLOG\s+[17@ 2 programming for[59;71H[7m0[m
M[29;36H[7m6pm 2.43[m[59;36H[7m6pm 2.43[m
MM


Mark set[57;1H[60;0;2;60p[31;1H[17M              [40;1H[4L          [60;0;0;60p[40;1HBarwise, J. and Perry, J. (1983)
.ul
Situations and attitudes.
MIT Press, Cambridge, MA.


Addison-Wesley, Wokingham, England, 1986.
.sp
.ti-4n
Bundy, A.
\fIThe computer modelling of mathematical reasoning\fR.
Academic Press, London, 1983.
.sp
.ti-4n
Bundy, A. (Editor)
\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.
.sp
.ti-4n[59;71H[7m1[m[44;1H[60;1H[K  [44;1H[1@ .[1@ s[1@ p[60;0;2;60p[45;1H[1L       [60;0;0;60p[44;4H[K  
Bratko, I.
[1@ .[1@ t[1@ i[1@ -[60;0;2;60p[46;1H[1L       [60;0;0;60p[45;5H4n[K  
Bratko, I.
[12;1H


[60;1HMark set[15;1H[60;1H[K  [18;1H
[46;1H[30;1H\fICatalogue of Artificial Intelligence tools\fR.
Springer-Verlag, Berlin, 1984.[K  
[Csp

Cohen, [3@ P.R[35;43H Volume III\fR.[36;26H1982.[K  
.sp[K  
ti-4n
Charniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp[K  
.ti-4n[K  
Forsyth, R. and Rada, R. (1986)
[Cul[K  
Machine learning: applications in expert systems and information retrieval.
Ellis Horwood,[K  
Chichester, England.[K  


Gevarter, W.B.[52;4HIntelligent machines\fR.[K  
Prentice-Hall, Englewood Cliffs, NJ, 1985.


R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
.ul[K  
Machine learning -- an artificial intelligence approach.
		[7m5[m[30;1H








[60;1HMark set[39;1H[60;0;2;60p[39;1H[4L          [60;0;0;60p[39;1HCohen, P.R. (1985)
.ul
Heuristic reasoning about uncertainty: an artificial intelligence approach.
Pitmans Advanced Program, London, England.
[60;1H[K  [43;1H[1@ .[1@ s[1@ p[60;0;2;60p[44;1H[1L        [60;0;0;60p[43;4H[K  
Charniak E., Riesbeck, C.K. and McDermott, D.V.
[1@ .[1@ t[1@ i[1@ -[1@ 4[1@ n[60;0;2;60p[45;1H[1L       [60;0;0;60p[44;7H[K  
Charniak E., Riesbeck, C.K. and McDermott, D.V.
MM[60;1HMark set[43;1H[60;1H[K  [44;1H



[60;0;2;60p[43;1H[5M        [60;0;0;60p[54;1HPrentice-Hall, Englewood Cliffs, NJ, 1985.
.sp
.ti-4n
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
.ul[43;1HMMMMMMMMMMM[60;1HMark set[32;1H[60;0;2;60p[44;1H[5L        [60;0;0;60p[60;0;12;60p[34;1H[5L            [60;0;0;60p[34;1HCharniak E., Riesbeck, C.K. and McDermott, D.V.
\fIArtificial intelligence programming\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980.
.sp
.ti-4n
M[29;36H[7m7pm 1.97 Mail[1[m[59;36H[7m7pm 1.97 Mail[1[m[37;1H[60;1H[K  [30;1HGevarter, W.B.[K  
\fIIntelligent machines\fR.[K  
Prentice-Hall, Englewood Cliffs, NJ, 1985.
[Csp[K  
.ti-4n[K  
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
.ul[K  
Machine learning -- an artificial intelligence approach.
Tioga, Palo Alto, CA.
.sp[K  
.ti-4n[K  
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.
.sp[K  
ti-4n
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)[K  
.ul[K  
Machine learning -- a guide to current research.
Kluwer, Boston, MA.
.sp[K  
ti-4n
Nilsson, N.J.[K  
\fIPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.


Osherson, D.N., Stob, D. and Weinstein, S. (1986)
.ul[K  [59;70H[7m21[m[30;1H


[K  [60;0;2;60p[33;1H[1M             [60;0;0;60p[58;1HSystems that learn.[33;1H[60;0;2;60p[33;1H[1M             [60;0;0;60p[58;1HMIT Press, Cambridge, MA.[33;1H[60;1HMark set[33;1H[60;0;2;60p[34;1H[2L            [60;0;0;60p[35;1H[60;0;2;60p[36;1H[2L            [60;0;0;60p[60;0;23;60p[33;1H[4L             [60;0;0;60p[33;1H.sp
.ti-4n
.sp
.ti-4n
[60;1H[K  [36;1HM[19;1H
[60;1HMark set[20;1H[60;1H[K  [21;1H






[60;0;32;60p[1;1H[14M                            [60;0;0;60p[15;1H.sp
Touretzky, D. (1986)
.ul
The mathematics of inheritance systems.
Pitman, London.
.LE[29;70H[7mBot[m[15;1H[35;1H[60;1HMark set[35;1H[60;0;2;60p[38;1H[9L           [60;0;0;60p[60;0;14;60p[35;1H[9L            [60;0;0;60p[35;1HHaugeland, J. (1985)
.ul
Artificial intelligence: the very idea.
MIT Press, Cambridge, MA.
.sp
Kanal, L.N. and Lemmer, J.F.\0(Editors) (1986)
.ul
Uncertainty in artificial intelligence.
North Holland, Amsterdam.
[60;1H[K  [43;1HMMM[1@ .[1@ t[1@ i[1@ -[1@ 4[1@ n[60;0;2;60p[41;1H[1L         [60;0;0;60p[40;7H[K  
Kanal, L.N. and Lemmer, J.F.\0(Editors) (1986)
[60;0;2;60p[43;1H[11M        [31;1H[7L              [54;1H[2L   [60;0;0;60p[30;1H.ti-4n[K  
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
.ul
Machine learning -- a guide to current research.
Kluwer, Boston, MA.
.sp
.ti-4n
Nilsson, N.J.[38;4HPrinciples of artificial intelligence\fR.
Tioga, Palo Alto, CA, 1980.[K  


Osherson, D.N., Stob, D. and Weinstein, S. (1986)

Systems that learn.[K  



.ul[K  
Proceedings of the Fourth International Workshop on Machine Learning
(June, 1987).[K  



Schank, R.C. and Riesbeck, C.K.
\fIInside computer understanding: five programs plus miniatures\fR.
Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1981.[K  
.sp
.ti-4n[59;71H[7m5[m[30;1H[60;1HAuto-saving...[30;1H[60;15Hdone[30;1H[60;1H[K  [30;2Hsp[K  
.ti-4n[K  
Sowa, J.F.
\fIConceptual structures\fR.[K  
Addison-Wesley, Reading, Massachusetts, 1984.


Waterman, D.A.[38;4HA guide to expert systems\fR.[K  
Addison-Wesley, Reading, MA, 1985.


Wilensky, R.[K  
\fIL\s-2ISP\s+2craft\fR.  W.W.Norton, New York, 1984.
.sp[K  
.ti-4n[K  
Winograd, T.
\fILanguage as a cognitive process.  Volume I \(em Syntax\fR.
Addison-Wesley, Reading, Massachusetts, 1984.
.sp[K  
.ti-4n[K  
Winston, P.H.[K  
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp[K  
.ti-4n[K  
Winston, P.H. & Horn, B.K.P.[K  
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).[59;70H[7m30[m[30;1H




[K  [60;0;2;60p[35;1H[1M            [60;0;0;60p[58;1H.LE[35;1H[K  [60;0;2;60p[35;1H[1M            [60;0;0;60p[58;1H.bp 0[35;1H[60;1HMark set[35;1H[60;0;2;60p[36;1H[4L            [60;0;0;60p[60;1H[K  [35;1H.sp[K  
.ti-4n
.sp
.ti-4n
Waterman, D.A.
MM[15;1H
[60;1HMark set[16;1H[60;1H[K  [17;1H


[37;1H[60;1HMark set[37;1H[60;0;2;60p[40;1H[4L          [60;0;0;60p[60;0;17;60p[37;1H[4L           [60;0;0;60p[37;1HTouretzky, D. (1986)
.ul
The mathematics of inheritance systems.
Pitman, London.
[60;1H[K  [29;36H[7m8pm 1.48[m
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp[K  
.ti-4n[K  
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
[CLE
.bp 0[K  
.ce2[K  
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE
.sp2[K  
.ps+2[K  
.ce[K  
CPSC 533 \(em Artificial Intelligence
[Cps-2[K  
.sh "Assignment 1.  Introduction to \s-2LISP\s+2"
(10% of course marks)[K  

Fully commented code, together with answers to the questions posed in Q.3,
must be handed in on Tuesday January 20th.
There will be[K  
.ul[K  
no extension of this deadline, except for good, documented, medical reasons.
[CLB "1.  "
.NI "1.  "[K  
1.\ \ \c[K  [59;36H[7m8pm 1.48 Mail[1]   (Text Fill)----34[m[30;1H








[60;1HMark set[39;1H[60;1H[K  [30;1H.NI "1.  "[K  
1.\ \ \c[K  
Write a recursive function \s-2POWER-OF-TWO\s+2 that computes the
\fIn\fRth power of two, eg
(\s-2POWER-OF-TWO\s+2 100) returns 1267650600228229401496703205376.
[A simple test of function-definition and recursion.]
.sp[K  
.NI "1.  "[K  
2.\ \ \c
Write your own version of the Lisp function \s-2ASSOC\s+2.
\s-2ASSOC\s+2 ``looks up'' a value in a list of lists, and returns the first
list it finds whose first element matches the desired value.
For example,[K  
(\s-2ASSOC\s+2 '\s-2Y\s+2 '((\s-2X\s+2 \s-2A\s+2) (\s-2Y\s+2 \s-2B\s+2) (\s-2Z\\s+2 \s-2C\s+2)))
returns (\s-2Y\s+2 \s-2B\s+2).
[Another simple test of function-definition and recursion.]
[Csp[K  
NI "1.  "[K  
3.\ \ \c[K  
In \fBProblem 4-13\fP (p.73 and p.344), Winston & Horn define
\s-2OUR-INTERSECTION\s+2 as[K  
.sp -0.5[K  
.LB[K  
nf
.ta \w'\0\0'u +\w'(\s-2COND\s+2 'u +\w'('u[K  
(\s-2DEFUN\s+2 \s-2OUR-INTERSECTION\s+2 (\s-2X\s+2 \s-2Y\s+2)
        (\s-2COND\s+2 ((\s-2NULL\s+2 \s-2X\s+2) \s-2NIL\s+2)
                ((\s-2MEMBER\s+2 (\s-2CAR\s+2 \s-2X\s+2) \s-2Y\s+2)
	[7m9[m[30;1H[60;1HMark set[30;1HNote that for all projects, choice of experiments and
.ul[K  
presentation and analysis of results[K  
in the final report forms a particularly important part of the assessment.
Due on Friday April 10th (the last day of the Winter term).[K  
.in-4n[K  
[CLE
I hope that it will be found useful to discuss project progress in class
and demonstrate them when complete.
.sp[K  
There will be[K  
.ul[K  
no extension of deadlines
on the project, except for good, documented, medical reasons.[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [59;70H[7mBot[m[44;1H[60;1H[K  [30;1H.LB[K  
NP
.ul[K  
Project proposal (0%)[K  
.in+4n[K  
A (nominally) two-page report which describes the project and defines its
scope.
Although this is not assessed, it[K  
.ul[K  
must be handed in on time.
Due on Tuesday February 3rd.
[Cin-4n
.NP[K  
.ul[K  
Interim report (10%)
.in+4n
Detailed specification of the project, with plans for implementing the
program and investigating its behavior.
Must describe how the program's performance is to be assessed, and what tests
and analysis are planned.
Due on Tuesday March 3rd.
.in-4n
.NP
.ul
Final report (25%)
.in+4n
Complete demonstration and documentation of what was done.
Note that for all projects, choice of experiments and
.ul[59;70H[7m92%[m
M[30;1Ha general frame system for knowledge representation


ATN parser for a simple subset of English
[CNP[K  
.ul[K  
a version of Marcus's deterministic wait-and-see parsing scheme
.NP[K  

a semantic grammar interpreter in a particular domain
.NP[K  
ul[K  
a concept learning system (eg the M procedure).
[CLE
Of course, you may suggest your own project topic.
[Cpp[K  
The project is to be undertaken as a scientific investigation.[K  
It is \fInot\fR a test of whether you can hack together a system.
Grades are given for the reports, not for programs (although programs may[K  
be included in an Appendix).
As well as constructing a system, you are expected to investigate and analyze
its performance and report on your findings.
All projects will be done in L\s-2ISP\s+2 unless there are \fIvery\fR special
reasons for using another language (to be discussed and agreed with me).
.pp[K  
I intend that projects will mostly be done in pairs.
Assessment will be based on written documents as follows:[K  
.LB[K  
NP[59;70H[7m85[m
M[30;1H.ul[K  
an experimental comparison of several different search procedures in a particul\ar domain
.NP[K  
ul
a game-playing program for some simple two-person game using the alpha-beta tre\e-searching technique[K  [39;3Hrule interpreter, and the implementation of some rudimentary rule-based syste\m in it
[CNP
.ul[K  
a system which converts well-formed formulae in first-order predicate calculus \into clausal form[K  
[CNP
.ul[K  
a resolution theorem prover[K  
.NP[K  
.ul[K  
a STRIPS-like planner in a blocks world[K  
.NP[K  
.ul[K  
a system to simplify, differentiate, and integrate expressions in symbolic alge\bra
.NP[K  
.ul[K  
a general frame system for knowledge representation[59;71H[7m0[m
M[30;1HFully commented code, together with a brief user manual and transcript
of an interactive session, must be handed in on Tuesday January 27th.[K  
There will be
[Cul
no extension of this deadline, except for good, documented, medical reasons.
.sp 3[K  
Attachment 1  blocks.l
[Cbr
Attachment 2  commented transcript
.bp 0[K  
.ce2[K  
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE
.sp2[K  
.ps+2[K  
ce
CPSC 533 \(em Artificial Intelligence
.ps-2[K  
sh "Project"
(total of 35% of course marks)
.pp[K  
The aim of the project is to give you hands-on experience of designing and
implementing an AI program of modest size, and investigating and reporting on
its performance.[K  
Possible project topics are:
[CLB
NP
.ul[K  
an experimental comparison of several different search procedures in a particul\[70`[7m75[m
MM[48;1HMMMMMMMM[60;0;2;60p[30;1H[10M              [60;0;0;60p[49;1Har domain
.NP
.ul
a game-playing program for some simple two-person game using the alpha-beta tre\e-searching technique
.NP
.ul
a rule interpreter, and the implementation of some rudimentary rule-based syste\m in it
.NP[30;1H[60;0;2;60p[30;1H[15L              [60;0;0;60p[30;1HDEPARTMENT OF COMPUTER SCIENCE
.sp2
.ps+2
.ce
CPSC 533 \(em Artificial Intelligence
.ps-2
.sh "Assignment 1.  Introduction to \s-2LISP\s+2"
(10% of course marks)
.sp
Fully commented code, together with answers to the questions posed in Q.3,
must be handed in on Tuesday January 20th.
There will be
.ul
no extension of this deadline, except for good, documented, medical reasons.
.LB "1.  "[59;70H[7m58[m[44;1HMMMMMMMMMMMMMM[60;1HMark set[30;1H[60;1H[K  [32;1H














[60;0;2;60p[30;1H[17M              [60;0;0;60p[42;1HPossible project topics are:
.LB
.NP
.ul
an experimental comparison of several different search procedures in a particul\ar domain
.NP
.ul
a game-playing program for some simple two-person game using the alpha-beta tre\e-searching technique
.NP
.ul
a rule interpreter, and the implementation of some rudimentary rule-based syste\m in it
.NP
.ul
a system which converts well-formed formulae in first-order predicate calculus \[30;1H[60;0;2;60p[30;1H[15L              [60;0;0;60p[30;1HAddison-Wesley, Reading, Massachusetts, 1984.
.sp
.ti-4n
Winston, P.H.
\fIArtificial Intelligence\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.sp
.ti-4n
Winston, P.H. & Horn, B.K.P.
\fIL\s-2ISP\s+2\fR.
Addison-Wesley, Reading, Massachusetts, 1984 (second edition).
.LE
.bp 0
.ce2
THE UNIVERSITY OF CALGARY[59;71H[7m7[m[44;1H[29;36H[7m9pm 1.59[m[59;36H[7m9pm 1.59[m[44;1H




[5`[C6[2@ 70[2P 

	
[C[C[1@ 2[1@ 0[1P [1P [53;4H[54;13H


[58;4H[60;0;2;60p[30;1H[15M              [60;0;0;60p[44;1H.NP
.ul
an experimental comparison of several different search procedures in a particul\ar domain
.NP
.ul
a game-playing program for some simple two-person game using the alpha-beta tre\e-searching technique
.NP
.ul
a rule interpreter, and the implementation of some rudimentary rule-based syste\m in it
.NP
.ul
a system which converts well-formed formulae in first-order predicate calculus \[70`[7m61[m[48;4H[30;1H.ul[K  
a system which converts well-formed formulae in first-order predicate calculus \into clausal form
[CNP
.ul[K  
a resolution theorem prover
[CNP[K  
.ul[K  
a STRIPS-like planner in a blocks world
.NP[K  
.ul[K  
a system to simplify, differentiate, and integrate expressions in symbolic alge\bra[K  
NP
ul
a general frame system for knowledge representation
.NP[K  
.ul[K  
ATN parser for a simple subset of English
[CNP
.ul[K  
a version of Marcus's deterministic wait-and-see parsing scheme[54;3Hsemantic grammar interpreter in a particular domain[K  
.NP[K  
ul
a concept learning system (eg the M procedure).
.LE[K  [59;70H[7m70[m[30;1Ha concept learning system (eg the M procedure).
.LE[K  
Of course, you may suggest your own project topic.
[Cpp
The project is to be undertaken as a scientific investigation.
It is \fInot\fR a test of whether you can hack together a system.
Grades are given for the reports, not for programs (although programs may
be included in an Appendix).
As well as constructing a system, you are expected to investigate and analyze
its performance and report on your findings.
All projects will be done in L\s-2ISP\s+2 unless there are \fIvery\fR special
reasons for using another language (to be discussed and agreed with me).[K  
.pp
I intend that projects will mostly be done in pairs.
Assessment will be based on written documents as follows:
.LB[K  


Project proposal (0%)[K  
[Cin+4n
A (nominally) two-page report which describes the project and defines its
scope.[K  
Although this is not assessed, it

must be handed in on time.[K  
Due on Tuesday February 3rd.
[Cin-4n
.NP[K  
ul[59;71H[7m7[m[30;1H[60;1HWrote /vaxb.userb/profs/ian/courses/670/info.sheet[30;1H[59;3H[7m--[m[30;1H[60;1H[K  [30;1H[20;1H[60;1HLoading shell...[20;1H[60;17Hdone[20;1H[60;1H[K  [Hroff -a2[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [29;3H[7m**-Emacs: *shell*             2:39pm 1.59 Mail[1]   (Shell: run)----All[m[1;10H
[5@ VAXB [15`~/corse[K  ure[K  ses/670/info.sheet; lpq -Palw2[29;35H[7m40pm 1.3[m[59;35H[7m40pm 1.3[m[1;51H
no entries

vaxb: sending to vaxa
Rank   Owner      Job  Files                                 Total Size
1st    ian        287  (standard input)                      20252 bytes
VAXB[C[29;36H[7m1pm 1.50 Mail[2[m[59;36H[7m1pm 1.50 Mail[2[m[7;6H[29;36H[7m2pm 1.23[m[59;36H[7m2pm 1.23[m[7;6H[29;36H[7m3pm 1.38 Mail[1[m[59;36H[7m3pm 1.38 Mail[1[m[7;6H[29;36H[7m4pm 1.54 Mail[0[m[59;36H[7m4pm 1.54 Mail[0[m[7;6H[29;36H[7m5pm 1.37 Mail[1[m[59;36H[7m5pm 1.37 Mail[1[m[7;6H[29;36H[7m6pm 1.25[m[59;36H[7m6pm 1.25[m[7;6H[29;36H[7m7pm 0.87 Mail[0[m[59;36H[7m7pm 0.87 Mail[0[m[7;6H[29;36H[7m8pm 1.17 Mail[1[m[59;36H[7m8pm 1.17 Mail[1[m[7;6H[29;36H[7m9pm 1.31 Mail[2[m[59;36H[7m9pm 1.31 Mail[2[m[7;6H[29;35H[7m50pm 1.44[m[59;35H[7m50pm 1.44[m[7;6H[29;36H[7m1pm 0.87 Mail[1[m[59;36H[7m1pm 0.87 Mail[1[m[7;6H[29;36H[7m2pm 0.84 Mail[0[m[59;36H[7m2pm 0.84 Mail[0[m[7;6H[29;36H[7m3pm 0.71[m[59;36H[7m3pm 0.71[m[7;6H[29;36H[7m4pm 0.45[m[59;36H[7m4pm 0.45[m[7;6H[29;36H[7m5pm 0.21[m[59;36H[7m5pm 0.21[m[7;6H[29;36H[7m6pm 0.4[m[59;36H[7m6pm 0.4[m[7;6H[29;36H[7m7pm 0.66[m[59;36H[7m7pm 0.66[m[7;6H[29;36H[7m8pm 0.54[m[59;36H[7m8pm 0.54[m[7;6H[29;36H[7m9pm 0.53 Mail[1[m[59;36H[7m9pm 0.53 Mail[1[m[7;6H[29;33H[7m3:00pm 1.09[m[59;33H[7m3:00pm 1.09[m[7;6H[29;36H[7m1pm 1.1[m[59;36H[7m1pm 1.1[m[7;6H[29;36H[7m2pm 1.05[m[59;36H[7m2pm 1.05[m[7;6H[29;36H[7m3pm 1.09[m[59;36H[7m3pm 1.09[m[7;6H[29;36H[7m4pm 0.94[m[59;36H[7m4pm 0.94[m[7;6H[29;36H[7m5pm 0.62[m[59;36H[7m5pm 0.62[m[7;6H[60;1HC-z-[7;6H[60;4H r[7;6H[60;1HLoading rmail...[7;6H[60;17Hdone[7;6H[60;1H[K  [7;6H[60;1HCounting messages...[7;6H[60;21H20[7;6H[60;1HGarbage collecting...[K  [7;6H[60;1HCounting messages...20[7;6H[60;21Hdone[7;6H[60;10Hnew messages...[7;6H[60;25Hdone (1)[7;6H[60;1HWrote /vaxb.userb/profs/ian/RMAIL[7;6H[60;1H1 new message read[K  [7;6H[HFrom: Danhua Mo <mo@vaxb.LOCAL>[K  
Date: 28 Aug 1987 14:00-MST
Subject: paper
To: ian@vaxb.LOCAL[K  
[K  
Hi. I hate to bother you again, but it would be highly appreciated[K  
if you would take a look at the final draft of my paper. I put it in
your mbox on the 7th floor. I am very busy at making the format right
now because the deadline is on Monday.

---mo[29;3H[7m- Emacs: RMAIL  3:05pm 0.62 Mail[1]  (RMAIL 38/38 Narrow) ----All------[m[H[29;22H[7m6pm 0.58[1]  (RMAIL 38/38 Narrow) ----All-----[m[59;36H[7m6pm 0.58[1]   (Text Fill)----77%-----[m[H[29;22H[7m7pm 0.8[m[59;36H[7m7pm 0.8[m[H[29;22H[7m8pm 0.70[m[59;36H[7m8pm 0.70[m[H[29;22H[7m9pm 0.73[0[m[59;36H[7m9pm 0.73[0[m[H[29;21H[7m10pm 1.27[1[m[59;35H[7m10pm 1.27[1[m[H[29;22H[7m1pm 0.93[m[59;36H[7m1pm 0.93[m[H[29;22H[7m2pm 0.58[0[m[59;36H[7m2pm 0.58[0[m[H[29;22H[7m3pm 0.99[1[m[59;36H[7m3pm 0.99[1[m[H[29;22H[7m4pm 1.00[0[m[59;36H[7m4pm 1.00[0[m[H[29;22H[7m5pm 0.95[1[m[59;36H[7m5pm 0.95[1[m[H[29;22H[7m6pm 0.90[m[59;36H[7m6pm 0.90[m[H[29;22H[7m7pm 0.97[2[m[59;36H[7m7pm 0.97[2[m[H[29;22H[7m8pm 1.4[m[59;36H[7m8pm 1.4[m[H[29;22H[7m9pm 1.04[0[m[59;36H[7m9pm 1.04[0[m[H[29;21H[7m20pm 0.82[3[m[59;35H[7m20pm 0.82[3[m[H[29;22H[7m1pm 0.64[1[m[59;36H[7m1pm 0.64[1[m[H[29;22H[7m2pm 0.99[3[m[59;36H[7m2pm 0.99[3[m[H[29;22H[7m3pm 1.23[1[m[59;36H[7m3pm 1.23[1[m[H[29;22H[7m4pm 1.12[0[m[59;36H[7m4pm 1.12[0[m[H[29;22H[7m5pm 1.72[1[m[59;36H[7m5pm 1.72[1[m[H[60;1H[K  [HDate: Fri, 28 Aug 87 12:28:28 MDT
From: Tim Bell <bellt@vaxb.LOCAL>
To: cleary@vaxb.LOCAL, ian@vaxb.LOCAL
Subject: Text compression corpus[6;2Here is a list of the texts we decided on a while ago for the corpus. Could
you please give me a pathname where I can get the texts that you[K  
volunteered? Also any suggestions, changes ...[K  
[K  
ta,
tim[K  
-------------------------------------------------------------------------
Text Compression Corpus

abbrev  source

book1   Hardy - Far from the madding crowd
book2   Ian's speech book
paper1  Ian
paper2  Ian
paper3  Ian
paper4  John
paper5  John
paper6  John
news    usenet sample
progc   C (Dan) ~100k
progp   Pascal (John)
progm   Modula-2[29;43H[7m7/38,answered Narrow) ----Top[m[HFrom: Danhua Mo <mo@vaxb.LOCAL>[K  
Date: 28 Aug 1987 14:00-MST[K  
Subject: paper[K  
To: ian@vaxb.LOCAL[K  [6;2Hi. I hate to bother you again, but it would be highly appreciated[K  
if you would take a look at the final draft of my paper. I put it in
your mbox on the 7th floor. I am very busy at making the format right
now because the deadline is on Monday.
[K  
---mo
[K  
[K  

[K  

[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [29;43H[7m8/38 Narrow) ----All---------[m[H[29;22H[7m6pm 1.75[2[m[59;36H[7m6pm 1.75[2[m[H[29;22H[7m7pm 1.21[m[59;36H[7m7pm 1.21[m[H[29;22H[7m8pm 1.19[1[m[59;36H[7m8pm 1.19[1[m[H[30;1H[60;1HMark set[30;1H.pn 0[K  
ls1
.ce2[K  
THE UNIVERSITY OF CALGARY
DEPARTMENT OF COMPUTER SCIENCE[K  
.sp2[K  
.ps+2[K  
.ce[K  
CPSC 670 \(em Artificial Intelligence[K  
.ps-2[K  
.sp3[K  
.LB[K  
NP
.ul[K  
Instructor.[K  
John H Andreae,  MA\ 782,  220-7299
Ian H Witten,  MA\ 786,  220-6780
[Csp
.NP[K  
ul[K  
Office hours.[K  
Tuesdays and Thursdays 14.00-15.00 (both instructors)
.sp[K  
NP
.ul[K  
Lectures.[K  
???, Tuesdays and Thursdays 11.00-12.15
[Csp
NP[59;65H[7mTop[m[30;1H[60;1H[K  [31;1H












[11`s.[59;3H[7m**[m[44;12H
[36` and[29;22H[7m9pm 1.40[m[59;36H[7m9pm 1.40[m[45;40H
[47;4H

[50;14H[51;54H[52;4H


	[C
				
[1@ M[1@ T[1P [1@ A[1@  [1@ 2[1@ 5[1@ 6	[1P 	[1P [1P 
[60;0;2;60p[30;1H[15M              [60;0;0;60p[44;1H.ul
Assessment
.ta \w'Winter Term    'u +\w'Midterm exam (in class time)    'u
.sp
Fall Term       Assignment      \0\07\(12%
.br
	Project:
.br
	\0\0\0\0progress report \0\05%
.br
	\0\0\0\0final report    \012\(12%
.br
	\0\0\0\0in-class presentation   \0\02\(12%
.br
	Take-home exam  \022\(12%
				[7m 3%[m[44;4H
	


	[60;1HQuery replace:	%
Mark set[K  
Query replacing % with :[C[48;43H[K  



[K  

	[C[K  [56;51H[K  [58;34H[30;1H        Project:[K  
.br[K  
        \0\0\0\0progress report \0\05
[Cbr
        \0\0\0\0final report    \012\(12
.br[K  
        \0\0\0\0in-class presentation   \0\02\(12[K  
[Cbr
        Take-home exam  \022\(12
[Csp
Winter Term     Class presentations     \0\07\(12
.br[K  
        Project:
[Cbr
        \0\0\0\0progress report \0\05%
.br[K  
        \0\0\0\0final report    \012\(12%[K  
[Cbr
        \0\0\0\0in-class presentation   \0\02\(12%

	Term paper      \022\(12%
[Csp
	____[K  

h'-\w'total  'u'total\ \ 100%[K  [55;3Hp
.sh "Planned timetable"[K  
[Csp
.nf[K  [59;66H[7m7[m[44;39H[29;21H[7m30pm 1.57[2[m[59;35H[7m30pm 1.57[2[m[44;39H%[K  [K  

	[C[K  [48;51H[K  [50;34H[60;1HDone[K  [50;34H[K  [52;13H[53;4H
	[8@ [60;1HI-search:[54;9H[60;10H M ...[54;9H[60;12H[K  [54;9H

	[60;12Hi ...[56;17H[60;13H[K  [56;17H[30;1H.sh "Bibliography"
[Csp
Here is a representative selection of recent books on AI.[60;13Hc ...[44;3H[60;14Hh ...[44;3H[60;15H[K  [44;3H[30;3Hp[K  
ti-4n
[Caugeland, J. (1985)[K  
[Cul
Artificial intelligence: the very idea.[K  
MIT Press, Cambridge, MA.
.sp[K  
ti-4n
Kanal, L.N. and Lemmer, J.F.\0(Editors) (1986)
[Cul
Uncertainty in artificial intelligence.[K  
North Holland, Amsterdam.
.sp[K  
ti-4n
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1983)
[Cul
Machine learning -- an artificial intelligence approach.
Tioga, Palo Alto, CA.
.sp[K  
ti-4n
R.S. Michalski, J.G. Carbonell, and T.M. Mitchell (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.
[Csp
.ti-4n[K  
T.M. Mitchell, J.G. Carbonell, and R.S. Michalski (Editors) (1986)
[Cul[K  
Machine learning -- a guide to current research.
Kluwer, Boston, MA.
						[7m35[m[44;10H[60;1HMark set[K  [44;10H[60;1H[K  [44;10H
[60;1HMark set[44;1H[60;1H[K  [44;2H[C[C
[60;1HDefining kbd macro...[44;1H[29;54H[7m Def) ----All[m[59;60H[7m Def)----35%[m[44;1H[60;1HMark set[K  [44;1H[60;1HI-search:[44;1H[60;10H   ...[44;1H[60;10H[K  [44;1H[6`[60;10H  ^J ...[44;6H[60;1HFailing I-search:  ^J[44;6H[60;1HMark set[K  [44;6H[60;1H[K  [44;6H[60;1HKeyboard macro defined[44;6H[29;54H[7m) ----All----[m[59;60H[7m)----35%----[m[44;6H[60;1HAuto-saving...[K  [44;6H[60;1HKeyboard macro defined[44;6H[60;1H[K  [43;6H[29;22H[7m1pm 2.35[5[m[59;36H[7m1pm 2.35[5[m[43;6H[29;22H[7m2pm 1.36[2[m[59;36H[7m2pm 1.36[2[m[43;6H[29;22H[7m3pm 1.12[m[59;36H[7m3pm 1.12[m[43;6H[29;22H[7m4pm 0.88[1[m[59;36H[7m4pm 0.88[1[m[43;6H[29;22H[7m5pm 0.76[m[59;36H[7m5pm 0.76[m[43;6H[29;22H[7m6pm 0.81[2[m[59;36H[7m6pm 0.81[2[m[43;6H[29;22H[7m7pm 0.72[1[m[59;36H[7m7pm 0.72[1[m[43;6H[29;22H[7m8pm 0.85[2[m[59;36H[7m8pm 0.85[2[m[43;6H[29;22H[7m9pm 0.73[1[m[59;36H[7m9pm 0.73[1[m[43;6H[29;21H[7m40pm 1.18[2[m[59;35H[7m40pm 1.18[2[m[43;6H[29;22H[7m1pm 0.64[1[m[59;36H[7m1pm 0.64[1[m[43;6H[29;22H[7m2pm 1.44[2[m[59;36H[7m2pm 1.44[2[m[43;6H[29;22H[7m3pm 1.18[m[59;36H[7m3pm 1.18[m[43;6H[29;22H[7m4pm 1.08[1[m[59;36H[7m4pm 1.08[1[m[43;6H[29;22H[7m5pm 0.83[m[59;36H[7m5pm 0.83[m[43;6H[29;22H[7m6pm 0.65[2[m[59;36H[7m6pm 0.65[2[m[43;6H[29;22H[7m7pm 0.73[m[59;36H[7m7pm 0.73[m[43;6H[29;22H[7m8pm 0.76[1[m[59;36H[7m8pm 0.76[1[m[43;6H[29;22H[7m9pm 0.97[m[59;36H[7m9pm 0.97[m[43;6H[29;21H[7m50pm 1.93[29]  (RMAIL 38/38 Narrow) ----All[m[59;35H[7m50pm 1.93[29]   (Text Fill)----35%[m[43;6H[29;22H[7m1pm 2.28[m[59;36H[7m1pm 2.28[m[43;6H[29;22H[7m2pm 2.40[25[m[59;36H[7m2pm 2.40[25[m[43;6H[29;22H[7m3pm 1.71[24[m[59;36H[7m3pm 1.71[24[m[43;6H[29;22H[7m4pm 2.29[18[m[59;36H[7m4pm 2.29[18[m[43;6H[H[60;1HLoading sendmail...[H[60;20Hdone[H[60;9Hmailalias...[K  [H[60;21Hdone[H[60;1H[K  [HTo:[K  
Subject:[K  
FCC: mbox.out[K  
--text follows this line--

[K  
[K  
[K  
[K  

[K  [29;4H[7m--Emacs: *mail*              3:54pm 2.29[18]   (Mail Fill)----All[m[1;5H g[29;3H[7m**[m[1;6Haines
stuff[4;27H
[29;36H[7m5pm 4.5[m[59;36H[7m5pm 4.5[m[5;1H[29;36H[7m6pm 4.05[m[59;36H[7m6pm 4.05[m[5;1H[29;36H[7m7pm 3.83[17[m[59;36H[7m7pm 3.83[17[m[5;1H[29;36H[7m8pm 4.06[20[m[59;36H[7m8pm 4.06[20[m[5;1H[29;36H[7m9pm 4.99[18[m[59;36H[7m9pm 4.99[18[m[5;1H[29;33H[7m4:00pm 5.10[16[m[59;33H[7m4:00pm 5.10[16[m[5;1H[29;36H[7m1pm 4.73[18[m[59;36H[7m1pm 4.73[18[m[5;1Hplease sti[K  [K  [K  	leave me the Bratko[Cstuff about extending ID3 to deal[Cwith intervals,
and the b[K  	definitive book on decision trees.
Have a good trip, wherever
ian
[29;36H[7m2pm 4.75[15[m[59;36H[7m2pm 4.75[15[m[9;1H[60;1HSending...[9;1H[60;1HWrote /vaxb.userb/profs/ian/mbox.out[9;1H[60;1HSending...done[K  [9;1H[29;3H[7m--[m[9;1H[60;1H[K  [9;1H[43;6H

[60;1HDefining kbd macro...[44;1H[29;61H[7m Def)----All[m[59;61H[7m Def)----35%[m[44;1H[60;1HMark set[K  [44;1H[60;1HI-search:[44;1H[60;10H   ...[44;1H[60;1HMark set[K  [44;1H[60;1H[K  [44;1H[6`[1P 
[4P [10`[C[1@ ,[1@  [60;1HMark set[44;12H[4@ R.S.[29;36H[7m3pm 3.22[29[m[59;36H[7m3pm 3.22[29[m[44;16H[60;1HI-search:   ...[44;16H[60;10H[K  [44;16H	[C[60;1HMark set[K  [44;18H[60;1H[K  [44;18H[60;1HKeyboard macro defined[44;18H[29;61H[7m)----All----[m[59;61H[7m)----35%----[m[44;18H[60;1H[K  [44;18H[60;1HC-z-[44;18H[60;1H[K  [44;18HCarbonell, J.G[1@ .[35`[38`[CMitchell, T.M[1@ .[C[45;4H[46;54H[48;4H
	
Michalski, R.S., Carbonell, J.[2@ G.[39`Mitchell, T.M[1@ .[C
				[53;4H

Mitchell, T.M[1@ .	Carbonell, J.G., and Michalski, R.[2@ S.[C




Wrote /vaxb.userb/profs/ian/courses/670/info.sheet[55;54H[59;3H[7m--[m[55;54H[29;36H[7m4pm 3.07[m[59;36H[7m4pm 3.07[m[55;54H




[K  [55;54H[60;0;2;60p[46;1H[2M       [35;1H[1M            [60;0;0;60p[32;1HMichalski, R.S., Carbonell, J.G., and Mitchell, T.M. (Editors) (1986)
\fIMachine learning Volume 2\fP.
Morgan Kaufmann, Los Altos, CA.[K  


Mitchell, T.M., Carbonell, J.G[23@ ., and Michalski, R.S. [30;1HVAXB roff -a2 ~/courses/670/info.sheet; lpq -Palw2
no entries
[K  
vaxb: sending to vaxa[K  
Rank   Owner      Job  Files                                 Total Size
1st    ian        287  (standard input)                      20252 bytes
VAXB[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  [7m--**-Emacs: *shell*             4:04pm 3.07[29]   (Shell: run)----All----------[m[56;1H.sp
.ti-4n
Nilsson, N.J.[59;66H[7m41[m[36;6Hcd ~/courses/670[60;1HDirectory /vaxb.userb/profs/ian/courses/670/[36;22H[60;1H[K  [37;1Hroff
VAXB roff  -a2 info.sheet; lpq -Palw2
[29;36H[7m5pm 3.39[25[m[44;36H[7m5pm 3.39[25[m[59;36H[7m5pm 3.39[25[m[38;1Halw2 is ready and printing
Rank   Owner      Job  Files                                 Total Size
active andrews    772  info.dvi, regs.dvi                    20308 bytes

vaxb: sending to vaxa
[60;0;18;60p[30;1H[7M              [60;0;0;60p[36;1HRank   Owner      Job  Files                                 Total Size[44;67H[7mBot[m[37;1HVAXB[C[29;36H[7m6pm 2.44[24[m[44;36H[7m6pm 2.44[24[m[59;36H[7m6pm 2.44[24[m[37;6H[29;36H[7m7pm 3.68[19[m[44;36H[7m7pm 3.68[19[m[59;36H[7m7pm 3.68[19[m[37;6H[29;36H[7m8pm 5.36[17[m[44;36H[7m8pm 5.36[17[m[59;36H[7m8pm 5.36[17[m[37;6H[29;36H[7m9pm 5.40[m[44;36H[7m9pm 5.40[m[59;36H[7m9pm 5.40[m[37;6H[29;35H[7m10pm 4.73[18[m[44;35H[7m10pm 4.73[18[m[59;35H[7m10pm 4.73[18[m[37;6H[29;36H[7m1pm 5.09[15[m[44;36H[7m1pm 5.09[15[m[59;36H[7m1pm 5.09[15[m[37;6H[29;36H[7m2pm 4.73[16[m[44;36H[7m2pm 4.73[16[m[59;36H[7m2pm 4.73[16[m[37;6H[29;36H[7m3pm 3.97[18[m[44;36H[7m3pm 3.97[18[m[59;36H[7m3pm 3.97[18[m[37;6H[29;36H[7m4pm 3.09[9]   (Mail Fill)----All-[m[44;36H[7m4pm 3.09[9]   (Shell: run)----Bot-[m[59;36H[7m4pm 3.09[9]   (Text Fill)----41%-[m[37;6H[29;36H[7m5pm 1.71[5[m[44;36H[7m5pm 1.71[5[m[59;36H[7m5pm 1.71[5[m[37;6H[29;36H[7m6pm 2.38[7[m[44;36H[7m6pm 2.38[7[m[59;36H[7m6pm 2.38[7[m[37;6H[29;36H[7m7pm 1.75[2[m[44;36H[7m7pm 1.75[2[m[59;36H[7m7pm 1.75[2[m[37;6H[29;36H[7m8pm 1.00[1[m[44;36H[7m8pm 1.00[1[m[59;36H[7m8pm 1.00[1[m[37;6H[29;36H[7m9pm 0.66[m[44;36H[7m9pm 0.66[m[59;36H[7m9pm 0.66[m[37;6H[29;35H[7m20pm 0.76[2[m[44;35H[7m20pm 0.76[2[m[59;35H[7m20pm 0.76[2[m[37;6H[29;36H[7m1pm 0.45[0[m[44;36H[7m1pm 0.45[0[m[59;36H[7m1pm 0.45[0[m[37;6H[29;36H[7m2pm 0.38[2[m[44;36H[7m2pm 0.38[2[m[59;36H[7m2pm 0.38[2[m[37;6H[29;36H[7m3pm 0.54[m[44;36H[7m3pm 0.54[m[59;36H[7m3pm 0.54[m[37;6H[29;36H[7m4pm 0.64[0[m[44;36H[7m4pm 0.64[0[m[59;36H[7m4pm 0.64[0[m[37;6H[29;36H[7m5pm 0.91[2[m[44;36H[7m5pm 0.91[2[m[59;36H[7m5pm 0.91[2[m[37;6H[29;36H[7m6pm 1.21[1[m[44;36H[7m6pm 1.21[1[m[59;36H[7m6pm 1.21[1[m[37;6H[29;36H[7m7pm 0.98[m[44;36H[7m7pm 0.98[m[59;36H[7m7pm 0.98[m[37;6H[29;36H[7m8pm 1.37[m[44;36H[7m8pm 1.37[m[59;36H[7m8pm 1.37[m[37;6H[29;36H[7m9pm 1.23[2[m[44;36H[7m9pm 1.23[2[m[59;36H[7m9pm 1.23[2[m[37;6H[29;35H[7m30pm 1.90[4[m[44;35H[7m30pm 1.90[4[m[59;35H[7m30pm 1.90[4[m[37;6H[29;36H[7m1pm 1.39[3[m[44;36H[7m1pm 1.39[3[m[59;36H[7m1pm 1.39[3[m[37;6H[29;36H[7m2pm 1.06[1[m[44;36H[7m2pm 1.06[1[m[59;36H[7m2pm 1.06[1[m[37;6H[29;36H[7m3pm 0.65[2[m[44;36H[7m3pm 0.65[2[m[59;36H[7m3pm 0.65[2[m[37;6H[29;36H[7m4pm 1.39[1[m[44;36H[7m4pm 1.39[1[m[59;36H[7m4pm 1.39[1[m[37;6H[29;36H[7m5pm 2.55[3[m[44;36H[7m5pm 2.55[3[m[59;36H[7m5pm 2.55[3[m[37;6H[29;36H[7m6pm 1.57[m[44;36H[7m6pm 1.57[m[59;36H[7m6pm 1.57[m[37;6H[29;36H[7m7pm 1.00[1[m[44;36H[7m7pm 1.00[1[m[59;36H[7m7pm 1.00[1[m[37;6H[29;36H[7m8pm 0.68[m[44;36H[7m8pm 0.68[m[59;36H[7m8pm 0.68[m[37;6H[29;36H[7m9pm 0.54[m[44;36H[7m9pm 0.54[m[59;36H[7m9pm 0.54[m[37;6H[29;35H[7m40pm 0.96[m[44;35H[7m40pm 0.96[m[59;35H[7m40pm 0.96[m[37;6H[29;36H[7m1pm 1.37[3[m[44;36H[7m1pm 1.37[3[m[59;36H[7m1pm 1.37[3[m[37;6H[29;36H[7m2pm 1.28[1[m[44;36H[7m2pm 1.28[1[m[59;36H[7m2pm 1.28[1[m[37;6H[29;36H[7m3pm 1.93[3[m[44;36H[7m3pm 1.93[3[m[59;36H[7m3pm 1.93[3[m[37;6H[29;36H[7m4pm 2.10 Mail[3]   (Mail Fill)----All[m[44;36H[7m4pm 2.10 Mail[3]   (Shell: run)----Bot[m[59;36H[7m4pm 2.10 Mail[3]   (Text Fill)----41%[m[37;6H[29;36H[7m5pm 1.04 Mail[1[m[44;36H[7m5pm 1.04 Mail[1[m[59;36H[7m5pm 1.04 Mail[1[m[37;6H[29;36H[7m6pm 0.58 Mail[0[m[44;36H[7m6pm 0.58 Mail[0[m[59;36H[7m6pm 0.58 Mail[0[m[37;6H[29;36H[7m7pm 0.37[m[44;36H[7m7pm 0.37[m[59;36H[7m7pm 0.37[m[37;6H[29;36H[7m8pm 0.36 Mail[1[m[44;36H[7m8pm 0.36 Mail[1[m[59;36H[7m8pm 0.36 Mail[1[m[37;6H[29;36H[7m9pm 1.73 Mail[3[m[44;36H[7m9pm 1.73 Mail[3[m[59;36H[7m9pm 1.73 Mail[3[m[37;6H[29;35H[7m50pm 1.18 Mail[2[m[44;35H[7m50pm 1.18 Mail[2[m[59;35H[7m50pm 1.18 Mail[2[m[37;6H[29;36H[7m1pm 1.0[m[44;36H[7m1pm 1.0[m[59;36H[7m1pm 1.0[m[37;6H[29;36H[7m2pm 0.53 Mail[0[m[44;36H[7m2pm 0.53 Mail[0[m[59;36H[7m2pm 0.53 Mail[0[m[37;6H[29;36H[7m3pm 2.00 Mail[3[m[44;36H[7m3pm 2.00 Mail[3[m[59;36H[7m3pm 2.00 Mail[3[m[37;6H[52;54H[9;1Hg[29;3H[7m**[m[9;2H[60;1HAuto-saving...[9;2H[60;15Hdone[9;2H[60;1H[K  [9;1H[K  [HFrom: Danhua Mo <mo@vaxb.LOCAL>
Date: 28 Aug 1987 14:00-MST
Subject: paper
To: ian@vaxb.LOCAL[K  
[K  
Hi. I hate to bother you again, but it would be highly appreciated
if you would take a look at the final draft of my paper. I put it in
your mbox on the 7th floor. I am very busy at making the format right
now because the deadline is on Monday.

---mo[29;3H[7m- Emacs: RMAIL  4:53pm 2.00 Mail[3]  (RMAIL 38/38 Narrow) ----All-----[m[H[60;1HCounting new messages...[H[60;25Hdone (1)[H[60;1HWrote /vaxb.userb/profs/ian/RMAIL[H[60;1H1 new message read[K  [HDate: Fri, 28 Aug 87 16:43:11 MDT
From: Mr. Invisible <kittlitz@vaxb.LOCAL>
To: ian@vaxb.LOCAL
[K  
# to unbundle, sh this file
echo inter.c 1>&2[K  
 cat >inter.c <<'End of inter.c'[K  
#include "weird.h"[K  
#define MAXLINES 255               /* number of lines read in a time = max # of\[Clines
                                      of one command result */

typedef char FILENAME[MAXSTR+1];
extern char *homep;
FILENAME namearray[MAXLINES+1];        /* array of file lines */
FILENAME *namep = namearray, *memp = namearray;
FILE *comfp;
FILE *resfp;
FILE *locfp;
struct rightentry *ihead, *itail;   /* pointers to list of commands to be saved\[C*/
int lineno = 0;
short done = 0, abortit = 0, save  = 0, haveold = 0;

inter(result, command, location)

char *result, *command, *location;

		[7m9/39 Narrow) ----Top[m[H[29;22H[7m4pm 1.88[2]  (RMAIL 39/39 Narrow) ----Top-----[m[44;36H[7m4pm 1.88[2]   (Shell: run)----Bot-----[m[59;36H[7m4pm 1.88[2]   (Text Fill)----41%-----[m[H[60;1HNo following nondeleted message[H[60;1H[K  [HFrom: Danhua Mo <mo@vaxb.LOCAL>[K  
Date: 28 Aug 1987 14:00-MST[K  
Subject: paper[K  
To: ian@vaxb.LOCAL
[K  
Hi. I hate to bother you again, but it would be highly appreciated
if you would take a look at the final draft of my paper. I put it in
your mbox on the 7th floor. I am very busy at making the format right
now because the deadline is on Monday.[K  
[K  
---mo[K  

[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  
[K  

[K  

[K  [29;43H[7m8/39 Narrow) ----All[m[HDate: Fri, 28 Aug 87 16:43:11 MDT
From: Mr. Invisible <kittlitz@vaxb.LOCAL>
To: ian@vaxb.LOCAL
[K  
# to unbundle, sh this file
echo inter.c 1>&2[K  
 cat >inter.c <<'End of inter.c'[K  
#include "weird.h"[K  
#define MAXLINES 255               /* number of lines read in a time = max # of\[Clines
                                      of one command result */

typedef char FILENAME[MAXSTR+1];
extern char *homep;
FILENAME namearray[MAXLINES+1];        /* array of file lines */
FILENAME *namep = namearray, *memp = namearray;
FILE *comfp;
FILE *resfp;
FILE *locfp;
struct rightentry *ihead, *itail;   /* pointers to list of commands to be saved\[C*/
int lineno = 0;
short done = 0, abortit = 0, save  = 0, haveold = 0;

inter(result, command, location)

char *result, *command, *location;[29;43H[7m9/39 Narrow) ----Top[m[H[29;22H[7m5pm 1.2[m[44;36H[7m5pm 1.2[m[59;36H[7m5pm 1.2[m[H[29;22H[7m6pm 0.63[0[m[44;36H[7m6pm 0.63[0[m[59;36H[7m6pm 0.63[0[m[H[60;1HSave file /vaxb.userb/profs/ian/RMAIL? (y or n)[H[60;48H n[H[60;1H[K  [H[60;1HCheck all saved[H[60;1H[K  [>52l[>37h[60;0;0;60p[60;1H[J[1]  + Done                 ( roff -a2 assignments; lpq -Palw2 )
VAXB ^Dlogout
You are still logged in somewhere
[H[J                                                                                                                                                                                                                        