i_~f e 1 then e 2 else e 3



Similar documents
Sebastián Bravo López

Channel Assignment Strategies for Cellular Phone Systems

Granular Problem Solving and Software Engineering

A Holistic Method for Selecting Web Services in Design of Composite Applications

' R ATIONAL. :::~i:. :'.:::::: RETENTION ':: Compliance with the way you work PRODUCT BRIEF

An Enhanced Critical Path Method for Multiple Resource Constraints

Henley Business School at Univ of Reading. Pre-Experience Postgraduate Programmes Chartered Institute of Personnel and Development (CIPD)

Henley Business School at Univ of Reading. Chartered Institute of Personnel and Development (CIPD)


Programming Basics - FORTRAN 77

Computer Networks Framing

A Context-Aware Preference Database System

WORKFLOW CONTROL-FLOW PATTERNS A Revised View

UNIVERSITY AND WORK-STUDY EMPLOYERS WEB SITE USER S GUIDE

Hierarchical Clustering and Sampling Techniques for Network Monitoring

Parametric model of IP-networks in the form of colored Petri net

Neural network-based Load Balancing and Reactive Power Control by Static VAR Compensator

protection p1ann1ng report

Unit 12: Installing, Configuring and Administering Microsoft Server

Discovering Trends in Large Datasets Using Neural Networks

FOOD FOR THOUGHT Topical Insights from our Subject Matter Experts

A Keyword Filters Method for Spam via Maximum Independent Sets

BENEFICIARY CHANGE REQUEST

Outline. Planning. Search vs. Planning. Search vs. Planning Cont d. Search vs. planning. STRIPS operators Partial-order planning.

An integrated optimization model of a Closed- Loop Supply Chain under uncertainty

Capacity at Unsignalized Two-Stage Priority Intersections

Professional Certificate Training in Business Writing

Behavior Analysis-Based Learning Framework for Host Level Intrusion Detection

Classical Electromagnetic Doppler Effect Redefined. Copyright 2014 Joseph A. Rybczyk

Recovering Articulated Motion with a Hierarchical Factorization Method

How To Fator

OpenScape 4000 CSTA V7 Connectivity Adapter - CSTA III, Part 2, Version 4.1. Developer s Guide A31003-G9310-I D1

Big Data Analysis and Reporting with Decision Tree Induction

arxiv:astro-ph/ v2 10 Jun 2003 Theory Group, MS 50A-5101 Lawrence Berkeley National Laboratory One Cyclotron Road Berkeley, CA USA

Open and Extensible Business Process Simulator

Customer Reporting for SaaS Applications. Domain Basics. Managing my Domain

Deadline-based Escalation in Process-Aware Information Systems

Pattern Recognition Techniques in Microarray Data Analysis

Context in Artificial Intelligent and Information Modeling

5.2 The Master Theorem

A Survey of Usability Evaluation in Virtual Environments: Classi cation and Comparison of Methods

Agile ALM White Paper: Redefining ALM with Five Key Practices

THE UNIVERSITY OF TEXAS AT ARLINGTON COLLEGE OF NURSING. NURS Introduction to Genetics and Genomics SYLLABUS

Weighting Methods in Survey Sampling

FIRE DETECTION USING AUTONOMOUS AERIAL VEHICLES WITH INFRARED AND VISUAL CAMERAS. J. Ramiro Martínez-de Dios, Luis Merino and Aníbal Ollero

Chapter 5 Single Phase Systems

Srinivas Bollapragada GE Global Research Center. Abstract

Solving the Game of Awari using Parallel Retrograde Analysis

MEMBER. Application for election MEMBER, NEW GRADUATE. psychology.org.au. April 2015

Intelligent Measurement Processes in 3D Optical Metrology: Producing More Accurate Point Clouds

Supply chain coordination; A Game Theory approach

INCOME TAX WITHHOLDING GUIDE FOR EMPLOYERS

Dataflow Features in Computer Networks

Improved SOM-Based High-Dimensional Data Visualization Algorithm

Software Ecosystems: From Software Product Management to Software Platform Management

Chapter 1 Microeconomics of Consumer Theory

Electrician'sMathand BasicElectricalFormulas

Static Fairness Criteria in Telecommunications

TRENDS IN EXECUTIVE EDUCATION: TOWARDS A SYSTEMS APPROACH TO EXECUTIVE DEVELOPMENT PLANNING

