WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for validating travelling object-oriented programs with digital signatures    
United States Patent5748960   
Link to this pagehttp://www.wikipatents.com/5748960.html
Inventor(s)Fischer; Addison M. (4073 Merchantile Ave., Naples, FL 33942)
AbstractA method of operating computers in accordance with an enhanced object-oriented programming methodology creates a framework for efficiently performing automated business transactions. The object-oriented programming methodology is used in conjunction with a travelling program, i.e., a digital data structure which includes a sequence of instructions and associated data which has the capability of determining at least one next destination or recipient for receiving the travelling program and for transmitting itself, together with all relevant data determined by the program to the next recipient or destination. The data is closely bound to the program in such a way that objects may be most efficiently transferred from one computer user to another without the objects being previously known to the recipient computer user. Object "cells" or "electronic forms" which are data structures stored, for example, on a disk that reflects a collection of (related) objects instances whose execution has been suspended, and which can be resumed later on the same or a different platform are constructed and used. Improved tools are provided for creating and using cells so that electronic forms can be defined using object-oriented techniques while allowing such forms to be easily transferred among a diverse population of computer users. A digital signature methodology is employed to insure security and integrity, so that electronic forms (i.e., cells) composed of a collection of objects can be received and executed by a user without putting the user at risk that some of the object classes embedded in the cell might be subversive programs.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5748960
Method and apparatus for validating travelling object-oriented programs

     with digital signatures - US Patent 5748960 Drawing
Method and apparatus for validating travelling object-oriented programs with digital signatures
Inventor     Fischer; Addison M. (4073 Merchantile Ave., Naples, FL 33942)
Owner/Assignee    
Patent assignment
All assignments
Publication Date     May 5, 1998
Application Number     08/769,118
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 18, 1996
US Classification     719/316
Int'l Classification     G06F 013/00
Examiner     Heckler; Thomas M.
Assistant Examiner    
Attorney/Law Firm     Nixon & Vanderhye P.C.
Address
Parent Case     This is a continuation of application Ser. No. 08/103,778, filed Aug. 10, 1993, now abandoned.
Priority Data    
USPTO Field of Search     395/683 395/684
Patent Tags     validating travelling object-oriented programs digital signatures
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5440744
Jacobson

Aug,1995

[0 after 0 votes]
5412717
Fischer
713/156
May,1995

[0 after 0 votes]
5404525
Endicott
717/108
Apr,1995

[0 after 0 votes]
5390247
Fischer
713/176
Feb,1995

[0 after 0 votes]
5367573
Quimby
713/167
Nov,1994

[0 after 0 votes]
5341478
Travis, Jr.
709/203
Aug,1994

[0 after 0 votes]
5337360
Fischer
713/176
Aug,1994

[0 after 0 votes]
5327559
Priven

Jul,1994

[0 after 0 votes]
5325478
Shelton
715/507
Jun,1994

[0 after 0 votes]
5311591
Fischer
713/156
May,1994

[0 after 0 votes]
5305461
Feigenbaum
712/225
Apr,1994

[0 after 0 votes]
5283898
Kusumoto
707/1
Feb,1994

[0 after 0 votes]
5280610
Travis, Jr.
707/103R
Jan,1994

[0 after 0 votes]
5265206
Shackelford
719/316
Nov,1993

[0 after 0 votes]
5218706
Komori

Jun,1993

[0 after 0 votes]
5095522
Fujita
719/316
Mar,1992

[0 after 0 votes]
5005200
Fischer
380/30
Apr,1991

[0 after 0 votes]
5001752
Fischer
713/178
Mar,1991

[0 after 0 votes]
4868877
Fischer
713/157
Sep,1989

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. In a communications system having a plurality of digital computers coupled to a channel over which computers exchange digital messages, a method for processing information among said computers comprising the steps of:

executing on a first computer a travelling program comprising a sequence of digital program instructions including instructions which determine at least one next destination that receives the sequence of instructions, said sequence of instructions defining a plurality of related object instances which are bound together; and

transmitting to said next destination digital information comprising at least said plurality of object instances together with accompanying digital data associated with said sequence of instructions.

2. A method according to claim 1, wherein said travelling program contains the actual program defining a class associated with at least one of said plurality of object instances.

3. A method according to claim 1, wherein one of said plurality of object instances is designated as the instance which receives control when the travelling program is itself invoked as an object.

4. A method according to claim 1, wherein a program which defines a class of at least one of the constituent object instances, is included as part of the travelling program.

5. A method according to claim 4, wherein the included program is represented in source form.

