Hostname: page-component-7479d7b7d-qs9v7 Total loading time: 0 Render date: 2024-07-12T14:32:03.354Z Has data issue: false hasContentIssue false

Automating the legal Reasoning Process: A Computer that uses Regulations and Statutes to Draft Legal Documents

Published online by Cambridge University Press:  20 November 2018

Get access

Abstract

Several years ago, the American Bar Foundation initiated a modest investigation into the feasibility of designing a computer that could automate the assembly of form legal documents such as wills, trusts, complaints, and the like. The investigation has since matured into a major research effort to design an entirely new kind of computational processor. A prototype processor has now been constructed, and it is undergoing field tests to determine whether it truly fulfills the specialized needs of the legal drafter.

This article briefly traces the history of the project, explaining the motivation behind it and describing the role of the participants. The article then introduces a new language—the principal result of the research effort—that may be used to draft both form documents and statutes, regulations, and other “instructions” defining how form documents are to be assembled. The new language, a subset of English, is fully comprehensible both to attorneys and to a properly designed computational processor. An attorney or paraprofessional may redraft form legal documents, statutes, and regulations in the new language and then feed them directly into the computer; no conventional programming is required. The computer asks questions couched in language taken from the forms and statutes, performs any necessary computations, and draws any necessary legal conclusions. The computer then returns client-customized legal documents ready for court filing. The article tells how the new processor may be set up to perform even the most complex drafting tasks—even complex tax-return preparation. Particular emphasis is placed on having the computer force the attorney or paraprofessional to proceed in a highly organized fashion with the development of a complex delivery system so that the computer, and not the attorney or paraprofessional, keeps track of the complex linkages between the elements of the system as it evolves.

In its concluding section, the article explores the possible impact of this new technology upon the legal profession and the public, and the author expresses his view that centralized systems set up by legal specialists to support the work of numerous nonspecialists may expand the areas in which the generalist may do competent work and may enable the general practitioner to buck the current trend toward specialization.

Type
Research Article
Copyright
Copyright © American Bar Foundation, 1979 

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