RATING SCALES FOR NEUROLOGISTS

A novel active mass damper for vibration control of bridges

Interpretable Fuzzy Modeling using Multi-Objective Immune- Inspired Optimization Algorithms

INCOME TAX WITHHOLDING GUIDE FOR EMPLOYERS

Table of Contents. Appendix II Application Checklist. Export Finance Program Working Capital Financing...7

Findings and Recommendations

SLA-based Resource Allocation for Software as a Service Provider (SaaS) in Cloud Computing Environments

BUILDING CODE SUMMARY GENERAL NOTES DESIGN BUILD ELECTRICAL DESIGN BUILD MECHANICAL & PLUMBING GENERAL NOTES GENERAL NOTES G101

On Some Mathematics for Visualizing High Dimensional Data

IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING, VOL. 9, NO. 3, MAY/JUNE

Using Live Chat in your Call Centre

Marker Tracking and HMD Calibration for a Video-based Augmented Reality Conferencing System

Criminal Geographical Profiling: Using FCA for Visualization and Analysis of Crime Data

THERMAL TO MECHANICAL ENERGY CONVERSION: ENGINES AND REQUIREMENTS Vol. I - Thermodynamic Cycles of Reciprocating and Rotary Engines - R.S.

State of Maryland Participation Agreement for Pre-Tax and Roth Retirement Savings Accounts

Bayes Bluff: Opponent Modelling in Poker

Board Building Recruiting and Developing Effective Board Members for Not-for-Profit Organizations

AT 6 OF 2012 GAMBLING DUTY ACT 2012

THE PERFORMANCE OF TRANSIT TIME FLOWMETERS IN HEATED GAS MIXTURES

10.1 The Lorentz force law

From a strategic view to an engineering view in a digital enterprise

AUDITING COST OVERRUN CLAIMS *

RESEARCH SEMINAR IN INTERNATIONAL ECONOMICS. Discussion Paper No The Evolution and Utilization of the GATT/WTO Dispute Settlement Mechanism

Scalable Hierarchical Multitask Learning Algorithms for Conversion Optimization in Display Advertising

A Three-Hybrid Treatment Method of the Compressor's Characteristic Line in Performance Prediction of Power Systems

1.3 Complex Numbers; Quadratic Equations in the Complex Number System*

REDUCTION FACTOR OF FEEDING LINES THAT HAVE A CABLE AND AN OVERHEAD SECTION

Asymmetric Error Correction and Flash-Memory Rewriting using Polar Codes

Transcription:

A PROCEDURE MECHANISM FOR BACKTRACK PROGRAMMING* David R. HANSON + Department o Computer Siene, The University of Arizona Tuson, Arizona 85721 One of the diffiulties in using nondeterministi algorithms for the solution of ombinatorial problems is that most programming languages do not inlude features apable of easily representing baktraking proesses. This paper desribes a proedure mehanism that uses oroutines as a means for the desription and realization of nondeterministi algorithms. A solution to the eight queens problem is given to illustrate the appliation of the proedure mehanism to baktraking problems. I. INTRODUCTION Although baktrak programming has been known for several years [1-4], the method has yet to beome a ommon programming tehnique for the realization of nondeterministi algorithms. Floyd [1] alluded to the reason for this situation: most programming languages do not inlude features that failitate baktrak programming. He suggested that programming languages ought to possess mehanisms apable of representing nondeterministi algorithms. Sine the appearane of Floyd's paper, onsiderable researh has been undertaken to add failities of this kind to new or existing languages. This work has overed a large part of the spetrum of programming languages, from general desriptions with a slant toward Algol-like languages [5,6], to languages for artifiial intelligene researh [7], and even to Fortran [8]. In all the work ited, features that were added or proposed for baktraking were ast in a framework of reursive funtions with additional built-in mehanisms or primitives with whih to implement baktraking. That is, the basi proedure mehanism of the proposed languages or language extensions was the traditional reursive funtion. This paper presents a general proedure mehanism that inludes oroutines as a means for the desription and realization of nondeterministi algorithms. The SL5 programming language [9-12] in whih this proedure mehanism is implemented is the vehile used to desribe this method and its appliation to baktrak programming. *This work was supported by the National Siene Foundation under Grant DCR75-01307. +Author's present address: Department of Computer Siene, Yale University, New Haven, Connetiut 06520. To failitate omparison with previous work, the eight queens problem [13-15] is used as the example o baktraking throughout this paper. This is a nontrivial problem whose solution is ideally suited to the baktraking strategy, and has frequently been used as an example that an be solved by nondeterministi programming. 2. THE SL5 PROGRAMMING LANGUAGE SL5 is an expression-oriented language that is struturally similar to BLISS or Algol 68. SL5 is a "typeless" language in the same sense that SNOBOL4 is -- a variable an have a value of any datatype at any time during program exeution. 2.1 Control Strutures and Signaling An expression returns a signal, "suess" or "failure", as well as a value. The ombination o a value and a signal is alled the result of the expression. SL5 possesses most o the "modern" ontrol strutures, eah of whih is an expression and returns a result. Control strutures are driven by signals rather than by boolean values. For an example, in the expression i_~f e 1 then e 2 else e 3 e I is evaluated first. If the resulting signal is suess, e 2 is evaluated. Otherwise, e 5 is evaluated. The result of the if-then-else expression is the result (value and signal) o e 2 or e 3, whihever is evaluated. Other typial ontrol strutures while e I do e 2 until e I do e 2 repeat e for v from e I to e 2 do e 5 I are: 401