6. A method according to claim 4, wherein the included program is represented in compiled form.

7. A method according to claim 1, further including the step of including an indication of a program defining a class of at least one of the plurality of object instances.

8. A method according to claim 7, wherein the indication of the program which defines the class of at least one of the constituent object instances, includes a reference to a hash of the program.

9. A method according to claim 8, wherein the hash is taken of a version of the source program.

10. A method according to claim 8, wherein the hash is taken of a compiled version of the program.

11. In a computer system having at least one computer having a main memory, a method of operating said computer system comprising the steps of:

loading a digital data structure in memory relating to a predetermined data type which includes digital data identifying a function which can be applied to said predetermined data type and identifying at least one program which controls how to manipulate digital data of said predetermined data type; and

transmitting at least a portion said digital data structure to a next destination for processing.

12. A method according to claim 11, wherein said computer system includes a disk memory, said loading step includes the step of using a file stored on said disk memory to create a related internal control block data structure in said main memory.

13. A method according to claim 11, wherein said step of loading further includes the step of identifying in said data structure variables which are used by said at least one program.

14. A method according to claim 11, wherein said step of loading further includes the step of storing an indication of a program responsible for handling requests relating to said digital data structure.

15. A method according to claim 11, wherein said step of loading further includes the step of storing indicia identifying programs associated with said digital data structure.

16. A method according to claim 11, wherein said step of loading further includes the step of storing an indication of at least one digital signature associated with said data structure.

17. A method according to claim 11, wherein said at least one program includes a plurality of distinct instance programs.

18. A method according to claim 11, wherein said step of loading includes the step of defining a pool of variables which are shared among a plurality of programs.

19. A method according to claim 11, further including the step of identifying a program instance as a variable in said data to thereby permit an entire program to be manipulated through an instance designator.

20. A method according to claim 11, further including the step of digitally signing at least a portion of the digital data structure to be transmitted.

21. A method according to claim 20, wherein the digitally signed data contains at least a hash of at least one digital program.

22. A method according to claim 11, wherein the identifying of at least one program includes a plurality of program references, such that at least one program reference is associated with an indication of a hash of the associated program.

23. A method according to claim 22, wherein said hash is a hash of a compiled version of the associated program.

24. A method according to claim 22, wherein said hash is a hash of the source program of said associated program.

25. A method according to claim 11, wherein said step of loading includes the step of defining at least one program related data structure.

26. A method according to claim 25, wherein said program related data structure includes a pointer identifying the next program to be invoked by the program identified in the program related data structure.

27. A method according to claim 25, wherein said program related data structure includes a program structure data block whose fields are constant regardless of the hardware platform executing the program.

28. A method according to claim 27, wherein said program structure data block includes the p-code instructions of the identified program.

29. A method according to claim 11, further including the steps of constructing at least one additional program characteristic identifying digital data structure relating to said at least one program.

30. A method according to claim 29, wherein said step of constructing a program characteristic identifying digital data structure includes the step of identifying the parent program from which said at least one program is extended.

31. A method according to claim 29, wherein said step of constructing a program characteristic identifying data structure further includes the step of storing indicia identifying authorization information defining operations which the identified program is authorized to perform.

32. A method according to claim 29, wherein said step of constructing a program characteristic identifying data structure includes the step of identifying the functions which may be performed by said at least one program.

33. A method according to claim 32, wherein the step of identifying the functions includes the step of identifying the starting address of the program code which implements an identified function.

34. In a communications system having at least one computer and a memory, a method of operating said computer comprising the steps of:

loading a digital cell in said memory comprising a digital data structure that identifies a class definition and a collection of related object instances which are bound together by said class definition, and

transmitting by said at least one computer at least a portion of said digital cell and class definition identifying data structure to a next destination.

35. A method according to claim 34, wherein said class definition identifying data structure includes a class definition defining program.

36. A method according to claim 34, wherein said digital cell is part of a digital data structure which includes instructions for transmitting itself to said next destination.

37. A method according to claim 34, wherein said transmitting step includes the step of transmitting a portion of said digital cell to another user via electronic mail.

38. A method according to claim 34, further including the step of permitting said digital cell to be invoked and processed as an object by at least one other digital cell.

39. A method according to claim 34, including the step of invoking said digital cell and processing it as an object by at least one other digital cell.

40. A method according to claim 34, further including the step of dynamically determining the class for objects which are processed.

41. A method according to claim 34, further including the step of storing the program logic defining object classes as part of a stored cell.

42. A method according to claim 34, wherein said digital cell includes a collection of object instances whose execution can be suspended and stored as a file.