1 See William B. Eldridge, An Appraisal of a Case Law Retrieval Project, in Proceedings of the Computers and the Law Conference-1968, 36 (David L. Johnston, ed.; Kingston, Ont.: Faculty of Law, Queen's University, 1968); and William B. Eldridge & Sally F. Dennis, The Computer as a Tool for Legal Research, 28 Law & Contemp. Prob. 78 (1963).Google Scholar

2 James A. Sprowl, A Manual for Computer-assisted Legal Research (Chicago: American Bar Foundation, 1976). See also id., Computer-assisted Legal Research: Westlaw and Lexis, 62 A.B.A.J. 320 (1976).Google Scholar

3 The videotape project was also sponsored by the ABA Section of Science and Technology. The commercial and governmental agencies involved in computer-assisted legal research lent their assistance to the project. For further information, contact the Consortium for Professional Education, American Bar Association, 1155 East 60th Street, Chicago, Illinois 60637.Google Scholar

4 The system was used by the Cook County Legal Assistance Foundation to prepare divorce complaints following a computer-conducted interview. See William A. London & James A. Sprowl, The Computer in the Law Office: Interviewing Clients and Drafting Documents, LeCourt, No. 2, 1977, at 3. For technical details, see the Ph.D. thesis of Richard W. McCoy, Improving Legal Service Delivery with Computer Technology (University of Wisconsin, 1976). I also have in my possession an unpublished manuscript, Client Interviewing and Form Legal Document Preparation by Computer the Cook County Experiment, that describes the Cook County system in considerable detail. I am grateful to all concerned with the Cook County project for having shared their experiences with me.Google Scholar

5 Suppose, e.g., that it costs §50,000 to set up a payroll system and §10,000 per month to run it. After five years, the total run cost will have been §600,000. If an additional §25,000 invested in system design could halve the time it takes this system to compute a payroll, the investment would clearly be justified, since the net savings would be §275,000 over the five years. As long as run costs predominate over design costs, it makes good sense to strive for maximum speed of execution even at the price of increasing the design cost of a system.Google Scholar

When designing an automated legal delivery system, it is usually the setup costs that must be minimized not the run costs. Consider the case where a small firm wishes to set up its own customized will-assembly system. If it costs §2,000 to set up the system and §1 per will to run it, and if the system is used to produce 100 wills, the setup cost of §20 per will (§2,000 divided by 100 wills) predominates over the §1 per will run cost. Instead of striving to reduce the run costs in such a system, one must strive to reduce the cost of setting up such a system. One can allow the run costs to quadruple if doing so will decrease the setup costs, for the run costs associated with even the most complex legal document assembly system are always quite low.Google Scholar

6 Commerce Clearing House's Computax service uses a computer to prepare tax returns for attorneys nationwide. APCOA, a Chicago Title and Trust subsidiary, prepares Illinois probate forms and federal estate and Illinois inheritance tax returns for attorneys using a central computer.Google Scholar

7 For descriptions of such systems used in teaching law, see Peter B. Maggs & Thomas D. Morgan, Computer-based Legal Education at the University of Illinois: A Report of Two Years' Experience, 27 J. Legal Educ. 138 (1975); Roger Park & Russell Burris, Computer-aided Instruction in Law: Theories, Techniques, and Trepidations, 1978 A.B.F. Res. J. 1 (1978); Harry G. Henn & Robert C. Platt, Computer-assisted Law Instruction: Clinical Education's Bionic Sibling, 28 J. Legal Educ. 423 (1977).Google Scholar

8 See, e.g., Henn & Platt, supra note 7, at 427 n.20, 435, where it is stated that computerized instructional materials for law students on the topic “dividends” that occupied about 2 hours of student time (on the average) were created by an investment of 25 hours of law faculty time and 100 hours of programmer time using the PLATO system developed at the University of Illinois. See also note 59 infra. Google Scholar

Just as a manual automotive transmission maximizes the driver's flexibility and control but also greatly increases the driver's responsibilities, these medical interviewing and CAI systems maximize the doctor's or teacher's flexibility and control but require the doctor or teacher to draft each question, establish the sequencing of the questions, and cross-link the answers received to the reports being prepared. These three tasks must be carried out manually. As this article will demonstrate, these three tasks can be automated in a computerized legal-service delivery system. Questions can be derived directly from form documents and statutes, and the sequencing of the questions can be established by the processor without human intervention. Cross-linkages can also be established automatically.Google Scholar

9 The law constantly changes, and a computerized delivery system must be modified frequently to reflect the changes. A computerized legal-service delivery system is to be distinguished from a computerized accounting system that can be used for many years without change.Google Scholar

10 Just as a computerized accounting system must be audited by CPA computer specialists, a computerized legal-service delivery system that supports the activities of a number of attorneys should also be audited, but the auditor must be an attorney. If the computer is “programmed” in a language the attorney-auditor cannot understand, then the attorney-auditor will have a very difficult time conducting the audit. (There is a brief further discussion of auditing near the start of sec. I.)Google Scholar

11 Most computer professionals try to anticipate every possible future exigency when they write their computer programs. In the field of law, this simply cannot be done, for many legal problems involve unique factual situations. Even in will drafting, most wills require some customizing that cannot be anticipated in advance. Existing computational processors are often incapable of achieving the desired degree of flexibility.Google Scholar

12 The attorney is faced with the dilemma of taking a week off to set up the computer, there-by getting further behind in his or her current work, or putting off setting up the computer until some future time when there is a lull in the flow of work. It is all too easy to put off setting up the computer week after week and month after month. With conventional systems, the complexity of the programming task greatly aggravates this problem.Google Scholar

13 Computer professionals often believe mistakenly that their programming task is more complicated than the law. A communications problem can develop between an attorney who knows little about computers and a computer professional who knows little about the law.Google Scholar

14 Professor of law, University of Michigan Law School.Google Scholar

15 See Layman E. Allen & C. Rudy Engholm, Normalized Legal Drafting and the Query Method, 29 J. Legal Educ. 380 (1978); Layman E. Allen, Symbolic Logic: A Razor-edged Tool for Drafting and Interpreting Legal Documents, 66 Yale L.J. 833 (1957).CrossRefGoogle Scholar

16 I shall postpone a more detailed discussion of these multiple meanings until sec. IIIB.Google Scholar

17 See Allen, Symbolic Logic, supra note 15, at 858. I have made some changes in this normalized statute to bring it into accord with Allen's present system of notation.Google Scholar

18 See Allen & Engholm, supra note 15, at 396. Allen reports that students he has tested over nine years work 20 percent faster and 30 percent more accurately when supplied with normalized statutory materials.Google Scholar

19 A similar syntax can be found in COBOL, ALGOL, PL/I, extended BASIC, ALGOL 68, and PASCAL, to name a few modern languages.Google Scholar

20 Two research projects carried out at Stanford University have investigated the possibility of “programming” a computer using statutes. The first was the TAXMAN project, an attempt to use artificial intelligence techniques to program law into a computer. See L. Thorne McCarty, Reflections on TAXMAN: An Experiment in Artificial Intelligence and Legal Reasoning, 90 Harv. L. Rev. 837 (1977). The TAXMAN project went further than the present investigation in attempting to have the computer “understand” legal concepts and “perform” legal analysis. A prototype TAXMAN computer was constructed that could determine whether or not corporate reorganizations were tax free. The TAXMAN project is continuing at SUNY Buffalo where McCarty now teaches law. The second Stanford project, carried out by visiting lawyers and researchers Walter G. Popp and Bernhard Schlink, from the Law and Mathematics Research Group at the University of Heidelberg and Darmstadt, involved designing a computer that could accept normalized statutes, ask questions, and draw legal conclusions. This project is a direct predecessor of the present investigation, and I am indebted to these two researchers for several of their ideas that I used in designing the ABF processor. See Walter G. Popp & Bernhard Schlink, JUDITH, a Computer Program to Advise Lawyers in Reasoning a Case, 15 Jurimetrics J. 303 (1975). A third relevant research project, one that did not lead to the development of a prototype processor, was carried out at Harvard and MIT by Jeffrey A. Meldman, who is now a professor of management at MIT. Meldman developed a language that can be used to express legal concepts and relationships. In theory, this language enables a computer to find concepts in cases and apply the concepts to new factual situations. See Jeffrey A. Meldman, A Structural Model for Computer-aided Legal Analysis, 6 Rutgers J. Computers & L. 27 (1971). Like the TAXMAN project, Meldman's project goes further than the present investigation in attempting to have the computer “understand” legal concepts and “perform” legal analysis. But none of the above projects contemplated using normalized statutes to control the automated assembly of form legal documents as we have done.Google Scholar

21 Sangster, a linguist who has extensive experience working with computers, is now an assistant professor of computer science at Rutgers The State University. She is presently working with Law Professor L. Thorne McCarty, of Buffalo, on a continuation of McCarty's project (see note 20 supra).Google Scholar

22 Formerly with Northwestern University, Suski is now affiliated with the Livermore Radiation Laboratory where he is designing the control panel and displays for the laser nuclear fusion project. Suski is an expert at designing languages for computers.Google Scholar

23 My principle sources were John E. Nicholls, The Structure and Design of Programming Languages (Reading, Mass.: Addison-Wesley Publishing Co., 1975); A. van Wijngaarden et al., eds., Revised Report on the Algorithmic Language Algol 68 (Berlin: Springer-Verlag, 1976); C. T. Fike, PL/I for Scientific Programmers (Englewood Cliffs, N.J.: Prentice-Hall, 1970); Kathleen Jensen & Niklaus Wirth, PASCAL User Manual and Report (2d ed. New York: Springer-Verlag, 1974); Louis D. Grey, A Course in APL with Applications (2d ed. Reading, Mass.: Addison-Wesley Publishing Co., 1976); IBM OS COBOL (E.F.) Language, no. ac28-6516-9 (10th ed. IBM Co., 1973); FORTRAN Extended Reference Manual: 6000 Version 3; 7000 Version 1, Control Data Corporation no. 60329100 (rev. D; Sunnyvale, Cal.: Control Data Corp., 1973); BASIC Version 3 Reference Manual: CDC Operating Systems: Nos I, Nos/BE 1, Control Data Corporation no. 19983900 (rev. D; Sunnyvale, Cal.: Control Data Corp., 1978).Google Scholar

24 (All footnotes marked with an asterisk are directed primarily to those having a strong technical background.)Google Scholar

Such students have great difficulty mastering multidimensional array addressing and counter-controlled looping, particularly when the counters of nested loops are used as indices for multidimensional array addressing. For example, my students had great difficulty understanding and writing FORTRAN programs such as the following:Google Scholar

which is part of a simple routine for alphabetizing a list of names. In sec. IID and in notes 47 and 48, I describe the new notation we have developed for loops and for addressing single and multidimensional arrays automatically using implied loop repetition counters.Google Scholar

25 See note 36 infra. Google Scholar

26 The concept of having the computer “write its own program” following instructions written out in the language of the user is one that I first encountered while working with process control system designers at Westinghouse. I am grateful to John Gomola and his associates for having first introduced me to this concept as a way of lowering the cost and speeding the development of a computerized system.Google Scholar

27 Filstead is a “systems” programmer. His specialty is developing the programs at the heart of a multi-job processor that coordinate the simultaneous execution of the different jobs. Currently, he is assistant manager of systems programming at Northwestern University's Vogelback Computation Center.Google Scholar

28 The compiler is that portion of a processor that translates documents and computational procedures drafted by humans into a numeric form more suited to automated processing.Google Scholar

29 See, generally, secs. II and III for examples of how statements are converted into questions.Google Scholar

30 The term “procedure” is defined more precisely in sec. IIIA.Google Scholar

31 This project will be sponsored jointly by the American Bar Foundation and the Lewis and Clark University Law School, with funding from the M. J. Murdock Charitable Trust.Google Scholar

32 The only important limitations built into the ABF language are the lack of any bit manipulation and masking operators and the lack of any string search-and-replace operators. The language includes provision for handling real numbers and for manipulating character strings of any length, and it includes an operator for searching a character string to see if it contains a word, a phase, or an ordered sequence of words and phrases, with provision for variable suffixes, Since the processor is designed to be used in conjunction with a computer-based text editor, character-string search-and-replace operations can be carried out semimanually using the text editor. A fully automated search-and-replace capability is only rarely needed in legal document assembly, and we felt such a capability probably could not be used effectively by legal assistants even if it were provided. We also saw no need to provide bit manipulation and masking operators in a system designed to be used primarily by attorneys and legal assistants. If field testing discloses a need for these operators, they can be added to the language later on.Google Scholar

33 A very small payroll for a 10- or 20-person law firm could actually be implemented using the language ABF. While it is theoretically possible to implement a much larger payroll system using the language ABF, languages such as COBOL and PL/I are far better suited for implementing large payrolls.Google Scholar

34 The language ABF provides all the usual logarithmic and trigonometric functions found in the most advanced versions of FORTRAN IV. All computations are carried out using 60-bit floating-point numbers that can provide up to 12 significant figures of precision (7 significant figures are normally provided see note 41 infra). Scientific notation in print-outs may be obtained through use of a declaration “ALLSCIENTIFIC” that causes values larger than one million and smaller than .001 to be printed out in scientific notation. Numbers between 10-99 and 1099 can then be processed.Google Scholar

35 When published, these manuals may be ordered from the American Bar Foundation, 1155 East 60th Street, Chicago, Illinois 60637.Google Scholar

36 While there are a number of different formats for printed legal forms, most hand-typed legal forms either hold space for specific items of information about clients by drawing a line and typing a number above the lineGoogle Scholar

I, (22), being of sound mind,Google Scholar

and providing a separate key to the meaning of the number:Google Scholar

22. The testator's name:Google Scholar

or by inserting into the form a bracketed statement indicating what client information is to be inserted at what points:Google Scholar

I, [the name of the testator], being ofGoogle Scholar

This second notation is the more understandable of the two, since no cross-reference to a second document is required. From the point of view of the typist, typing brackets is also simpler than typing underlining. Accordingly, we have adopted the second notation in the language ABF.Google Scholar

37 Computer scientists call these space holders “variable names,” but I shall call them “space holders” throughout this article.Google Scholar

38 In this and all other examples presented in this article, to keep the article simple, I shall not exercise an option one always has when using the ABF processor. One may append a “short” name to the front of each space holder. For example, I could and probably should redraft this simple form will to read as follows:Google Scholar

I, [testname], of [city st: the city and state where the testator lives], do make this my last will and testament.Google Scholar

I leave all of my personal effects and household goods to my [h or w: husband or wife], [spnm: the name of the testator's spouse], if [he or she: the spouse's subjective pronoun, he or she] survives me,Google Scholar

If one prefixes each space holder with a short name in this manner, one may use the short name by itself at later points within the same document, as I have done with “[testname]” in the first line of this will. The ABF processor can be used to convert such short names into long names at a later time to make a document more readable. The short names may also be used by themselves in client files that are typed in manually, thereby saving many keystrokes.Google Scholar

Short names must be used for an additional reason at present. For reasons of computational efficiency, the prototype processor never looks beyond the first 8 nonblank characters in a space holder to determine whether it is identical to some other space holder. Accordingly, the two space holdersGoogle Scholar

andGoogle Scholar

are assumed by the ABF processor to be the same space holder, since they both begin with “the name o.” Rewriting them asGoogle Scholar

andGoogle Scholar

avoids this possible confusion. As a matter of hindsight, it would have been much better to have examined at least the first 16 nonblank characters in each space holder to determine if they were identical. But technical restraints and budget restrictions forced us to examine only the first 8 nonblank characters in the prototype processor.Google Scholar

39 If these questions are not entirely satisfactory to the attorney, they may be replaced with questions formulated by the attorney. See sec. IVA3. In addition, the processor may be set up to ask “Is the testator a man?” and then use the answer to this one question to compute the answers to the second (husband or wife) and fourth (he or she) questions automatically. See sec. IIIF.Google Scholar

40 Most programming languages depart from the normal rules of algebra in a variety of ways. For example, they do not permit implied multiplication of a variable times a parentheticalGoogle Scholar

because this is the notation used for addressing the “A+B”-th element of an array of values called “X” or for passing the value “A + B” to a function “X.” Similarly, they do not allow one to impliedly multiply a variable times a constantGoogle Scholar

because this could be confused with certain number codes such asGoogle Scholar

which means “2 times 10 raised to the sixth power” in many languages. In the language ABF,Google Scholar

andGoogle Scholar

are valid ways of saying “x times (a plus b)” and “two times x,” respectively. Addressing the “a + b”-th element of an aray x is done as follows:Google Scholar

and “2 times 10 raised to the sixth power” is writtenGoogle Scholar

in the language ABF. Some programming languages do not allow strings of two or more unary operators such asGoogle Scholar

and require that parentheses be used in an expression such asGoogle Scholar

In the language ABF, strings of unary operators are permissable, and the above expression may be writtenGoogle Scholar

without any parentheses.Google Scholar

41 The “precision” of the processor is normally adjusted to 7 significant digits. The precision controls the accuracy of all tests of equality and inequality. Accordingly, a separate “integer” number system is not required to compensate for overprecision in tests of equality or for use in loop control or array addressing. The precision of the processor may be varied from 2 up to 12 significant digits by a command of the formGoogle Scholar

and such a command may be embedded within any document requiring greater or lesser precision.Google Scholar

The “raise to the power” operationGoogle Scholar

is also affected by the precision of the processor. If B is within the precision factor of being a true integer (2, 3, etc.), then a true-integer power function (square, cube, etc.), is used. If B is not within the precision factor of being a true integer (2.3, 3.4, etc.), then a less accurate and more time-consuming logarithmic power function is used. Again, the need for separate floating-point and integer arithmetic is avoided.Google Scholar

42 The following is a complete list of the mathematical operators the ABF processor can accept: − (minus), + (plus), * (times), / (divide by), % (percent of), * (times ten to the power), ** (raised to the power), ABS (absolute value of), INT (integer portion of), EXP (“e” to the power), LN (natural logarithm of), LOG (logarithm base ten), SQRT (square root), the trigonometric functions SIN, COS, TAN, ASIN (arcsine), ACOS (arccosine), and HTAN (hyperbolic tangent); parentheses, and braces.Google Scholar

43 Any such special symbol may be freely used within a space holder if it is enclosed within tildes, ∽, to inform the processor that the symbol is not meant to be a mathematical operator. Accordingly, the passageGoogle Scholar

to be asked. Strings of two or more capital letters within a space holder must also be enclosed within tilde quotation marks or they will be assumed to be misspelled commands to the processor.Google Scholar

44 The “IF…ENDIF” syntax is modeled after the “IF…FI” syntax of the programming language ALGOL 68, the “WHENEVER…OTHERWISE…END” syntax of the obsolete language MAD (Michigan Algorithmic Decoder), the “IF…ELSE…ENDIF” syntax of one Control Data Corporation command language, and the “IF…OTHERWISE…” syntax of COBOL. ALGOL 68 uses “IF” spelled backwards, “FL,” to signal the end of an “IF” clause. See van Wijngaarden, supra note 23. We felt that “IF…END” would be more meaningful to attorneys and paralegals than “IF…FI.” The ABF language as originally conceived included the forms “IF…END,”“REPEAT…END,”“ASK…END,” and “DISPLAY…END.” OUr earliest experiments with paralegals revealed that the use of the same “END” in all of these structures caused confusion, since it was often unclear which “END” went with which “IF,”“REPEAT,”“ASK,” Or “DISPLAY.” To facilitate the detection and correction of errors, we later adopted use of the term “ENDIF” to terminate all “IF” clauses and “ENDRPT” or “ENDREPEAT” to terminate all “REPEAT” clauses. The ABT processor can now detect and flag as errors any improper placement of these terms.Google Scholar

In the language ALGOL 68, “IF” and “FT” are simply parentheses. In the ABF language, as in COBOL, “IF” is an operator and a statement separator. “IFF” (if and only if) and “UNLESS” may be substituted for “IF” in the language ABF. The term “ENDIF” is a statement separator as well as the terminator of an “IF,”“IFF,” or “UNLESS” clause. “ENDIFF” and “ENDUNLESS” may also be used, if desired. This usage of “IF” is to be distinguished from that in FORTRAN, PL/I, BASIC, and PASCAL where there is no equivalent to the “ENDIF” operator and where only a single statement may follow an “IF” clause (in PL/I and PASCAL, that “single statement” may itself contain many statements).Google Scholar

45 The “IF…OTHERWISE…ENDIF” structure used here is patterned after the “IF…ELSE…FL” structure of ALGOL 68. See van Wijngaarden, supra note 23. ELSE may be used instead of “OTHERWISE” in legal documents, if desired. An “OTHERWISE” operator appears in COBOL and in the obsolete language MAD (Michigan Algorithmic Decoder). The usage of “OTHERWISE” or “ELSE” here is not to be confused with that in PL/I, BASIC, and PASCAL, where only a single statement may follow an “ELSE” operator and where there is no need to provide an “ENDIF” operator (in PL/I and PASCAL, the “single statment” may contain many statements). The “IF…ELSE…” structure is one of three fundamental structures recommended for use in all programming by many computer scientists. It forms an important cornerstone of a version of what is called “structured programming.” See Harlan D. Mills, Mathematical Foundations for Structured Programming (IBM Co., Federal Systems Division, 1972), reprinted in Victor R. Basili & Terry Baker, eds., Structured Programming (Institute of Electrical and Electronic Engineers Computer Society, 1975).Google Scholar

46 This use of special symbols and multiple-letter strings of capital letters as operators is attributable to the programming languages ALGOL and ALGOL 68. See Nicholls, supra note 23., or van Wijngaarden, supra note 23.Google Scholar

47 The structure “REPEAT…UNTIL…ENDRPT” is just one of a number of structures that are possible. Other examples areGoogle Scholar

These illustrate the flexibility of the language. Any repetitive passage may contain any number of exits each of the form “WHILE…“UNTIL… or “IF…EXIT…ENDIF.” If it is desired to have a repetition counter set up to count the repetitions, the structure “USING counter name REPEAT…ENDRPT” is used; “counter name” is then a space holder that may be inserted into a form document or used to control the termination of the repetitive operation, as in the following example:Google Scholar

This passage causes the following questions to be asked:Google Scholar

and results in the production of the following document:Google Scholar

The loop notation adopted here (“REPEAT…ENDRPT” with optional internal “WHILE”S, “UNTIL”s and “EXIT”S and with an optional “USING…” preceding the “REPEAT”) is unique. It resembles the loop notation used in several modern programming languages e.g., the PASCAL syntax “REPEAT…UNTIL…” (see Jensen & Wirth, supra note 24, at 23) and the ALGOL 68 syntax “FOR…DO…OD” (see van Winjngaarden, supra note 23, at 63-64). Both of these languages allow a “WHILE…” clause to precede repetitious clause. In the language ABE, the “WHILE…” clause is within the repetitious clause.Google Scholar

Because we are not concerned with attaining absolute maximum execution speeds, we forgo certain optimization advantages of the conventional loop structureGoogle Scholar

that appears in almost all standard programming languages. While fast, this form is difficult to teach. When an index is required, we use the alternate form:Google Scholar

But an index is not normally required, since the ABF processor can address array variables automatically, as I shall explain in the note that follows.Google Scholar

We cannot use “DO” as the loop operator, for “DO” is a helper verb in the language ABF.Google Scholar

48 The number sign, #, preceding a space holder (or variable name) is a declaration that the variable is an array variable. The size and dimensionality of such an array space holder does not have to be declared in advance. In my experience teaching computer programming to law students, I learned that students who lack a strong mathematical background often have great difficulty mastering the complexities of addressing multidimensional array variables using loop repetition counters. See, e.g., the FORTRAN program given in note 24 supra. To alleviate much of this difficulty the language ABF adopts the conventions described below.Google Scholar

First, an array address is appended to the left of a space holder, rather than to the right, and is always preceded by a number sign, #:Google Scholar

The number sign distinguishes an array address from a parenthetical that is to be multiplied by the value of a space holder. This convention allows the language ABF to include implied multiplication as a standard feature. For example,Google Scholar

is a reference to the “y + 2”d element of the array “items” whileGoogle Scholar

is the nonarray variable “items” multiplied by “y + 2.”Google Scholar

Second, “literal” array addresses such as the following are permitted:Google Scholar

These forms are used, e.g., in client files where the value of each individual element in an array may be set forth (see the example below).Google Scholar

Finally, within repetitive passages, the number sign may be appended to the left of a space holder all by itself, and then an implied loop reptition counter is used to address the elements of the array. Nested repetitive statements may be used to address multidimensional arrays, as in the following example taken from a probate appearance form:Google Scholar

When this document is processed, the interviewing sequence is as follows:Google Scholar

This interview produces the following language in the appearance form:Google Scholar

and the following client file:Google Scholar

Note how the array addressing is entirely automated in this example. Note how much simpler the above ABF passage is than the comparable FORTRAN passage set forth in note 24.Google Scholar

49 This follows because the ABF language includes the following basic structures that may be nested within one another to any desired depth:Google Scholar

It is, therefore, a “structured” programming language that can be used in drafting documents (or, more generally, programs or algorithms) of arbitrary complexity. The mathematical proof of the completeness of any such “structured” language is set forth in Mills, supra note 45.Google Scholar

In addition to being a structured language, the ABF language does not need nor does it have a “GOTO….” structure. “GOTO”s are the cause of much of the unnecessary complexity in conventional programs. See E. W. Dijkstra, GOTO Statement Considered Harmful, Corn. Am. Computer Manufacturers, Mar. 1968, at 147-48, 538, 541; E. W. Dijkstra & C. A. R. Hoare, Structured Programming (New York: Academic Press, 1972).Google Scholar

50 This is not a very good question. Whenever a question formulated automatically by the ABF processor is not satisfactory, the attorney can replace the unsatisfactory question with a new and better question. See sec. IVA3.Google Scholar

51 A preprinted form is fed manually into a typewriter-style computer terminal using the paper-feed knob. The operator next depresses the “carriage-return” key, shifting the form upward until the first line to be filled in by the computer is opposite the printing element of the typewriter. Using the space bar and the < and > keys, the operator moves the printing element across the line, typing < > < > < > wherever data items are to be inserted into the form. The operator then depresses the carriage-return key repeatedly until the next line to be filled in by the computer is opposite the printing element, and the operator once again moves the printing element across the line, typing spaces and arrows onto the line to indicate where data items are to go. This process is repeated until the entire form passes through the typewriter. In this manner, the computer is instructed where it is to position data items within the preprinted form. This process takes only 10-15 minutes.+keys,+the+operator+moves+the+printing+element+across+the+line,+typing+<+>+<+>+<+>+wherever+data+items+are+to+be+inserted+into+the+form.+The+operator+then+depresses+the+carriage-return+key+repeatedly+until+the+next+line+to+be+filled+in+by+the+computer+is+opposite+the+printing+element,+and+the+operator+once+again+moves+the+printing+element+across+the+line,+typing+spaces+and+arrows+onto+the+line+to+indicate+where+data+items+are+to+go.+This+process+is+repeated+until+the+entire+form+passes+through+the+typewriter.+In+this+manner,+the+computer+is+instructed+where+it+is+to+position+data+items+within+the+preprinted+form.+This+process+takes+only+10-15+minutes.>Google Scholar

After the form leaves the typewriter, the names of all the desired data items are typed out within a single set of brackets at the very bottom (or just beyond the bottom) of the preprinted form, separated from each other by semicolons, and arranged in the same order as the < > locations on the form. The processor can then fill out the preprinted form automatically.+locations+on+the+form.+The+processor+can+then+fill+out+the+preprinted+form+automatically.>Google Scholar

52 Layman Allen has been my partner in formulating the statute-drafting language introduced in this chapter. It is actually his normalized language to which I have added a number of extensions, with his assistance. The language project is not finished additional work needs to be done to improve the way the language handles legal obligation and permission.Google Scholar

In implementing the language, I have made considerable use of multiple-valved logic theories developed by attorney Reed C. Lawlor. Some years ago, Lawlor proposed designing a computer that would allow a proposition to be true, false, or undefined a three-level propositional calculus (as opposed to a conventional two-level calculus where propositions must be either true or false). In the ABF process, we have adopted a four-level propositional calculus in which propositions may be true, false, not yet defined, or never-to-be defined. I am grateful to Reed for his contribution to this project.Google Scholar

53 The language COBOL uses periods to terminate sentences, including “IF…OTHERWISE… clauses.Google Scholar

54 The “IF…THEN…OTHERWISE…ENDIF” Construct illustrated here is similar to the “IF…THEN…ELSE…FI” construct of ALGOL 68. See van Wijngaarden, supra note 23, at 59, 60. But note that in ALGOL 68 the “IF” and “FI” are simply brackets or parentheses, while the “THEN” is the operator. In the ABE language, as in COBOL, the “IF” is the operator, while “THEN” is an optional statement separator that is equivalent to a semicolon. The “IF,”“OTHERWISE,” and “ENDIF” are all statement separators as well, so an “IF” clause cannot appear within an arithmetic expression in the language ABF as it can in ALGOL 68.Google Scholar

Use of the “ENDIF” is optional only in procedures. In documents, every “IF” must have a matching “ENDIF.” In actual use of the processor, the trailing “ENDIF”s in procedures were accidentally omitted so often that we finally relented and made them optional. In documents, on the other hand, one almost never omits an “ENDIF” except in error.Google Scholar

55 This expression is of the form “IF A < N OR C.” Every computational processor of which I am aware (except for some versions of COBOL, a language that has no logical variable) require A and B to be numeric and C to be logical (true or false). But C, in this case, is actually numeric. Even the ABF processor initially assumes C is logical and asks,Google Scholar

and accepts only a “yes” or “no” answer to this question. When confronted with such an improper question, the attorney may supply the processor with a “new question” (see secs. IVA3 and VC3) that demands a numeric reply by typingGoogle Scholar

The number sign, #, forces the processor to insist on a numeric reply to this question. The processor then asks,Google Scholar

and accepts only a numeric reply for C. The processor then interprets the above expression to mean “IF A < B OR A < C,” as was the intent of the attorney who drafted the expression.Google Scholar

56 What we are about to develop is what computer scientists call the “top-down” approach to system design. See, e.g., P. Van Leer, Top-Down Development Using a Program Design Language, IBM Systems Journal reprint no. G321-5032, reprinted in Peter Freeman & Anthony I. Wasserman, eds., Tutorial on Software Design Techniques, IEEE Catalog no. 76CH1145-2 C (San Francisco, Cal.: Institute of Electrical and Electronics Engineers, 1976). Keeping in mind that the language nee is a “structured” language having no “GOTO” command (see note 49), what we are about to describe is a way of designing well-structured systems from the top down in accordance with the modern trend in software engineering. But the ABF processor is more than simply an implementation of top-down, structured programming. The ABF processor is unique in its ability to produce an operative system with only the top levels designed, long before the lower levels have been created. And the systematic way the ABF processor guides the designer through the system, asking him to supply the lower levels of programming, is also unique. Finally, the concept of storing documents and procedures as separate entities within a library, rather than merging them into a unified program or structuring them as subroutines without which the system cannot run, is new and represents a substantial departure from the traditional way software systems are organized. The libraries themselves do not constitute programs; an operative program is only constructed at “run” time (see sec. VF). These special features of the ABF processor are developed in this and the following sections. Even those readers familiar with the principles of top-down, structured programming will find a considerable amount of interesting new material in these two sections.Google Scholar

57 Preferably, the new document should be stored under the full library name “the passage defining the powers and duties of the executor.” In the Northwestern University prototype version of the ABF processor, we are using an existing library mechanism developed by Control Data Corporation and Northwestern University that limits the length of the names of library members to seven or fewer letters and numbers, with the first character always having to be a letter. Accordingly, we use the first seven letters and numbers in each space holder as the name of any library member (be it a document insert, a procedure, a new question, or a data file) that corresponds to the space holder. In the case of the space holder “the passage defining the powers and duties of the executor,” the seven-letter name of the corresponding library member is “thepass.” The prototype processor also never looks beyond the eighth nonblank character in two space holders when attempting to ascertain whether they are identical (see note 38 supra). Clearly, problems will occur if the first seven or eight characters in any two space holders within a document are identical.Google Scholar

To avoid such problems, it is customary to precede each space holder by a seven-or-fewer-character abbreviation and a colon (see note 38 supra for an example). The abbreviation is used both as an abbreviation for the space holder and also as the name of any library members that correspond to the space holder the abbreviation precedes. In actual practice, this simple convention has eliminated all problems attributable to the shortness of the permissible library names.Google Scholar

58 See note 56 supra for a brief discussion of top-down programming.Google Scholar

59 It took these students about 12 hours to build a system that could conduct a 45-minute taxreturn-completion interview. Contrast this achievement with the 125 hours it might take one to set up 2 hours of computer-assisted instructional materials using the PLATO CAI system (see note 8 supra). In addition to forcing one to proceed top down in an organized manner, the ABF processor also possesses a number of features to be discussed in sec. V that help one to locate and correct errors more rapidly than is possible with conventional processors. But it is not completely proper to compare a document-assembly system with a computer-assisted instructional system in this manner, for the different end applications of the two systems may affect the time it takes to set up each system just as much as do technical differences between the PLATO instructional processor and the ABF processor. The ABF processor speeds system development by producing on-line interviews automatically and by systematizing the process of developing computational procedures, among other things. The PLATO system forces the instructor to develop questions and procedures manually. The process of setting up the PLATO system is much slower, but in return the instructor is given much closer control over the on-line interactions between the student and the computer. Of particular importance, the instructor always determines the precise sequencing of the questions asked by the PLATO system. The ABF processor automatically determines the order in which it asks questions. While an attorney setting up the ABF processor is freed from having to worry about question sequencing, the attorey forfeits precise control over sequencing. The attorney can, if he wishes, override the question sequencing chosen by the ABF processor in several ways-e.g., by having the processor assemble a “dummy” report that requires the information in a certain order but then it takes just as long to set up the ABF processor as it does to set up the PLATO processor.Google Scholar

60 In general, the library will also contain address lists, lists of tax table values, and other such data files. These are normally scanned by the processor when it is performing some repetitive task such as drafting form letters or searching down a tax table to determine into which bracket a taxpayer falls, for example. In the prototype processor, all the members of a library contain text, and the first character in each member identifies what type of member it is:Google Scholar

This first-character convention also applies to responses received from the on-line user. In practical effect, the attorney or paraprofessional is the “library member” the processor comes to when no other library member can be found that corresponds to a space holder.Google Scholar

61 Libraries containing documents, computational procedures, new questions, and data files do not collectively constitute an algorithm. The individual documents, procedures, and new questions are algorithms, but the space holders within one document, procedure, or new question that are defined by some other document, procedure, new question, or data file, are not subroutine calls. Hence, an ABF library differs fundamentally from a library of conventional programs that call one another as subroutines. If a subroutine is deleted from such a conventional program library other programs within the library are then defective, for their calls to the deleted subroutine cannot be fulfilled. Any document, procedure, new question, or data file may be deleted from an ABF library at any time, and all the remaining library entities remain fully operative. It is this unique property of the ABF libraries that lets one begin the programming by creating the documents and then work slowing downward, creating layer upon layer of procedures and new questions, and yet always have a fully operative system. The ABF processor is actually a “nonalgorithmic” processor that assembles a unique “algorithm” or program from documents, procedures, and new questions every time it is run. The ABF processor writes its own program (see sec. V). While not a true “problem-solving” processor such as those that can solve equations, the ABF processor possesses the ability to search a library for algorithmic definitions of any undefined variable the processor encounters within a document or procedure. Conventional systems (implemented, e.g., using FORTRAN or BASIC) either abort when they encounter an undefined variable or else assign some arbitrary or random value to such variables. It is in its ability to search for and find algorithmic definitions of undefined variables that the ABF processor differs most from conventional algorithmic processors.Google Scholar

Since algorithmic linkages (subroutine calls, “GOTO”S, and sequential sets of ordered instructions) among the various documents, procedures, new questions, and data files in an ABF library are not needed, the ABF libraries are substantially free from such algorithmic linkages. Subroutine calls and “GOTO”S are not used, and sequential sets of ordered instructions exist only within individual documents, procedures, and new questions. These linkages particularly the “GOTO” linkages-are the ones that become tangled when conventional program systems are revised. Since these linkages are simply not there, they cannot possibly become tangled. Accordingly, a properly designed ABF library is immune to the perils of poor structuring. There is simply no structuring present in ABF libraries except within individual documents or procedures. Accordingly, the documents, procedures, new questions, and data files in an ABF library may be extensively revised over and over again without the library ever becoming poorly structured and difficult to comprehend or audit.Google Scholar

62 Both form documents and computational procedures are “compiled” or translated into executable program segments by the same identical compiler program, and the resulting compiled program segments are indistinguishable from one another. When compiling computational procedures, the compiler program flags as errors any text found outside of brackets and any standalone expressions, since these should not normally appear within procedures.Google Scholar

63 In this example and in the examples that follow, for the sake of simplicity, I allow the reader to assume that the processor is scanning the document or procedure itself. I give the erroneous impression that documents and procedures do not change in appearance when they are fed into the ABF processor. Actually, the documents and procedures are changed radically by the compilation process as they are fed into the ABF processor.Google Scholar

64 Before any computation upon dollar amounts is performed, the values entering into the computation are normally rounded to the nearest penny to insure that the computer gives the same result that one would obtain using a desk calculator. Other rounding options are available.Google Scholar

65 The processor encounters the multiplication operator before it encounters the EQUALS operator because the processor must evaluate the expression “BC” before it can set A equal to the value of this expression.Google Scholar

66 They do not always disappear. See secs. VD and VE infra. Google Scholar

67 The attorney types an exclamation mark, !, followed by a carriage return to signal the processor that he does not wish to answer a question.Google Scholar

68 The command “!STOP” halts the processor immediately and returns a partially completed document. The command “| FINISH” causes the processor to finish assembling the document as best it can without asking any more questions.Google Scholar

69 Assuming the command “!STOP” is given, the upper portion of the document will be completely client-customized, and the lower portion will be unprocessed it will contain bracketed expressions. The step that the processor was attempting to execute will be enclosed within the first (or uppermost) set of brackets in the unprocessed portion of the document; and parentheses, if present, will focus one's attention toward the very step the computer was attempting to take when it malfunctioned. By comparing this partly assembled document to the original, one can normally determine quickly what was wrong with the original.Google Scholar

70 The text-editing program, called “EDITOR,” is a sophisticated programmer's text editor that has been fully rewritten for use as a general upper-and-lower-case text processor. EDITOR was written originally by Suski (see note 22 and the accompanying text), and it was later rewritten entirely by John L. Norstad, a member of Northwestern University's Vogelback Computation Center staff. Norstad worked closely with me on this project, making many modifications at my suggestion to improve the compatibility of EDITOR and the ABF processor. The resulting package is much more than just a text-editing system. It includes a library-document management system and also a report-generating system powerful enough to generate lists of pending cases broken down and sorted in various ways and also lists of docket calendar entries also broken down and sorted in various ways. The system can also sort cash-disbursement and time-change records into a variety of useful reports, and with the addition of some simple report-generating programs it could also do law office financial accounting as well. We hope to develop such programs in the near future so that our system will be a prototype of future law office systems.Google Scholar