The while and for expressions behave in the onventlo~-6n~manner. The until expression repeatedly evaluates e 2 until e I sueeds. The repeat expression evaluates e repeatedly until a failure signal is returned. Expressions may be grouped together as a single expression using begin... end or {... }. 2.2 Proedures In SL5, proedures and their environments (ativation reords) are separate soure-language data objets. A proedure is "reated" by an expression suh as gd := proedure (x, y) while x ~= y do if x > y then x := x-y else y := y-x; sueed x whih assigns to gd a proedure that omputes the greatest ommon divisor of its arguments. The invoation of a proedure in the standard reursive fashion is aomplished using the usual funtional notation f(el,e 2... en), whih invokes the proedure that is the urrent value of the variable f. Proedure ativation may be deomposed into several distint soure-language operations that permit SL5 proedures to be used as oroutines. These operations are the reation of an environment for the exeution of the given proedure, the bindin~ of the atual arguments to that environment, and the resumption of the exeution of the proedure. The reate expression takes a single argument of datatype proedure, reates an environment for its exeution, and returns this environment as its value. For example, the expression e := reate f assigns to e an environment for the exeution of f. The with. expression is used to bind the atual arguments to an environment. The expression e with (el,e 2,... e n) binds the atual arguments, e I through en, to the environment e. The exeution of a proedure is aomplished by "resuming" it via the resume expression. The expression resume e suspends exeution of the urrent proedure and ativates the proedure for whih e is an environment. A proedure usually "returns" a result to its "resumer". This is aomplished by the expressions sueed v whihreturn V as the value of the proedure and signal either suess or failure as indiated. If the proedure is ativated by a resume, the result given in sueed or fail is transmitted and beomes the result of teh-6"~esume expression. The exeution of sueed or fail auses the suspension of that environment. If the environment is again resumed, exeution proeeds from where it left off. The argument v may be omitted, in whih ase the null string is assumed. A label generator illustrates oroutine usage: genlab :={proedure (n) repeat sueed "U' l] lp~cn, 3, "0"); n := n+1 } a simple example of An environment for genlab generates the next label of the form Lnnn eah time it is resumed. The sequene begins at the integer given by the argument. (lpad is a built-in proedure that pads n on the left with zeros to form a S-harater string, and [] denotes string onatenation.) For example, an expression suh as gen := reate genzab with 10 assigns to gen an environment for genlab that generates a sequene of labels beginning at L010. To obtain the next label, the exeution of the environment is resumed; x := resume gen Notie that the sequene may be restarted by retransmitting the argument, e.g., gen := gen with 10 2.3 Delarations SL5 has delarations for identifiers that are used to determine only the interpretation and sope of identifiers that appear in a proedure, not their type. The delaration private x delares x to be a private identifier whose value is available only to the proedure in whih it is delared; it annot be examined or modified by any other proedure. Private identifiers are used, for example, when a oroutine must "remember" information from one resumption to the next. Other delarations and the sope of identifiers are desribed in refs. 9 and 12. 3. BACKTRACKING AND THE EIGHT QUEENS PROBLEM There are many problems for whih an analyti solution is not known, but for whih a solution an be onstruted by trial and error. A lassi example is the eight queens problem, sometimes referred to as the n-by-n nonattaking queens problem. The objet is to plae eight queens on a hess board so that no queen an apture any of the others. One suh solution is shown in fig. I. 402