43. A method according to claim 34, wherein said step of loading includes the step of storing said digital cell in a file in a mass storage device; and further including the step of using the stored digital cell to create at least one internal control block used during program execution by an operating system program.

44. A method according to claim 34, wherein the identification of a class definition identifies multiple distinct class definition programs.

45. A method according to claim 34, wherein the identification of a class definition is accomplished by the step of referencing constituent class definition programs by hash value.

46. A method according to claim 34, further including the step of validating at least one class definition with a digital signature.

47. A method according to claim 34, wherein said digital cell is a travelling object oriented program, and further including the step of performing validating digital signatures.

48. A method according to claim 34, wherein said digital cell is a travelling object oriented program, further including the step of constructing electronic data interchange data structures.

49. A method according to claim 34, further including the step of digitally signing at least a portion of said digital cell.

50. A method according to claim 49, wherein the step of digitally signing includes the step of digitally signing at least one class definition program.

51. A method according to claim 34, further including the step of dynamically determining associated methods for objects which are processed.

52. A method according to claim 44, wherein said associated methods are determined by string values.

53. A method according to claim 34, wherein said related object instances store indicia for locating an associated class definition program.

54. A method according to claim 53, wherein a related object instance is bound to the class definition program as it existed at the time the object instance was created.

55. A method according to claim 53, wherein a related object instance is associated with specific versions of the class definition program.

56. A method according to claim 34, wherein said digital cell stores authorization information defining operations which an associated class is authorized to perform.

57. A method according to claim 56, including the step of digitally signing the portion of said digital cell associated with defining operations which an associated class is authorized to perform.

58. A method according to claim 56, wherein the class is determined by string values.

59. In a communications system having at least one computer and a memory, a method of operating said computer comprising the steps of:

loading a digital cell in said memory comprising a digital data structure that identifies at least one class definition and a collection of related programs which are bound by said class definition, said digital data structure including instructions for transmitting at least a portion of itself to a next destination; and

transmitting at least a portion of said digital cell including class definition identifying data structure to a next destination.

60. A method according to claim 59, wherein the related programs are identified by their hash values.

61. A method according to claim 59, wherein the related programs are object oriented programs and further including the step of saving a portion of an object oriented program so it can be executed at a later time.

62. A method according to claim 59, further including the steps of:

accessing said digital cell;

saving said digital cell in said memory; and

inserting at least one program definition after the cell has been saved.

63. A method according to claim 59, further including the step of digitally signing at least one of said related programs so that it can perform sensitive functions.

64. A method according to claim 63, wherein said step of digital signing includes the step of signing the hash of one of said related programs.

65. A method according to claim 59, further including the step of modifying one of said related programs.

66. A method according to claim 65, further including the step of checking to determine if the program modification is compatible with the data of existing instances of the program to be modified.

67. A method according to claim 65, further including the step of storing a revision level indication of said class definition and determining whether the modification is compatible with the revision level.

68. In a communications system wherein a plurality of users of one or more digital computers exchange digital messages on behalf of said users, a method for processing information among said computers comprising the steps of:

associating with a traveling program cell a plurality of object instances, at least one of said object instances having data contained in the cell, said traveling program cell comprising a sequence of digital program instructions including instructions which determine at least one next destination that receives the sequence of instructions;

associating with each object instance a plurality of program instructions;

computing a cryptographically secure hash value which depends, at least in part, on at least one of said program instructions;

executing on a first computer a sequence of the instructions associated with at least one object instance in said traveling program cell, wherein at least one of the executed instructions modifies digital data associated with an object instance; and

wherein at least one of the instructions determines at least one next destination second computer user to receive the modified traveling program cell after it is transmitted from the first computer user; and

transmitting the modified traveling program cell to said next destination second computer user including said digital information comprising at least said plurality of object instances, together with accompanying digital data with indicia of said program instructions associated with each object instance, and wherein at least one data item in at least one of the object instances has been modified by execution in the first computer of the associated program instructions.

69. A method according to claim 68, wherein said traveling program cell contains at least some of said instructions associated with at least one of said plurality of object instances.

70. A method according to claim 68, wherein one of said plurality of object instances is designated as the instance which receives control when the traveling program is itself invoked as an object.

71. A method according to claim 68, wherein the said traveling program cell contains the said computed hash.

72. A method according to claim 68, wherein said hash value is digitally signed.

73. A method according to claim 68 wherein at least one of the said program instructions is represented in source form.

74. A method according to claim 68, wherein at least one of the said program instructions is represented in compiled form.

75. A method according to claim 68, wherein at least one of the said program instructions is represented in p-code form.

