Opinion
Patent Appeal No. 9106.
August 15, 1974.
William Ryan, Murray Hill, N.J., attorney of record, for appellant.
Joseph F. Nakamura, Washington, D.C., for the Commissioner of Patents; Jere W. Sears, Washington, D.C., of counsel.
Appeal from the Patent Office Board of Appeals.
Before MARKEY, Chief Judge, and RICH, BALDWIN, LANE and MILLER, Judges.
This appeal is from the decision of the Patent Office Board of Appeals, adhered to on reconsideration, affirming the examiner's rejection of claims 1-8, all the claims in appellant's application.
Serial No. 610,837, filed January 23, 1967.
The Invention
Appellant's invention relates to a system and method for detecting programming errors or "bugs" in programs for electronic data processors or computers. The application states:
Many modern computers utilize a stored program. In order to make the program available to the computer at its interval operating speed, the program is stored in the internal memory of the computer, often in the same memory as the data to be processed is stored. Such a stored program computer is particularly liable to certain types of programming errors, such as addressing errors.
One addressing error which is particularly difficult to locate and correct is a data fetch in which the wrong storage location is addressed. Whatever is stored in that location is treated as the desired data, and processing continues, compounding the error by many subsequent stages of processing. The exact point at which the original error occurs is often very difficult to locate and correct.
Similarly, a transfer of control might be effected to an undesired memory location. Processing will normally continue, in spite of the error, and many incorrect processing sequences are executed before an impasse arises. Again, it is often difficult to locate the exact source and nature of the error.
In accordance with the present invention, the above and similar types of programming errors are detected by executing the same program at least twice. For each execution, the component subprogram parts of the program are stored in the computer memory in different sequences. Since transfers and data fetches then take place to and from completely different memory addresses, a comparison of the memory location contents for the different cases will immediately indicate addressing errors.
The invention can most advantageously be used in modern data processors of the type using multiple central processors and multiple memories. In this case, the program can be loaded in normal and in scrambled order in the different memories, or different portions of the same memory, and a separate central processor can be used to execute each program sequence. Provisions can then be made to compare the instructions executed and the data retrieved in real time, as they are executed or retrieved. The processing sequence can therefore be terminated immediately upon the occurrence of an error, and subsequent erroneous processing can be avoided. The same effect can be obtained with a single processor by alternately executing program steps from the two differently stored versions of the program, and comparing results after the execution of each pair.
The application contains simplified block diagrams (Figs. 1 and 3) of single and multiprocessor computers and descriptions thereof, which are suitable for use with appellant's error detection system and method.
The application also contains the following figures and descriptions thereof which relate to the procedures for storing a program in the computer in a normal and "scrambled" order:
In FIG, 2A, for example, there is shown a graphical or schematic representation of what might be considered the normal or natural order of the program. As can be seen in FIG. 2A, the program is divided into subsections, 30, 31, 32, 33, 34, 35, and 36. These subdivisions may be entirely natural divisions of the programs, representing different subroutines, for example, or may be entirely arbitrary subdivisions, taking care to avoid breaks in the range of a "skip" type of instruction, in transfer vectors and in the range of "relative-to-current-address" types of instructions. The entry point for each subdivision is then given a location symbol ("A", "B", "DATA 1", etc.) and a transfer instruction inserted at the end of each subdivision, directing transfer to the next succeeding subdivision. These successions, of course, are logical, and need not be physical. The rules for such subdividing are sufficiently simple that they could be built into an assembler or compiler and thus be done automatically. The successive vertical positions of the subdivisions, of course, represent successive physical locations in the internal memory of the computer.
In accordance with the invention, at least one scrambled version of the program is also prepared for use with the arrangement of FIG. 1. One such scrambled version of the program mapping of FIG. 2A is shown in FIG. 2B. In FIG. 2B, the logically similar program subdivisions are labeled with the same reference numerals, but primed in FIG. 2B. Thus, the second program subdivision in FIG 2B is subdivision 32', corresponding to the third subdivision 32 in FIG. 2A. Not only are the program instructions (30, 31 and 32) subdivided and scrambled (30', 31' and 32'), but the data blocks (33, 34 and 35) are likewise subdivided and scrambled (33', 34', and 35'). Moreover, instruction subdivisions and data subdivisions may be intermingled. The single instruction block 36 (a single transfer instruction) remains the first block in each version, however, to insure the beginning of execution at the logical beginning of the program.
The scrambled order shown in FIG. 2B is only one of many possible scrambled orders. Any other order is equally suitable provided only that a substantial degree of actual scrambling is involved. One simple scrambling technique which can be easily implemented automatically in an assembler or compiler is a simple reversal of order of the subdivisions. Other simple scrambling rules can likewise be easily implemented to take place automatically.
Claims 1, 4, and 5 are exemplary:
1. An error detection system for computers comprising
a memory having a first portion storing a first sequence of program instructions and data items and having a second portion storing a second sequence of program instructions and data items,
said second sequence being substantially identical to said first sequence except for the ordering of the respective sequences of said instructions,
means for executing said program instructions from each of said sequences, and
means for comparing intermediate results of said executions. (paragraphing ours).
4. The method of detecting programming errors in a computer program comprising the steps of
(1) mapping said program into storage in at least two substantially different sequential orders,
(2) executing both said substantially different sequential orders for said program, and
(3) comparing intermediate results of step (2) for mismatches.
5. Apparatus for detecting programming errors in a computer program comprising
(1) means for mapping said program into storage in at least two substantially different sequential orders,
(2) means for executing both said substantially different sequential orders of said program, and
(3) means for comparing the intermediate results of said executing means for mismatches.
The Rejection
The board sustained the examiner's rejection of all the claims as based on an inadequate disclosure, relying upon the first paragraph of 35 U.S.C. § 112.
The examiner stated:
The specification is deemed sufficient in setting forth the apparatus for carrying out the proposed error detection arrangement once the two versions of a hypothetical program to be debugged are stored in memory and ready for execution and comparison of certain intermediate results. However, the means and method of carrying out the essential "scrambling" process have not been disclosed in such full, clear, concise, and exact terms as to enable one of ordinary skill in the art to make and use the invention . . ..
* * * * * *
As stated previously, the charts of Figures 2A and 2B and the written portion of the specification represent no more than a graphic illustration of two different mapping orders of a hypothetical computer program and can be considered in no manner to represent an algorithm upon which an assembler or compiler program may be based. Appellant further contends that an assembler or compiler program for "scrambling" the sequence of instructions in a program to be debugged would be obvious to one of ordinary skill in the art and cites a portion of the book The Language of Computers, by B.A. Galler, as a basis for this contention. It should be noted that the referenced textual material describes the process of arranging sets of items such as numbers, letters, etc. into some particular order. The desired order may be simply arranging numbers into increasing numerical value. Thus, the scope of the textual material is limited to teaching the sorting or arranging of like items into a desired sequence. Appellant's claimed means for mapping, however, appears to be more than the mere sorting of like items into a desired sequenc[e]. Reference is made in appellant's application to limitations imposed upon the "scrambling" process which results in a procedure of higher complexity than a simple sort procedure. Prior to even considering the reordering of program sequences in the original version of the program to be debugged, the matter of selecting appropriate and workable subdivisions into which the program is broken down must be considered. The considerably higher degree of complexity in practicing the instant invention over that of performing a simple sort routine is pointed out by such limitations as requiring that the two versions of the program be "logically identical" * * * and further that if the subdivisions are not "natural" divisions of the program, then care must be taken to avoid breaks in the range of the "skip" type of instruction, in transfer vectors and in the range of "relative-to-current-address,, types of instructions * * *. Thus, the contention that simple sorting techniques are well known in the art is not convincing in determining the adequacy of disclosure relative to the obviousness of an assembler or compiler program for implementing the "scrambled" mapping of a computer program such as claimed in the instant disclosure.
The board stated that after reviewing the rejection in light of the comments of both appellant and the examiner, it also concluded that the disclosure was not enabling within the meaning of the first paragraph of 35 U.S.C. § 112. However, the board also made the following additional comments which expressed its doubts as to the sufficiency of the disclosure:
Although appellant asserts that there are many different "scrambling" techniques that could be used to practice his invention the only one set forth in the application is that illustrated in Figs. 2A and 2B. Appellant asserts * * * that the scrambled and unscrambled programs are "logically identical." Of course, the location in memory of each individual instruction and segment of data differs in each program so that each instruction that transfers program control or fetches data must have the same logical, relative address if the two programs are to be logically identical. Appellant has not told us nor is it in any way apparent to us how two programs that are "logically identical" could operate differently or could produce different results if the error in the original program were a logical error as in the case of a "wild" transfer * * * or of a "wild" fetch * * *.
Assuming, as appellant contends, that it would be only an elementary programming procedure to prepare a computer program that would convert the original program into the scrambled program, this implies that there is a one to one conversion between the two sets of addresses and the two sets of instructions and data, otherwise they would not be logically identical.
For example, if a programming error were made by requesting a fetch from the next adjacent memory location to the correct one this incorrect or "wild" fetch address would of necessity be translated into the corresponding address of the previously inaccurate data, so that the scrambled program should give the same results as the original program without detecting the logical error.
* * * * * *
Since appellant has not given us an algorithm for the scrambling which could carry out the purpose of detecting logical errors in a computer program and we are not aware of such an algorithm, we find appellant's specification defective in not being in such full and exact terms as to enable a person skilled in the art to make and use appellant's program error detecting system or method.
Appellant then submitted a detailed Request for Reconsideration attempting to demonstrate the incorrectness of the statements made by the board, supra. In so doing, appellant submitted a "specific coded example" demonstrating how a typical error could occur and how it is detected using appellant's invention. This example was also relied upon to rebut comments made by the board which appellant considered to constitute "another ground of rejection based possibly on an alleged failure to exhibit operativeness (utility) in the sense of 35 U.S.C. § 101." On reconsideration, the board denied having made any such rejection and commented that the newly offered evidence would not be considered.
OPINION
In deciding the instant controversy, we are guided by the following principle:
[A] specification disclosure which contains a teaching of the manner and process of making and using [an] invention in terms which correspond in scope to those used in describing and defining the subject matter sought to be patented must be taken as in compliance with the enabling requirement of the first paragraph of § 112 unless there is reason to doubt the objective truth of the statements contained therein which must be relied upon for enabling support. Assuming that sufficient reason for such doubt exists, a rejection for failure to teach how to make and/or use will be proper on that basis; such a rejection can be overcome by suitable proofs indicating that the teaching contained in the specification is truly enabling. In re Marzocchi, 439 F.2d 220, 58 CCPA 1069 (1971).
Upon examining the reasoning set forth by the examiner, we have concluded that there was a reasonable basis for questioning the adequacy of the instant disclosure which does not include sufficient information for implementing appellant's mapping or "scrambling" of a computer program.
We agree with appellant that the board's reasoning, supra, may only be construed as doubting the utility or operativeness of the claimed invention. Although that reasoning could have led to a rejection under 35 U.S.C. § 101, it can also be a basis for a rejection under the how-to-use provision of § 112. In re Fouche, 439 F.2d 1237, 58 CCPA 1086 (1971). However, since the solicitor in his brief has assumed that appellant's invention is both useful and subject to patenting within the meaning of § 101 — a position which we regard as conceding the operativeness of appellant's invention for purposes of this appeal — and since appellant's rebuttal to the board's comments on this issue was not considered by the board, we have not considered the additional comments expressed by the board with regard to any alleged inoperativeness of appellant's invention.
Appellant argues that since claims 1-3 do not recite such a mapping or scrambling means, those claims have an adequate supporting disclosure assuming, arguendo, that such a means is not adequately disclosed. Suffice to say that in analyzing claim 1, which states that "said second sequence being substantially identical to said first sequence except for the ordering of the respective sequences of said instructions," not in a vacuum, but in light of the disclosure, it is clear that claims 1-3 seek a scope of protection for which the scope of enablement must include a sufficient teaching of the means for reordering or mapping the second sequence. In re Moore. 439 F.2d 1232, 58 CCPA 1042 (1971).
The evidence submitted to overcome the examiner's reasoning is found not to be responsive to such criticism. Appellant's reliance upon the book by Galler, supra, may well establish that simple sorting techniques are well known in the programming art. However, as the examiner noted, appellant's invention requires more than just a simple sorting procedure. The disclosure states that in scrambling subdivisions of programs, which are not natural divisions such as subroutines, care must be taken to "avoid breaks in the range of a `skip' type of instruction, in transfer vectors and in the range of `relative-to-current-address' types of instructions." Based upon the meager record before us, we cannot conclude that the simple sorting procedures of the Galler book demonstrate that one of ordinary skill in the art would be able to make and use an algorithm for achieving the apparently more complex "mapping" of appellant's invention.
But for the reference to the Galler book. the record consists solely of the arguments and opinions of appellant's attorney — there are no affidavits in the record before us which set forth any facts whatsoever. Factual affidavits could have certainly been of help as, at least, some evidence on the question of enablement. In re Brandstadter, 484 F.2d 1395 (Cust. Pat.App. 1973).
Appellant has not only failed to offer any evidence to refute the comments made by the examiner with respect to the necessary precautions to be taken when the program is not subdivided into natural subdivisions such as subroutines, but appellant in all of his arguments has ignored those comments and has taken the position that only natural program segments or subroutines are relevant to our inquiry of whether or not the disclosure is enabling. In his brief, appellant stated:
Whether the error detecting method and apparatus will detect errors when special circumstances, e.g., the existence of other than "natural" program segments (subroutines are the most natural segments) is irrevelant [sic]; such special circumstances are not recited in the claims.
The fallacy of such an assertion, and all of appellant's arguments based thereon, is apparent. The claims do embrace scrambling of other than natural program segments, or subroutines, insofar as the claims are not in any manner limited to scrambling only natural program segments. Furthermore, appellant's specification states that the program subdivisions "may be entirely natural divisions . . . or may be entirely arbitrary subdivisions." (Emphasis added).
For the foregoing reasons, the decision of the Patent Office Board of Appeals sustaining the rejection of claims 1-8 under the first paragraph of 35 U.S.C. § 112 is affirmed.
Affirmed.
I believe the majority opinion demands more disclosure by appellant than is required to satisfy 35 U.S.C. § 112.
The majority impliedly concedes that the method and apparatus for scrambling by creating breaks at natural subdivisions are sufficiently disclosed. However, it affirms the board because another method (using arbitrary subdivisions) is not, in its view, sufficiently disclosed.
The question thus raised is whether the scope of enablement provided one of ordinary skill in the art by the disclosure is commensurate with the scope of protection sought by the claims. In re Geerdes, 491 F.2d 1260, (Cust. Pat. App. 1974).
The claims are not restricted to any one method for scrambling; nor is the scope of the specification, which states (emphasis supplied):
The scrambled order shown in FIG. 2B is only one of many possible scrambled orders. Any other order is equally suitable provided only that a substantial degree of actual scrambling is involved. One simple scrambling technique which can be easily implemented automatically in an assembler or compiler is a simple reversal of order of the subdivisions.
Appellant has repeatedly stated that the claims encompass scrambling by creating breaks at natural subdivisions, such as simple reversal, without response from the Patent Office showing wherein his specification is not clearly enabling to a person skilled in the art. Such scrambling is claimed to work, and there is no reason to doubt that it does. Under In re Marzocchi, 439 F.2d 220, 58 CCPA 1069 (1971), such a statement must be accepted as true.
It appears that both the board and the examiner regarded appellant's invention as more complicated and narrow is scope. However, what the board and examiner think regarding the scope of the invention is not the standard set forth in 35 U.S.C. § 112, second paragraph.
That the claims are not restricted in scope to a method of scrambling demonstrates that appellant regards the point of novelty of the present invention to be the scrambling, not the particular method of scrambling. See In re Halleck, 422 F.2d 911, 57 CCPA 954 (1970). All that is required is that the scrambling be done properly. The instructions in the specification on how to use the arbitrary method of subdivision teach one skilled in the art the problems to avoid in choosing arbitrary breaks, bearing in mind that the easy method of subdivision at natural breaks is always available to one of ordinary skill in the art.
Furthermore, it is not the function of the claims to exclude the aforesaid problems or improper method of scrambling. In re Dinh-Nguyen, 492 F.2d 856 (Cust. Pat.App. 1974).
The majority opinion raises the question whether disclosure of the arbitrary method of scrambling has an adverse effect of the specification, which otherwise provides enablement supporting the scope of the claims under 35 U.S.C. § 112. The answer is that, having met the statutory requirements for disclosure, nothing more is required. Thus, it is unnecessary to disclose an example of an alternative embodiment within the scope of the claims. In re Anderson, 471 F.2d 1237 (Cust. Pat.App. 1973). Superfluous portions of a specification which are unnecessary for the requirements of 35 U.S.C. § 112 are legally irrelevant, and, technically, the examiner could require that they be cancelled. Accordingly, whether the arbitrary method of subdivision is sufficiently disclosed is of no effect.
More may, however, be required for purposes of 35 U.S.C. § 103. In re Davies, 475 F.2d 667 (Cust. Pat.App. 1973).
All of this does not deny that problems may be encountered by claims in areas of unpredictable technology. However, the area of technology involved here is not so complex and unpredictable as to justify the majority's departure from our opinion in In re Dinh-Nguyen, supra. While the claims broadly cover all methods (and means) of scrambling, there is no evidence of record that appellant is not entitled to that protection. Moreover, claims are intended for future, as well as present, application.
The protection granted, if appellant's claims are allowed, gives him the right to exclude others from making, using, or selling the invention. 34 U.S.C. § 154. No right is granted which includes the right to use. Thus, a subsequent inventor of a new and unobvious method of scrambling may obtain a patent which, by the terms of its grant, is subservient to appellant's patent. However, the subsequent inventor would have the right to exclude appellant from making, using, or selling the later invention. For that reason, broad protection may be granted here without requiring disclosure of every embodiment within the scope of the claims.
I would reverse.