There are 92 solutions to this problem, although only 12 are unique. tow 8 7 6 5 4 5 2 I 2 5 4 5 6 7 8 olumn Fig. 1 - A Solution to the Eight Queens Problem A brute fore approah to this problem is to test all the possible onfigurations of the queens to find the 92 "safe" ones. Although the number of possible onfigurations an be substantially redued by observing that only one queen may oupy a given olumn, the brute fore approah requires an impratial amount of omputation. 3.1 Baktraking A better approah for solving this type of problem is to onstrut a solution one queen at a time rather than testing the validity of every possible onfiguration. This is alled the "baktraking" approah. For example, if the first queen (the leftmost one in fig. I) is plaed on row 1, the seond queen an only be plaed on rows 5 through 8. Configurations with the first queen on row 1 and the seond queen on row 1 or 2 annot lead to a solution regardless of the positions of queens 5 through 8. Thus only the partial solutions (1,3), (1,4)..., {1,8) need to be onsidered when searhing for a solution. The idea in baktraking is to form the k th partial solution (Xl,X2,...,Xk) and extend it to a k+ist partial solution (Xl,X2,...,Xk,Xk+l) by seleting a suitable Xk+ 1. When k+l is equal to 8, a omplete solution has been found. The term baktrakin~ is derived from the ation taken when the k th partial solution annot be extended to a k+ist partial solution. In this ase, it is neessary to "baktrak" to the k-i partial solution and try to ompute a different x k for a k th partial solution. This baktraking step requires that whatever omputation was required to form the k th partial solution be undone in order to get bak to the k-i partial solution. This is often alled "reversing effets" or "bakwards exeution". For the eight queens problem, this amounts to freeing the squares on the board overed by the k th queen. For example, it is easy to plae the first five queens to form the partial solution (1,3,5,2,4). But the sixth queen annot be plaed. It is neessary to baktrak to the partial solution (1,3,5,2) and try again. This partial solution an be extended to (1,3,5,2,8) but no further. It is neessary to baktrak all the way to the partial solution (1,3,5), whih an then be extended to (1,3,5,7,2,4,6). This baktraking proess ontinues until the solution (1,5,8,6,3,7,2,4) is found, whih is shown in fig. 1. A more formal desription of the baktraking strategy is given in ref. 2. A partiularly luid explanation an be found in ref. 16, whih desribes a method for estimating the effiieny of baktraking programs. 5.2 Realization of the Nondeterministi Algorithm The usual method for programming the solution to the eight queens problem is to use a proedure that generates all solutions with the first queen on rows 1 to 8 by alling itself reursively to generate all solutions for the seond queen in rows 1 to 8, et. The foliowing proedure, similar to the Pasal solution given in ref. 15, operates in this fashion. generate := proedure (ol) private row; for row from 1 to 8 do i_~f teet(row, ol) t-hen { oupy (row, ol) ; x[ol] := row; if ol = 8 then print(x) else generate (ol+l) ; release (row, ol) }; sueed The details of the board representation are ontained in proedures test, oupy, and release. test(row, ol) sueeds if the queen in olumn ol an be plaed on the indiated row. The proedure oupy(row, ol) marks as oupied all positions overed by the queen at the position row, ol. relea8e(row, ol) reverses the effet of oupy; it marks those positions overed by the given queen as free. Possible representations for the atual board are given in refs. 1 and 15-15. print(x) prints the ontents of the solution vetor x. The program is started by generate(1). A portion of the baktraking in this solution is somewhat obsured by the reursion; it is aomplished impliitly by repeated reursive invoations of generate. It is not neessary to use reursion to aomplish the baktraking but it is sometimes used beause the only form of proedure available is the reursive funtion. The oroutine method, on the other hand, does not require the use of reursion to aomplish the baktraking. The basi approah is to reate eight environments for a single proedure; one for eah olumn. Eah environment represents one queen. The proedure, alled queen, attempts o plae a queen on the given olumn beginning with 403