76. A method according to claim 68, wherein multiple hash values are computed wherein the at least one hash is based on instructions in source form, and at least one hash is based on the source hash is based on instructions in compiled form.

77. A method according to claim 68, wherein multiple hash values are computed wherein the hash values are based on the same source instructions compiled for different computer architectures.

78. A method according to claim 68, wherein said transmitting step includes the step of transmitting a portion of said digital cell via electronic mail.

79. In a communications system, wherein a plurality of users of one or more digital computers exchange digital messages on behalf of said users, a method for processing information among said computers comprising the steps of:

associating with a traveling program cell, a plurality of object instances, at least one of said object instances having data contained in the cell, said traveling program cell comprising a sequence of digital program instructions including instructions which determine at least one next destination that receives the sequence of instructions;

associating with each object instance a plurality of program instructions;

computing at least one digital signature;

executing on a first computer a sequence of the program instructions associated with at least one object instance in said traveling program cell,

wherein at least one of the executed instructions modifies digital data associated with an object instance; and

wherein at least one of the executed instructions determines at least one next destination second computer user to receive the modified traveling program cell after it is transmitted from the first computer user; and

transmitting the modified traveling program cell to said next destination second computer user including said digital information comprising at least said plurality of object instances, together with accompanying digital data with indicia of said program instructions associated with each object instance, and wherein at least one data item in at least one of the object instances has been modified by execution in the first computer of the associated program instructions.

80. A method according to claim 79, wherein the value of the digital signature depends, at least on part, on at least one of said program instructions.

81. A method according to claim 79, wherein the digital signature is transmitted as part of the cell.

82. A method according to claim 79, wherein the digital signature is stored in a memory device associated with the second user's computer system.

83. A method according to claim 79, wherein the digital signature depends on a source code version of the indicated instructions.

84. A method according to claim 79, wherein the digital signature depends on a compiled version of the indicated instructions.

85. A method according to claim 79, wherein the digital signature depends on a p-code version of the indicated instructions.

86. A method according to claim 79, wherein there is at least one instruction associated with an object instance which is not executed until after the digital signature for its program is verified.

87. A method according to claim 79, wherein the digital signature is verified by at least one computer as being performed by a trusted entity.

88. A method according to claim 79, wherein the digital signature is verified by at least one user as being performed by a trusted entity.

89. A method according to claim 79, wherein there is at least one digital signature having a value which depends on authorization information that defines operations which the associated instructions are authorized to perform.

90. A method according to claim 79, wherein said transmitting step includes the step of transmitting a portion of said digital cell via electronic mail.

91. In a communications system, wherein a plurality of users of one or more digital computers exchange digital messages on behalf of said users, a method for processing information among said computers comprising the steps of:

associating with a traveling program cell, a plurality of object instances, at least one of said object instances having data contained in the cell, said traveling program cell comprising a sequence of digital program instructions including instructions which determine at least one next destination that receives the sequence of instructions;

associating with each object instance a plurality of program instructions;

executing on a first computer a sequence of the instructions associated with at least one object instance in said traveling program cell

wherein at least one of the instructions determines at least one next destination second computer user to receive the modified traveling program cell after it is transmitted from the first computer user;

transmitting the modified traveling program cell to said next destination second computer user including said digital information comprising at least said plurality of object instances, together with accompanying digital data with indicia of said program instructions associated with each object instance, and wherein at least one data item in at least one of the object instances has been modified by execution in the first computer of the associated program instructions; and

executing on a least one computer at least one of the instructions associated with at least one object instance in said traveling program cell which causes a digital signature to be performed which depends, at least in part, on the value of data that is associated with an object instance.

92. A method according to claim 91, wherein said performed digital signature is transmitted with the cell.

93. A method according to claim 91, wherein said performed digital signature is verified by at least one computer.

94. A method according to claim 91, wherein said performed digital signature is verified by at least one computer user.

95. A method according to claim 91, wherein said transmitting step includes the step of transmitting a portion of said digital cell via electronic mail.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

The invention generally relates to apparatus and a method for operating digital computers under the control of object-oriented programs. More particularly, the invention relates to a method and apparatus for validating unique travelling object-oriented programs using digital signature methodology.

RELATED APPLICATIONS

This application is related to allowed application Ser. No. 07/863,552 filed on Apr. 6, 1992, entitled, "Method and Apparatus for Creating, Processing and Using Travelling Programs" (hereinafter "Travelling Program Application") and to application Ser. No. 07/883,868, now U.S. Pat. No. 5,412,717, entitled "Computer System Method and Apparatus Using Program Authorization Information (hereinafter "Program Authorization Information Application").