row 1. I a queen is suessfully plaed, the proedure suspends its exeution and signals suess to its resumer. If it is subsequently resumed, it reverses its previous effets, i.e. removes the queen from the row, and tries the next row. If the queen annot be plaed, the proedure fails indiating that baktraking must our. Subsequent resumption after failure indiates that the proess should begin again at row1. The eight environments for proedure queen are stored in a vetor q. The first step is to reate the eight environments for proedure queen, eah with the proper olumn number: q := vetor(i, 8); for i from 1 to 8 do q~i] := reate queen with i; To begin the searh for a solution, the exeution of the first queen, q[1], is resumed. The seond queen is then resumed, and so on. If the resumption of a queen fails, baktraking is indiated. If the i th queen fails, queen "i-1 must be resumed in order to be repositioned. This is equivalent to queen i-1 attempting to find a new i-1 partial solution. I the ith queen sueeds, ~een i+1 is resumed in hopes of extending the i partial solution. A omplete solution has been found when the eighth queen is suessfully plaed. This entire proess an be written as i := ~; until i > & do ~resume q-~i] ---then i :ffi i+1 e-~i := i-i; p~nt (-'(~; The index i is inremented as long as the ith queen is suess~ully nlaed, i.e., as long as the extension to the i ~h partial solution is possible. It is deremented when the~ th queen signals failure indiating that the ivn partial solution ould not be formed. The proedure queen is as follows. queen := proedure (ol) private row; repeat ( for rob) from I to 8 do i_ff test~, ~l) t-~en { oupy(row, ol); x[ol] := row; sueed; ~(row, ol) fail ) }; The expression repeat {... } is a nonterminating loop. All 92 solutions an be found by modifying the until loop given above so that after a solution has been found the exeution of the eighth queen is again resumed. If the subsequent plaement is suessful, a seond solution is generated. If it fails, the seventh queen must be repositioned. This is equivalent to making a solution fail, after reording it, in order to searh for all possible solutions using the baktraking strategy. Theproess is stopped when the first queen signals failure. This loop an be written as follows. i := I; until i = 0 do i~ resume q-~i] ---th-~---~(_ i = 8 then p~ntcx) else i := i+l) else i := i-1; Notie that i is not inremented after suessful plaement of the eighth queen, thus foring its repositioning at the next resumption. This program an be generalized for n queens by substituting n wherever 8 appears. The general form is the same for many similar baktraking problems. For example, if the proedures test, oupy, and release are modified to assume rooks instead of queens, the program omputes all possible permutations of the integers 1 to n. 4. COMPARISON OF THE METHODS The major differene between the reursive approah and the oroutine approah is in the ontrol regime used to ahieve baktraking. This is illustrated in fig. 2. The left part of fig. 2 shows the ontrol relationship among the eight instantiations o generate when a reursive solution has been omputed. The relationship is stritly hierarhial: generate is written to use reursion in order to "resume" the next queen. The proedure generate must inlude not only the semantis of plaing a queen, but is must also ontain the baktraking mehanism. The right part of fig. 2 shows the ontrol relationship among the eight environments for the oroutine solution. In this ase, the proedure only needs to know how to plae a queen, not about the order in whih eah environment is resumed. The main program ontrols the resumption of the oroutines. main f progr~n ~,, generate ( I )( 2( '( 6( 7( generate (8)( in program quee~l queen I 2 3 4 5 6 7 8 Fig. 2 - Control Regimes among the Eight Queens 404

5. CONCLUSIONS The proedure faility of a high-level language is one of the most powerful tools for abstration available to the programmer. The SL5 mehanism is designed to provide, at the linguisti level, failities that permit the programmer to implement solutions to baktraking problems in a way that losely parallels the abstrat formulation of the problem. The oroutine approah to baktraking is not limited to SLS. The same idea an be used in other languages that support oroutines, suh as Simula 67 LITJ. Alternatively, SL5 an be used as a speifiation language in whih to formulate the solutions to baktraking problems. The resulting program an then be used as a guide to an atual implementation in a lower-level language. This is done in the Appendix for the eight queens problem; the SL5 program given in se. 5.2 is used as a guide for onstruting a solution in Fortran. There are other problems, suh as parsing and string pattern mathing, that an be solved using baktraking tehniques. Unlike the eight queens problem, however, the domain of the searh is not known beforehand, but is determined as the searh proeeds. Non'etheless, the oroutine approah appears to be appliable to these types of problems. For example, SL5 ontains a patternmathing faility that is based on a oroutine model of pattern mathing in SNOBOL4 [18]. The SL5 faility is signifiantly more general and flexible tsan the faility in SNOBOL4, and has proven to be easier to implement and to understand than the resursive approah used in SNOBOL4 [19,20]. ACKNOWLEDGEMENT Signifiant ontributions to SLS have been made by Dianne E. Britton, Frederik C. Druseikis, and Ralph E. Griswold. APPENDIX The following Fortran program omputes all 92 solutions to the eight queens problem, and is derived from the SL5 program given in se. 3.2. The board representation, embodied in test, oupy, and release, an be derived from that given in refs. 13-15. main program logial queen integer row, i ommon /env/ row(8) C I=I 30 if (i.le. O) stop if (queen(i)) go to 40 I=i-1 40 if (i.eq. 8) go to 50 I=i+1 50 write(6, I00) row 100 format(b(lx, il)) end logial funtion queen(ol) integer ro~ij, ol, j. p(8) logial test ommon /env/ row(8) data p/b*i/ j = p(ol) go to (10, 20, 50),j 10 if (row(ol).gt. 8) go to 40 if (.not. test(row(ol), ol)) 1 all oupy(row(ol), ol) P(COI) = 2 queen =.true return 20 all relea~(row(o]), ol) 30 row(ol) = row(ol) + I go to 10 40 p(ol) = 3 queen =.false. return 50 row(ol) = l go to 10 end REFERENCES [I] Robert W. Floyd, Nondeterministi algorithms, J. ACM, vol. 14, Otober 1967, 636-644. [2] Solomon W. Golomb and Leonard D. Baumert, Baktrak programming, J. ACM, vol. 12, Otober 1965, 516-524. [3] Derrik H. Lehmer, Combinatorial problems with digital omputers, Pre. of the Fourth Canadian Math. Congress, 1957, 160-173. [4] Robert J. Walker, An enumerative tehnique for a lass of ombinatorial problems, Pre. of the Symposium o n_napplied Mathematis, vol. 10, Otober 1960, 91-94. [5] Charles J. Prenner, Jay M. Spitzen and Ben Wegbreit, An implementation of baktraking for programming languages, Pro. of the ACM Annual Conferene, August 1972, 763-771. [6] John A. Self, Embedding non-determinism, Software -- Pratie and Experiene, vol. 5, September 1975, 221-227. [7] Daniel G. Bobrow and Bertram Raphael, New programming languages for artifiial intelligene, Computing Surveys, vol. 6, September 1974, 155-174. [8] Jaques Cohen and Eileen Carton, Nondeterministi fortran, Computer ~., vol. 17, February 1974, 44-51. [9] Dianne E. Britton, et al., Proedure referening environments in SLS, Third ACM Symposium on Priniples of Programming Languages, January 1976, 185-191. [10] Ralph E. Griswold and David R. Hanson, An overview of the SL5 programming language, SL5 projet doument SSLDIa, Dept. of Computer Siene, The University of Arizona, [II] Tuson, February 1976. David R. Hanson, The syntax and semantis of SL5, SL5 projet doument SSLD2a, Dept. of Computer Siene, The University of Arizona, Tuson, April 1976. [12] David R. Hanson and Ralph E. Griswold, The SL5 proedure mehanism, SL5 projet doument SSLD4, Dept. of Computer Siene, The University of Arizona, Tuson, February 1976. [13] Ole-Jahn Dahl, Edsger W. Dijkstra and C. A. R. Hoare, Strutured Programming, Aademi Press, London, 1972, se. 1.17. [14] Niklaus Wirth, Program development by stepwise refinement, Comm. ACM, vol. 14, April 1971, 221-227. [15] Niklaus Wirth, Algorithms + Data = Prosrams, Prentie-Hall, Englewood Cliffs, New Jersey, 1976, se. 3.5. [16] Donald E. Knuth, Estimating the effiieny of baktrak programs, Mathematis of Computation, vol. 29, January 1975, 121-139. [17] 01e-Jahn Dahl, Bjorn Myhrhaug and Kristen Nygaard, The Simula 67 ommon base language, Norwegian Computing Centre, Oslo, Norway, 1968. [18] Frederik C. Druseikis and John N. Doyle, A proedural approah to pattern mathing in SNOBOL4, Pr0. of the ACM Annual Conferene, November 1974, 311-317. [19] Ralph E. Griswold, String sanning in SL5, SL5 projet doument SSLDSa, Dept. of Computer Siene, The University of Arizona, Tuson, June 1976. [20] Ralph E. Griswold, String analysis and synthesis in SL5, Pro. of the ACM Annual Conferene, Otober 1976. 405