BACKGROUND AND SUMMARY OF THE INVENTION

The present invention is directed to apparatus and method for operating a digital computer in accordance with a powerfully enhanced object-oriented programming methodology.

In object-oriented programming using existing object-oriented languages, such as, "C," and "Small Talk," programmers are able to define object "data types" (or "classes") which are data structures each associated with a program that knows how to process that data type. Object-oriented programming permits existing programs to be reused and extended without having to modify the program. This feature of object oriented programming is known as the "inheritance feature" and is the ability to define new data type classes derived as "extensions" of other (more fundamental) data classes.

The extension class only needs to define those functions (known as the object's "methods") for the new data type which differ from the existing ("base") class. Such methods may be entirely new or may supersede (by replacing or augmenting) methods defined for the base class. This simplifies the creation of novel variations of existing data classes, either by adding new functions or by superseding (modifying) existing functions.

Some object-oriented methodologies allow "multiple inheritance" whereby there can be more than one "base" class from which a given class inherits characteristics. The present invention contemplates the possible use of multiple inheritance. The lineage of a given class is the aggregate set of its base class(es) together with the base class' lineage.

Using more conventional "procedural" programming methodologies, different data types are processed in different manners based upon processing rule defined for the data type. Object-oriented programming provides a different processing methodology. Each individual occurrence of a programmer-defined object data type or class is known as an "instance" of that class. Once a class is defined, then its data type can be used over and over again in different programs with no extra programming effort.

The class program definition for each data type defines the functions that can be applied to instances of that data type. Programs use objects by invoking one of the objects methods (i.e., the functions that can be applied to instances of that data type) in conjunction with a particular instance of that object. The method then processes that particular instance of data.

Thus, one of the strengths of object-oriented programming methodology is that the same method name can be implemented differently in different data type classes. An application program can perform a generic" operation on data without having to be concerned about exactly how it is implemented. This facilitates the addition of new varieties (classes) of data types with minimal changes, if any, to application programs using these types.

The logic to perform these "methods" is built into each data class once. In this fashion, the way in which programs use such data types is simplified by allowing different data types to each implement a particular function in a way appropriate to that data type.

Object-oriented programming thus provides a different methodology for compartmentalizing programs which is highly useful in many different complex application areas. In object-oriented programming, data is not typically treated as an isolated bitstream, but rather, it is bound to a program which manages the data.

This feature of object-oriented methodologies--the ability to have a particular function operate differently on a variety of data types--is known as "polymorphism."

Polymorphism permits a program to operate on data without being concerned with what that data represents. The polymorphic feature of object-oriented methodology permits a particular operation to be implemented in different ways depending upon the data type so that the function will be performed appropriate to that data type. An example of polymorphism may, for example, involve a "multiply" operation. For real scalar data types, two scalars are arithmetically multiplied together. But for matrix data types, the "multiply" method could be implemented to yield the more involved "matrix" multiplication. By treating these as objects, program designers can use multiplication without worrying about whether the particular operands were real numbers or matrices. Then, at some future time, for example, a new "complex" number data type with yet a different multiply mechanism could be introduced into existing programs with no further programming effort.

Another example of object-oriented methodology may involve objects associated with a graphical display. Most of such objects would have a "quick" click method that would be invoked whenever the mouse pointer lies atop the object's associated graphical image and the user clicks the mouse switch.

Consider graphical display of a group of buttons. Each "button" graphic may be represented and controlled by a separate instance of the "button" class. Other types of graphical items, such as data fields, will be controlled with instances of their own respective classes. It would be possible to treat an "icon" as a special class of "button" but one which has additional or modified characteristics.

In developing the "icon" class as an extension of "button," all of the method routines for "button" would be effective for the "icon" class, except those which are specifically supplied for the distinct "icon" class definition. Whenever the user clicks the mouse switch, the system determines the items over which the mouse appears to be positioned and invokes the "click" method for the object instance associated with that graphical item.

Different functions such as "scroll contents up," "delete this object," "print contents," or "handle mouse-button-click request" may be interpreted differently depending upon the particular graphical object involved. Allowable functions are defined when the data is defined, not each time the data is used.

The present invention is directed to significantly enhanced object-oriented programming methodologies which create a framework for efficiently performing automated business transactions. The object-oriented programming methodology of the present invention is particularly useful in the context of the applicant's "travelling program methodology" described in the above-identified Travelling Program patent application, which has been expressly incorporated in its entirety by reference herein.

A travelling program is a digital data structure which includes a sequence of inst